Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Artnet customize fixtures #1667

Open
lgoette opened this issue Dec 7, 2023 · 5 comments
Open

Artnet customize fixtures #1667

lgoette opened this issue Dec 7, 2023 · 5 comments

Comments

@lgoette
Copy link

lgoette commented Dec 7, 2023

Feature request

It would be great if the channel configuration of my dmx-led-fixtures would be customizable in the Ui.
Currently the only setting I can set is the channelcount per fixture but I cant control wich channel is R, wich is G, wich is B, wich is Dimmer etc.
It also does not support the case when someone got fixtures with diffrent channel amounts.

What problem does this feature solve?

I got two fixtures with the following configuration: RGBD (D is Dimmer/Overall Brightness). Unfortunatly my Leds stay black (they receive a Signal though). I dont know what data is sent by Hyperion but I assume the dimmer on the fourth channel stays on 0. Probably someone can follow up here.

What does the proposed API look like?

How should this be implemented in your opinion?

There should be an option in the UI where I can select the Channel Layout RGBW, RGBD (if the channelcount is set to 3) or RGB (if the channelcount is set to 3)
When in expert mode there should be a editable configuration where I can set custom channel configs for every fixture.

Are you willing to work on this yourself?

I am willing to help, but I need some assistance because I am not that deep in the project. Am I right that @penfold42 authored the Artnet stuff?

It would be great if we could implement this, because I am currently using Prismatik with my own Artnet Plugin and I want to switch to the more feature rich Hyperion :)

@Lord-Grey
Copy link
Collaborator

I had a look at the artnet code and it seems some of your requirements are already supported; others we might best have clarified fist to be on the same page

I cant control which channel is R, which is G, which is B,

You can already set the Color Order at the device config page or make use of the Color Order device wizard.
There you can define, e.g. if your channel order is RGB, BGR, GBR, etc.

When in expert mode there should be a editable configuration where I can set custom channel configs for every fixture.

This is also already available. The first three channels are for color, the rest will be Null. i.e. Off.
Question would be, what should be a reasonable default than Null for the other channels (if not Null).

There should be an option in the UI where I can select the Channel Layout RGBW, RGBD

This would be an enhancement.

The serial DMX device code already support 4 channels , but the 4th channel is always high (255).
For other devices, we provide different algorithms to calculate the white channel from the RGB input.
That would be what I suggest here too.

What I am not clear is about the Dimmer requirement (RGBD).
Should it behave as outlined for RGBW above or is Dimmer something else?
I do not have much backgriund on DMX and ArtNet....
Would be good, if you could clarify the nneed.

@lgoette
Copy link
Author

lgoette commented Dec 9, 2023

Ok. Thanks for the advice. I will have another look at it. I expected the RGB order in the dialogue for the other Artnet Settings. The 4 Channel on always high sounds like a good solution for fixtures that have the Dimmer channel on that one. Do I understand correctly that this is the Case for Serial Dmx Devices but not for Artnet?
I will get back to you with a detailed response when I checked it all out. :)

@lgoette
Copy link
Author

lgoette commented Dec 9, 2023

You can already set the Color Order at the device config page or make use of the Color Order device wizard.
There you can define, e.g. if your channel order is RGB, BGR, GBR, etc.

I am sorry for my blindness. In fact this is possible in Expertmode.

This is also already available. The first three channels are for color, the rest will be Null. i.e. Off.
Question would be, what should be a reasonable default than Null for the other channels (if not Null).

I could not find where I can edit the config. Can you describe it to me?
A reasonable default depends on the dmx fixture the user is using. In my current Case, I got a 4 Channel fixture with RGBD (D is the Masterdimmer). The corresponding default would be 4 on 255 (The Masterdimmer overwrites the brightness from the RGB Channels)
But there are different Fixtures with different channel configs. Another Example would be a RGBWAD - 6 Channel Fixture (Red, Green, Blue, White, Amber, Masterdimmer) in this case the W (ch. 4) and A (ch. 5) channels should be 0/Null and the dimmer channel (ch. 6) should be 255.
As you can see this is highly specific for every user, but I would expect that users who are using such devices are familiar with how they work, so an option to specify what channel has what function in expert-mode would be great.

The serial DMX device code already support 4 channels , but the 4th channel is always high (255).
For other devices, we provide different algorithms to calculate the white channel from the RGB input.
That would be what I suggest here too.

It seems like this Device Type expects fixtures with the RGBD channel configuration as default. But also here a user can run into problems with devices that use a different channel configuration.

A start could be the ability to set one fixture type for the whole artnet config but for when a user uses different fixtures in his setup, a "per fixture" channel configuration could be useful too.

I hope this brings some light in the dark and it helps you roughly understand how artnet and dmx is working. If this raises more questions feel free to ask :)

@Lord-Grey
Copy link
Collaborator

Lord-Grey commented Dec 10, 2023

Hi

let me try to outline some potential configuration of fixture (device) configurations.
I would like to understand which scenarios would be relevant in practice.
i.e. not boiling the ocean as some would get quite complex, but focus on what makes many users happy :)

Scenarios
Note: RGB below could be all combinations like GBR, BRG, etc.

  1. Three Channels RGB
    RGB
  2. Three Channels RGB multiple times
    RGB RGB RGB RGB
  3. Four Channels RGBW (W - Calculated from RGB)
    RGBW
  4. Four Channels RGBW multiple times (W - Calculated from RGB)
    RGBW RGBW RGBW RGBW
  5. Three Channels RGB + one Dimmer (fixed value)
    a) RGB D
    b) D RGB
  6. Three Channels RGB + additional Channels with a fixed value (just using H-High or Low L - for illustration for a range 0..255)
    a) RGB H L L H L ..
    b) L H L RGB H L L ...
  7. Scenarios 5. and 6. with RGBW
  8. Repeatable channel blocks
    a) RGB D L H, RGB D L H, RGB D L H, RGB D L H
    b) RGBW D L H, RGBW D L H, RGBW D L H, RGBW D L H

I hope there are no scenarios like:
9.
a) RGB RGB RGB RGB H L L H L ..
b) H L D RGB RGB RGB RGB H L
c) H L D RGB RGB RGB RGB

In addition, how do multiple universe fit in here?
Is one universe one device, so for ArtNet, we might have to configure:

Universe1 = Hyperion LED1
RGB
Universe2 = LED2
RGBW
Universe3 = LED3
D RGB L L H

@lgoette
Copy link
Author

lgoette commented Dec 12, 2023

Hey,
first of all thanks for your participation :)
I try to explain some of the keywords first so we are all on the same page.
A fixture is one device that uses a specific amount of channels for example a single "Led Par64 Light" with the RGBD channel configuration. This device claims 4 dmx channels.
In the dmx protocol, there are 512 channels that can be addressed. In our 4-channel fixture example a user could use 128 (512/4) devices of this type.
Artnet addresses this cap with a solution called universe. With Artnet it is possible to use more than 512 channels by setting a different universe for devices that are added when there are already 512 channels in use. So a single universe contains 512 channels.
I think in our hyperion usecase the 512 channels are enough and if a user needs more channels he could simply add another artnet-instance, set to a different universe.

So currently a hyperion user sets a universe and sets a channel count and a "Hardware LED count".
Example: When the channel count is set to 3 and the "Hardware LED count" to 4 (I think that is the fixture count) this would lead to the dmx-universe config:
R G B R G B R G B R G B (using channels 0-11).
If the channel count would be 5 instead, hyperion sets the fourth and fifth channel to always low:
R G B L L R G B L L R G B L L R G B L L (using channels 0-19).
(At least, I think. Is that the behavior you described before?)

Now I will address your scenarios:

  • 1, 3 and 5 are definitely a thing (also 7 in case of scenario 5 with the RGBW variant)
  • 6 is a thing and to address the L/H stuff, most of the unused channels will probably set to L(always low) (examples are Amber/UV/Strobe and other settings) The only case a channel is set to H (always high) is the D(Masterdimmer) Channel. That means we could implement just the R,G,B,W,H,L channel types and add some Documentation that a Masterdimmer channel should be set to H. That way we keep the possible combinations at a minimum.
  • 2, 4, 8, 9 are also a thing. The repeatable channel block setup in scenario 3 & 8 can be realized by simply defining them as fixtures with the block size as fixture count. Unfortunately there are for example dmx controlled led light bars with channel configs like "D RGB RGB RGB RGB ..." or "RGB RGB RGB RGB D ...".

The Led light bars are also a good example for another case to be addressed: A fixture can cover multiple hyperion hardware LEDs. For example a fixture with RGBD covers a single LED but A light bar with "RGB RGB RGB RGB D" covers 4 LEDs. A dirty but possible solution would be configuring this light bar as 4 fixtures (3x RGB and 1x RGBD). That way we keep the 1 hardware LED = 1 fixture policy.

I would do something like configuring a single fixture type with an amount in the "default" configuration level. In that case a user gets to set "universe", "channel count", "fixture count"/"hardware LED count" and "channel configuration".
On this level the channel configuration option could be a drop down menu or a text field that allows "R,G,B,W,H,L" with a regex test that requires only these chars and the char-count matching the "channel count" int.
On expert configuration level the user gets the ability to edit a config file with a format like:

[
   {
      "start_channel": 0,
      "channel_count": 4,
      "channel_config": "RGBH"
   },
   {
      "start_channel": 4,
      "channel_count": 6,
      "channel_config": "RGBWLH"
   },
   {
      "start_channel": 10,
      "channel_count": 4,
      "channel_config": "RGBH"
   }
]

This example would match a Setup with 3 fixtures:
Fixture 1: 4-Channel RGBD (red,green,blue,dimmer) device
Fixture 2: 6-Channel RGBWAD (red,green,blue,white,amber,dimmer) device
Fixture 3: 4-Channel RGBD (red,green,blue,dimmer) device

This way users can combine different fixture types in their setup.

I hope, I explained everything in enough detail. Tell me if anything is unclear :)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants