Fixture groups and selections

Archive of the non-categorized posts related to the QLC+ technical support.
Please do not create new threads here, instead, use the categories above !
Post Reply
Boudewijn

I have recently worked with QLC+ for a party where all the lighting was "freestyled" on what the DJ(s) choose to "play". One feature I was really missing in QLC+ was the ability to select fixtures or a preset group of fixtures and have these perform a certain action.

I have worked around this issue somewhat by duplicating controls and having a "master" and "submaster" controls for the different groups. However this means a lot of controls and programming and a lot of clutter in the virtual console and it's simply not intuitive.

So anyway I thought: "Hey, I know how to code and I could use some GitHub activity on my résumé, so let's do this." Disclaimer: C++ isn't my best language and it's possible I decide to postpone this project in favour of other activities.

I have done some code scanning and I think this should be possible. Just to make sure I get off on the right foot, I would like some feedback as to how I would write this functionality.

I'm thinking of adding an extra tab to the fixtures screen, where you can configure your fixture groups. While on the topic of fixture groups: how would I call my fixture group class, FixtureGroup is already taken (FixtureCollection?).

In the virtual console you have a new widget: the group frame. The group frame can be configured to have any subset (note: not [proper subset](http://en.wikipedia.org/wiki/Subset#Definitions)) of a fixture group in the selection tray. All the controls in the group frame are automatically configured to operate on the selected group. I'm still wondering how this would work: I could exclude all the fixtures which aren't selected from being affected by the controls or I could limit the controls to only operate on the selected fixtures. The difference being the exclusion of fixture which aren't in the group.

I'm still considering ways to actually implement this in the controls: one way would be to provide a mask to controls which excludes fixtures from the function or levels. Though I'm open to suggestions for less invasive ways to do this.

One extra feature which I think would be rather simple would be the addition of ctrl and shift modifiers to the selection, allowing multiple selections. This would require the rest of the code to be working so I'm not making this a priority.

In the functions screen I'm thinking of adding another selection thingy to include the fixture groups, though this wouldn't be a requirement for the rest of the functionality.

So let me know what you think and if this is actually feasable.
Jano Svitok

Hello,

I feel your pain :) I was thinking about this some time ago... I was leaning towards a bit different solution though.

You may want to read https://sourceforge.net/p/qlcplus/discu ... /7dece6fd/ since it's (maybe just slightly) related.

My idea for both problems was to create scenes that may be bound to a fixture type
instead of individual fixture, so that they could be bound later - we could call them palletes.

Then scenes could be created from these palletes somehow - that would solve Pauls problem.

Finally, if we allowed to create "temporary" scenes - you select fixtures, assign them palletes, start the scene, and when the scene is stopped, it would be deleted by the system/never properly stored - it would solve your problem.


That's the rough idea. I don't have any ideas for user interface for it. It's possible that LTP problem will appear with temporary scenes.

I will try to help you if you start doing something, but I'm pretty tight on time now, so I don't promise anything. Especially when you'll be finding your way through the code, don't hesitate to ask.


Final note: I suppose that you can reuse fixture groups as they are now, you don't need to create another class. Am I wrong?
Boudewijn

Since we're mostly discussing UI, I will go back to basics. I like to describe processes in first-person plural, so here it is.

We want a way to select a configurable group of fixtures and be able to specify a fixture specific head position, color or gobo. The selection should only take a single click and be persistent (not lost after specifying what to do with the selection). Specifying the position, color or gobo should take no more than 2 clicks: either directly through a single click or through opening a menu (eg. ClickAndGo) and then clicking the desired option.

This does raise some issues:

* How "global" should the group be? (Possibility of multiple groups for specific controls)
* Should the groups be limited to a single type of fixture?

Would anyone know how difficult it would be to get a color palette to work on different fixture types? I will dive in the code for this, but an indication is always helpful.

I have done some thinking about your (and Paul's) palette ideas and I'm not completely sure about which solution I would find best, so here is a braindump. I hope to pick this up tomorrow.


Possibility one
----
Have a palette function wrap around another function and mask its functionality to provide a selection.

Pros:

* Allows for other functions to be selection-based, not sure how useful this would be, but I shouldn't underestimate the creativity of people who work with light.

Cons:

* This wouldn't be a pure palette; the palette wouldn't be able to be "color-aware". Thus going against Paul's proposal.
* The levels and submaster mode of sliders would drop out.

Possibility two
----
Have a palette function be a "something" (or a collection of "somethings"). This would be sticking with Paul's original idea of having a concept of eg. color and applying it to a selection.

Pros:

* Super fancy

Cons:

* Programming would require a lot of work

Not-sure-abouts:

* How controls would be configured for this
* How this might work for other functions

Possibility three
----
Let controls mask their operation.

Pros:

* Simple

Cons:

* Going against palettes.

Not-sure-abouts:

* Being able to mask all functions would require a chance at the basic Function level, thus possibly breaking stuff


Possibility four
----
Have a palette widget (I think) generate scenes.

Pros:

* Somewhat simple

Cons:

* I don't like coding stuff in a weird way, because I feel it increases the chances of breaking stuff

Not-sure-abouts:

* The state of the control, mostly when editting it after use, though forcing an object in so many states is imo asking for problems.

Possibility five
----
Combine (one or three) with two. The palette control would normally work on an entire fixture group or maybe channel group. Not sure which one would be better.

The masking would still have to happen, so this will live in either the controls or in a masking function or both.

Pros:

* All the features anyone could want

Cons:

* Would take quite some time to code

Not-sure-abouts:

* Where to do the masking (Function, Control, Universe)

As to the fixture group: I found where the fixture group class is being used and you're right I can reuse it.

Anyway: I'm tired, will use more brainpower tomorrow and I'll probably clean up the formatting.

Edit: added possibility five
filipek.o
Posts: 57
Joined: Thu Nov 19, 2015 12:52 pm
Real Name: Filip

Hey did you get any succes in it? im also looking for this kind of gruop selection toool so i can easily modify dynamicly gruop for example : color
Post Reply