xLightsSequencer / xLights

xLights is a sequencer for Lights. xLights has usb and E1.31 drivers. You can create sequences in this object oriented program. You can create playlists, schedule them, test your hardware, convert between different sequencers.
GNU General Public License v3.0
549 stars 208 forks source link

Moving Heads - Bulk Update Effects with Presets #4565

Open jholmes09 opened 4 months ago

jholmes09 commented 4 months ago

In traditional moving head programming (on consoles such as ETC or GrandMA), a key feature is the ability to build presets that are referenced by your cues and then edit those presets (rather than every single cue).

Imagine you have a series of sequences that call for your moving heads to be in a specific orientation multiple times. You program everything with the visualizer but then, when you setup your lights, you realize that the positioning is close but not perfect. Currently, you would have to find every effect in every sequence that used this positioning and edit (most likely you would find the first one, edit it, export the preset, then find all the others and import the preset one-by-one).

In standard consoles, you would create one preset that every cue/effect referenced. If you change that preset, all the cues automatically update.

I don't fully know how something of this nature could be implemented but it would be a godsend. I know I would use it and I imagine any moving head sequence vendors would love it since it would allow end-users to adjust presets according to their unique layout without having to touch every single effect.

Happy to discuss (and even screenshare my console) to further evaluate.

AzGilrock commented 4 months ago

You know we've had a discussion page and beta testing for the new Moving Head stuff for months? That was the time to tell me what your grandma likes. ;)

This would really have to be a feature that works for all effects. There would need to be an effect that is dropped on the grid that references one of our existing Effect Presets and then the ability to edit an Effect Preset. Creating an effect to do that wouldn't be too hard but we don't have the ability to edit any effect presets in the program. The Moving Head Effect has 3 different preset functions but they are really just a way to recall settings and once clicked the effect has no idea its associated with the preset. Internal to the effect there are Position presets, Path presets, and Dimmer presets. For overall entire effect presets you use the existing xLights effect preset feature. The only way to edit any preset in xLights is to drop it in the grid, edit and save as a new preset.

cybercop23 commented 4 months ago

Seems to be very niche use with lots of work with relatively small payback. XSQs are text files. You can easily edit them and find/replace all.

computergeek1507 commented 4 months ago

Are the presets from other software text files, we can attempt to create an importer?

jholmes09 commented 4 months ago

Seems to be very niche use with lots of work with relatively small payback. XSQs are text files. You can easily edit them and find/replace all.

Somewhat. It's certainly easy to fix something like this when you only need to hit those XY positions a couple times. but when you have 10+ songs and you're consistently referencing that position data, it gets tiresome very quickly, especially if you have 5 or 6 presets that you are constantly jumping between.

You know we've had a discussion page and beta testing for the new Moving Head stuff for months? That was the time to tell me what your grandma likes. ;)

This would really have to be a feature that works for all effects. There would need to be an effect that is dropped on the grid that references one of our existing Effect Presets and then the ability to edit an Effect Preset. Creating an effect to do that wouldn't be too hard but we don't have the ability to edit any effect presets in the program. The Moving Head Effect has 3 different preset functions but they are really just a way to recall settings and once clicked the effect has no idea its associated with the preset. Internal to the effect there are Position presets, Path presets, and Dimmer presets. For overall entire effect presets you use the existing xLights effect preset feature. The only way to edit any preset in xLights is to drop it in the grid, edit and save as a new preset.

Sorry! I've been out of pocket due to my wife having kids!

I agree that its probably too much of a workload for a niche feature to implement this across all effects. What if, when a preset is used in a Moving Head effect, the effect data notates the name of that preset (doesn't store the preset data, but just notates its name). Later, if we update/overwrite a preset, we use the "find effect" search feature to select every Moving Head effect that has this preset. We'd just need to figure out a way to force a reload of the preset once selected.

jholmes09 commented 4 months ago

Are the presets from other software text files, we can attempt to create an importer?

No they're baked in pretty hard :(

I don't think the solution is to find ways of importing presets from other software. My goal is to take the concept of presets and implement in xLights.

patdelaney commented 4 months ago

I have a very similar use case, that I was thinking about this morning, and I did not see this request until I was chatting with Jeffrey this afternoon and he said asked if I was referring to his request. @cybercop23 I'm not sure it's as niche as you think.

Lets say you have 8 moving heads that are being users as wall washers. I would like to have a series of Presets that could be recalled at any point. These heads may ne be sequenced into the show. Lets say I want all the lights to be blue. I hit the preset and they are blue. Now I want to change to Red. Trigger a preset and now they are red.

These presets could be tied to gpio triggers or api calls.

cybercop23 commented 4 months ago

I have a very similar use case, that I was thinking about this morning, and I did not see this request until I was chatting with Jeffrey this afternoon and he said asked if I was referring to his request. @cybercop23 I'm not sure it's as niche as you think.

Lets say you have 8 moving heads that are being users as wall washers. I would like to have a series of Presets that could be recalled at any point. These heads may ne be sequenced into the show. Lets say I want all the lights to be blue. I hit the preset and they are blue. Now I want to change to Red. Trigger a preset and now they are red.

These presets could be tied to gpio triggers or api calls.

Aren't those just sequences you created and named by color and just trigger them? This is at sequence creation time. Call them via FPP. :)

computergeek1507 commented 4 months ago

I have a very similar use case, that I was thinking about this morning, and I did not see this request until I was chatting with Jeffrey this afternoon and he said asked if I was referring to his request. @cybercop23 I'm not sure it's as niche as you think.

Lets say you have 8 moving heads that are being users as wall washers. I would like to have a series of Presets that could be recalled at any point. These heads may ne be sequenced into the show. Lets say I want all the lights to be blue. I hit the preset and they are blue. Now I want to change to Red. Trigger a preset and now they are red.

These presets could be tied to gpio triggers or api calls.

That seems more like preset effects in a show player like FPP, xLights generates static data. You would have to use xFade or xSchedule to trigger events from a GPIO

patdelaney commented 4 months ago

Perhaps

AzGilrock commented 4 months ago

I agree that its probably too much of a workload for a niche feature to implement this across all effects. What if, when a preset is used in a Moving Head effect, the effect data notates the name of that preset (doesn't store the preset data, but just notates its name). Later, if we update/overwrite a preset, we use the "find effect" search feature to select every Moving Head effect that has this preset. We'd just need to figure out a way to force a reload of the preset once selected.

I was saying it would make more sense for us to create a feature that works for all effects. The concept you want is not unique to moving heads. In fact I'm pretty sure we have existing open enhancements that request what I'm talking about. https://github.com/xLightsSequencer/xLights/issues/3685 is the one I'm thinking about. That would be the concept of an editable preset that could hold one or many effects. Someone created a fake demo there to show the idea.

The issue I have with writing a preset name is that when someone clicks the preset button it just updates the effect instantly to those settings but then the user is free to move sliders and then the effect is no longer that preset. So do I erase the name as soon as anything else is touched?

jholmes09 commented 4 months ago

in a console if we started with a preset and then manipulated the settings, it would remember both the original preset settings that were not changed and the updated parameter. That would be saved in a cue unless we overrode the preset altogether.

In our xLights case, I might suggest adding a “modified” symbol or text to indicate it was a preset but something was changed. Highlighting or changing the color of the parameter that was different would be cool.