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
530 stars 197 forks source link

Slow Canvas Effect #4596

Open brett-foy opened 1 month ago

brett-foy commented 1 month ago

Is your feature request related to a problem? Please describe. This is a potential feature request

Describe the solution you'd like It would be an interesting effect to have a "Slow" effect that could run as a canvas layer and effectively slow down the effect of all layers under it. For example, If you had an effect that was 8 seconds on the timeline (lightning for example) at 40FPS for 320 total frames, the slow canvas effect would allow you to select a percentage to "slow down" the layered rendered effects. In this example, if you set the slow canvas effect to 50%, only 4 seconds of the 8 second lightning effect would be rendered and play only the first 160 frames over the entire 8 seconds, reducing it's speed by 50%, if you set the slow canvas effect to 25%., then the entire 8 second lightning effect would be slowed to the point of only showing the first 2 seconds (first 80 frames) elongated over the total 8 second effect. Having a lead-in feature to allow it to skip frames before rendering would be cool also (similar to Meteor, but unavailable in Lightning), as would potentially a value curve to be able to smoothly speed up and slow down effects, which is not achievable in skips, single strands, fans, spirals etc as the value curve modification does not smoothly increase/decrease speeds as it jumps between settings.

By doing this as a canvas tool, it would allow the ability to slow down any effect that doesn't already have a way to reduce speed, or to reduce speed more than is allowed in the individual settings; ie for lines and lightning effects, or even for effects that only take whole numbers, but you'd like a speed lower than 1 but higher than zero.

Describe alternatives you've considered I am not sure that there are any other alternative available to slow down effects that do not have speed control or to slow them down more or further than than the whole integer 1, or are not able to leverage value curves to smoothly speed up/down without jumping.

Additional context Just an idea for what a basic implementation could look like. image

Thank you for humoring me. It would seem that this would be a cool way to make a "slow" or "slower" feature available for all effects without actually having to modify the code for the effects themselves?