-
-
Notifications
You must be signed in to change notification settings - Fork 356
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
RgbScript make stage colors available to scripts #1422
base: master
Are you sure you want to change the base?
Conversation
to prepare potential extension for e.g. 5 colors as used in color scripts
- Handle script errors which occur only in .call(), not just parse errors from .evaluate(). - Hand over an array, not just a variable arguments list.
The algorithm prefers the inner colors (1-2-3-4-5) over the outer colors as the noise function output is a Gauss distribution. To make the colors set from thr outside more persent, shift them from 1 and 2 to 2 and 3. Also, format the algorithms.
- Set default ramp value to center (20) as in plasma.js - Add and improve code comments and their formatting - Make value calculation explicit to make them available for debugging - Keep plasma and plasmacolors in sync for comparability.
and add documentation in template empty.js
…gbScript-colorArray
Preliminary question: what do you mean by "stage colors"? |
In stage scene productions, often two or three colors are used consistently across the stage elements at a time. Changing the color dropdowns is tedious in RGB matrix controls, so binding the startcolor and stopscolor to the colors used on stage anyway in sequences or through color control buttons would automate the consistency. The alternative is to prepare these scripts once for every color combination that you foresee to have them quickly accessible, but that leads to an unnecessarily crowded workspace. Please find attached an example workspace which shows the effect of stage colors changing every 7 seconds and the matrix colors following them, visible in the 2D view and the Virtual Console. It runs on compile-qt5-AppImage / qlcplus-qt5-4.12.7_GIT-20230419-db0090d.AppImage. (it also runs on the qt5qml build, but I am still faster in building the space quickly in the old UI) |
Forgive me if I'm wrong, but how is this different to using the custom controls? |
You mean the script properties? The differences are:
The latter one is a real pain to me in dynamic productions which rely on the lights to dynamically follow the stage emotions (from improvization theatre to freestyle music jam sessions). For the first one it is just inconvenient to think about a good color name - but it becomes a pain when it does not change in the rhythm of music due to the additional thoughts and clicks. Is that what you were asking? |
…gbScript-colorArray
…gbScript-colorArray
Also fix several off-by-one errors, such as the edges being out of sync and evaluation of integer properties. Also let the marquee color take effect and not just add to the existing RGB values.
Hello @mcallegari, I integrated the new marquee.js into the QLCplus workspace (there seems to be use for the feature to have the raw colors available in the scripts ;-) ), but I also found off-by-one and update errors, which I fixed along the way. Please let me know if I should create another marquee.js pull request with just these changes:
The VC and 2D view now look like this: This is the QLCplus workspace file: |
and catch up the different colors from the color inputs.
…gbScript-colorArray
…gbScript-colorArray
I have now created copies of the matrix scripts which were in need for the direct color access and merged the master back into this branch. So with this, the QLC+ users will be able to synchronize the plasma and alternate, marquee, balls etc. colors on two panels on the same stage with changing only one set of leading color channel which the matrix can sync it's colors on. So while it was previously possible to create matrix effects
|
Being able to fade colours of the rgbmatrix would be a super interesting way to perform live. I'm keeping a close eye on this. Appreciate the effort @hjtappe |
The file matching the renamed algorithms got lost in upload (probably rejected), so here it is: About 90% of the shows I volunteer for are freestyle where I react on what I hear. Only 10% is somehow predictable or theater style. So having direct access (e.g. in alternate.js) to the colors will help me putting colors and patterns on stage consistently and instantly. :-) |
@hjtappe I'm doing some tests on my windows machine based on the last build. Can you please merge master into this branch so I can check it with the latest changes? |
I've done some testing on Windows and there are things I LOVE about this. Also some things which I think could be improved. The good:As a heavy user of the Animation widget, I've always wanted to be able to send input to change the colour of the start and end colours. But this is even better! We can now control up to 5 colors within the matrix which is ace. This is really forward-thinking stuff which will allow many possibilities for those developing RGB matrix scripts. Suggestion:This said, I don't see a reason to have both "Add Color 1" and "Add Color 1 Knobs" cluttering up the animation widget properties dialogue. If controlling the colour of the matrix should be done externally through RGB values sent via loopback, then I think we should commit to it. For this reason, I believe we should make the Knobs controllable via loopback and remove the preset colors (as in "Add Color 1") However I'm open to discussion on this. One way I think you could still have presets (and not break anyone's showfile) is an "Add Color" button. Then you could select which color this applies to (1,2,3,4,) Excellent work. Tested using Windows 11 |
Hey guys, Here's a video showing my testing: This is SERIOUSLY cool. |
@hjtappe I did some further testing. Just an aesthetic point: Can you please make sure there is a nice grid of buttons for the colour selection? This can be done by adding whitespace or a disabled X button instead of the first colour being larger. |
…gbScript-colorArray
@yestalgia, thanks for your review and nice video. As you mention, this will enable us to connect the colors used in light animations (rgbscripts) to sync, fade and follow. I have merged master, so you will be able to give it a try after the build has finished. Regarding the knobs, there are two reasons why I would not change them: I would not change the v4 UI concepts any more. And the users will want to set the colors with multiple knobs per color "channel" (one for each color preset they define) when they use the VC in a light-scheme kiosk terminal. In that use-case, you want to add pre-defined buttons to switch between color presets. I would be happy to see this merged into master because then I can use rgbScript animations (including "plain color") all over the place and use those to manage the show in a more consistent color style. |
@hjtappe the idea is approved, no doubt about it. Thanks for this. I'm pretty sure many users will appreciate it.
I have mainly these 2 concerns for now. What do you think? |
Hello @mcallegari, thanks for your positive inputs on this. Yes, the number of 5 is arbitrary - but seems like a good statistical assumption these days:
So let me do the next moves:
One capacity note: I am quite busy throughout the summer, so it could take a while to the next commit, but I am happy for the guidance you provided for the next steps. |
Hello gentlemen, Just wanted to check in on this guy. @hjtappe are there any additional tests you want me to do on Windows? I'm getting a lot of interest from the Resolume community here in Melbourne about the smooth colour transitions possible with this. Thanks again |
@yestalgia , thanks for your offering. I have been using the Github builds to check the functionality, so feel free to run it to check it from other perspectives if anything might break that I might have overlooked. But I have no Windows specific areas of test in my mind (might be a bind spot). The current status is: the Qvector change is implemented. The API change is pending a measurement test which approach really saves compute time as well as my current lack of capacity during summer. The dynamic number of dials integration into the UI topic is still open and probably will remain limited until we have an idea on how it should look like. |
On a side note, I have been peeking into the idea of screengrabbing to foster a TV backlight effect on large conference screen at https://github.com/hjtappe/qlcplus/tree/rgbMatrix-screenGrabber Grabbing colors from a screen on the same desktop already works, but I failed so far on grabbing from an HDMI grabber or Camera device through the QMultimedia framework due to the asynchronous behavior. That might be of interest for the community as well, @yestalgia |
[Off-topic] Dude absolutely! NDI is also something I'm looking at. Happy to sponsor this feature if you'd be willing to accept a donation. Send me a DM on Instagram or the forums. Here is a link to current discussion: |
Hello @mcallegari, this pull request extends the rgbScript API by the raw colors as set in the UI in addition to the step color.
Effectively, this allows synchronization of RGB script colors to stage colors, also for multicolor scripts and specifically extends the available colors from a list of predefined colors to the complete RGB space as used on stage:
It also introduces error evaluation on the QJSEngine::call calls, so script errors would not only be while loading the scripts (::evaluate / static analysis, missing brackets etc.) but also in dynamic evaluation (::call / undefined indices etc.).
There is more potential in this approach, like adding more (up to five) colors in the UI, but I did not yet want to interfere with your UI thoughts before presenting the general concept.
Please evaluate if this could be a useful extension to QLCplus and let me know your thoughts.