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

Support binding Logical Channels to Geometries instead of setting Geometry on DMX Channel level #245

Open
ralfr opened this issue Nov 26, 2024 · 9 comments

Comments

@ralfr
Copy link

ralfr commented Nov 26, 2024

Background: For the sake of this discussion I'm focusing on my setup of a grandma3 console and Martin Mac One fixtures. The Mac One has a single effects channel (22) which triggers effects across its two geometries, Beam and Backlight. Values 0 to n trigger Beam effects. Values n+1 to 255 trigger Backlight effects. Martin has defined a ton of Logical Functions along with corresponding Channel Sets. Martin has bound DMX Channel 22 to the Base geometry.

This has a serious of consequences:

  • grandma3 created two sub fixtures Beam and Backlights.
  • The complete range of effects (beam and backlight effects combined) is available when selecting the main fixture.
  • When selecting just one of the sub fixtures instances, e.g. Beam, the Backlight effects are still offered, though they obviously do not make sense on the Beam sub fixture instance.
  • When selecting just one of the sub fixtures instances, Channel Sets stop working completely, even those, that would apply to the selected sub fixture instance. (Not sure whether this is a grandma3 bug or what's the reason for this, though.)

It would be awesome, to allow binding of Logical Channels to Geometries, instead of exclusively allowing to set it on a per DMX Channel level?

If this would be supported, I could ideally:

  • Create a single DMX Channel 22, along with all Channel Sets relevant only to the entire fixture and bind it to the Base geometry.
  • Add a Logical Channel for All-things-Beam along with all Beam related Channel Sets and bind it to the Beam geometry.
  • Add a Logical Channel for All-things-Backlight along with all Backlight related Channel Sets and bind it to the Backlight geometry.

It would essentially allow to split Channel Sets across Geometries, even if they all set values for the same DMX Channel. I think, this would greatly enhance the usability and clean up some of the clutter, that we find all too often when using more complex fixtures.

@petrvanekrobe
Copy link
Contributor

Linking it to the #127 PR.

@ralfr
Copy link
Author

ralfr commented Nov 26, 2024

Linking it to the #127 PR.

Thanks! Not sure, though, how the linked PR would resolve my request of allowing to split Channel Sets across Geometries. Maybe you can elaborate a bit.

@petrvanekrobe
Copy link
Contributor

Is the issue related to controlling or visualization?

@ralfr
Copy link
Author

ralfr commented Nov 26, 2024

Is the issue related to controlling or visualization?

It's related to controlling. In a nutshell:

  • A lot of more complex fixtures use a single DMX Channel for functions which actually are carried out by multiple different Geometries. A good example is the Mac One mentioned in my original post. It has Effects on the single DMX Channel 22 which are actually executed by two Geometries, the Beam (instance 1) and the Backlight (instance 2).
  • Consequently, the Channel Sets defined for DMX Channel 22 would ideally have to be split to the sub geometries, in order for consoles to only present options which make sense for any selected geometry. For example, on grandma3, if I select the Beam instance, I still see all of the Channel Sets for the Backlight (none of those are working on the Beam though, for obvious reasons).

A solution would be to allow to optionally define a geometry for each Logical Channel. Set the geometry on the DMX Channel level to "none" and force setting a geometry for each Logical Channel. This would allow to effectively split a given Channel Set for a single DMX Channel into logical units per geometry.

I think this would be a small change with a potentially huge impact for usability! This issue is not at all about visualization. :)

@petrvanekrobe
Copy link
Contributor

So you mean a single channel with two (or more) individual functions, one for geometry A and one for geometry B, which can be executed independently, correct?

@ralfr
Copy link
Author

ralfr commented Nov 26, 2024

So you mean a single channel with two (or more) individual functions, one for geometry A and one for geometry B, which can be executed independently, correct?

Exactly. In my experience, the majority of complex fixtures in an effort to reduce their DMX footprint put features applying to different parts of the fixture into a single DMX Channel. The current GDTF Spec enforces a one-to-one relation between DMX Channel > Logical Functions > Channel Sets and does not allow duplication of DMX Channels. Hence Logical Functions / Channel Sets are always bound to the single geometry set on DMX Channel level.

Eliminating this limitation would greatly enhance console vendors ability to create way more usable default control layouts.

@AndriiVoitenko
Copy link

Hi @ralfr,
thank you for your ticket.
Correct me if I am wrong, in your example you are calling a channel set “Beam Fire” from DMX Channel with offset 20 from DMX Mode Ludicrous. Right? And it is about logical channel with attribute Effects1 and Channel function Effects1ColorBeam, right?

So, in this case console will send a DMX value 20 to the DMX channel with offset 22 and physical device, I mean MAC One will recognize it as a special effect “Beam Fire” and execute “some magic”, which you will then see on the stage. So, you are not expecting that by calling a channel set console bring values on dimmer DMX channels which will be then most probably ignored by Mac One, which will executing Effect, right? @petrvanekrobe it is not about control, it is about visualization of effect or our old known visual macros.

And back to your question @ralfr, you are calling channel set ”Beam Fire” which is defined for channel function with attribute Effects1ColorBeam from logical channel with attribute “Effects1” and logically it should bring fire to the beams, but technically it has nothing to do with a Dimmer attributes of sub geometries. Therefore channel set “Beam Fire” does not have any meaning for subfixtures 1 and 2 of your fixture and you fixture sheet will show you, that attribute Effects 1 exist only in main fixture 1, as it is defined in GDTF for geometry Base.

@ralfr
Copy link
Author

ralfr commented Nov 27, 2024

I've added a video to explain in more detail: https://www.youtube.com/watch?v=ag6kSTLBnIU

@AndriiVoitenko
Copy link

Hi @ralfr ,

thank you for your video.

Here we are in the GDTF, so lets us step back from MA fixtures and subfixtures. You already know that MA merge geometries and populate values from parent to children and vice versa.

So let us come back to geometries and DMX channels. So you select a geometry Beam and attribute Effect:
image

from GDTF point of view, this attribute is not defined for geometry Beam, right?
image

And your suggestion is adding link from logical channel (in this case Effect 1) to geometry, but you have 2 Geometries: beam and backlight. So most probably you want to add link into the channel function and not to the logical channel, right? OK, then we have for example channel function "Beam Intensity FX" which is linked to the geometry beam.
image

So as far as you select beam geometry, console need to find all channel functions which are linked to this geometry (means potentially can influence on this geometry) and if attribute matched with selected one, only then then you want to see a channel set. Correct?

Then I have some questions:

  1. Channel function Beam Intensity FX has aEffects1IntensityBeam as attribute and you are selecting attribute Effect1
    image

  2. When you select geometry Base, which actually has a DMX channel 22 with logical channel Effect 1, console will apply the same logic, means looking for the channel function which is linked to geometry, but channel function Beam Intensity FX is linked to Beam geometry and not to the Base, which you have selected, right?.
    image

  3. What to do with channel functions which influence several geometries? For example like "Zoom FX"?
    image

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

3 participants