Can a function "finish" to completion when in a chaser that advances?

Ask a generic question about the usage of QLC+, not related to a particular operating system
Post Reply
MKUltraMkII
Posts: 21
Joined: Thu Nov 05, 2020 6:35 pm
Real Name: Jay Aich

I have a chaser, and inside it are two steps. Each step is a separate rgb matrix function. I have a wave moving down on the first column of my rgb matrix. One step is blue, the other is green.

Each step has an infinite hold, and a 200ms fade out. When the chaser step is advanced, the existing function (wave down) stops in its tracks, and fades out from that position, while the next step (wave down in the other color) begins.

What I am looking for / wondering if it is possible is to have the wave down function continue and finish to its completion (it is a single shot / no loop) even when the chaser step is advanced.

I want to be able to start multiple "wave down" functions/animations on a single column of my rgb matrix, without having each subsequent one interrupt the one already in progress.

Here is a video showing what I have now, where each time I click to advance the chaser step, it replaces the previous function. The fade out works- you can see the first color fade out as the 2nd one begins, but it fades out locked in position at the point when the chaser step was advanced. I want it to finish its wave down animation all the way to the bottom of the column, even as the 2nd animation is underway.




Is this even possible? Is a chaser the wrong tool here?

Ultimately, I'm trying to drive this with a midi note as the input trigger, so that is why I'm trying to use the chaser. So if I hit the correct key on my midi keyboard or edrum kit, wired up as the input for next cue on the chaser, I want to initiate an animation (wave down on column 1 in this example). But if I hit that same note quickly again, I don't want that to "interrupt" the current wave down, but instead start another. Is it not possible to have multiple animations run on the same part of the rgb matrix at once?

Thanks!
MichelSliepenbeek
Posts: 720
Joined: Wed Feb 08, 2023 10:24 am
Location: Nederland
Real Name: Michel Sliepenbeek

You could use a SCRIPT:

Startfunction (RGBmatrix 1)
Wait xxx ms
Startfunction (RGBmatrix 2)
A QLC Workspace is like a Bob Ross painting: "it's your world, you can create whatever you want!"
User avatar
GGGss
Posts: 3052
Joined: Mon Sep 12, 2016 7:15 pm
Location: Belgium
Real Name: Fredje Gallon

If we would have variables and some logic functions, one could build an inhibit function. As long as inhibit stands, no new inputs are allowed. You keep this inhibit signal high as long as the effect runs./
All electric machines work on smoke... when the smoke escapes... they don't work anymore
User avatar
mcallegari
Posts: 4720
Joined: Sun Apr 12, 2015 9:09 am
Location: Italy
Real Name: Massimo Callegari
Contact:

User avatar
sandinak
Posts: 191
Joined: Mon Apr 03, 2017 5:40 pm
Location: Yorktown, VA
Real Name: Branson Matheson
Contact:

For those interested; there IS a way to sort of do this today by having a chase call a chase:
  • Create 3 different RGB Matrixes, one you want to persist and the other two you'd want to change whilst running
  • Create 2 different Chases
    • a 'main' chase .. generally i use this as my entire cue list for a show
    • a 'sub' chase that will have changes you want to occur during a single entry in the 'main' chaase
  • Create your "views" as collections.
    • Emtpy collections for say between songs on the show
    • a "Run" collection that contains what you want to persist, say Fill-Horizontal and the "sub" chase
    Screenshot 2023-03-20 at 11.06.46.png
  • setup 2 "Chase" widgets in the Virtual Console
    • on the first one connect the "main" chase, name it 'main' and I also usually set the letter N for Next
    • on the second one connect the "sub" chase, change the name to "sub" and add letter "M" for Next
    Screenshot 2023-03-20 at 11.08.13.png
  • go into run mode and when you 'M' through your first list.. when you get to the run step .. you can 'N' through the changes on top of the first matrix
Screenshot 2023-03-20 at 11.11.51.png
I havn't found a good way (yet) to have a single key that could work as you'd expect; but we've adapted mostly to using the two-finger approach ;)
https://sandsite.org/downloads/Chase+Chase.qxw
I *DO* think it would be a really nice feature to have the ability for a single RGBScript that is called in consecutive different steps; to *continue* from where it was vs restarting; so I could do this in one Chase.
MKUltraMkII
Posts: 21
Joined: Thu Nov 05, 2020 6:35 pm
Real Name: Jay Aich

Thanks for the suggestions.

Based on a couple replies, it sounds like Scripts might be what I'm looking for. I gave a quick try with Scripts, but ended up with a result that worked same as where I started.

Based on sandinak's reply, I tried out a double-chaser approach. Unfortunately I ended up with the same result there as well.

There is certainly the possibility that I didn't fully understand or set up these approaches correctly. I'll try to add more details on what I tried.

For the script approach:
I added two scripts.
Script1:

Code: Select all

startfunction:310 // Wave Down Col1 Blue
wait:1s
Script2:

Code: Select all

startfunction:311 // Wave Down Col1 Green
wait:1s
Pretty straightforward... each script starts a wave down function on column1 of my rgb matrix in a different color.

I then put each of these scripts in a chaser. I'm loading the chaser in a cue list in Virtual Console, then going into play mode, and stepping between the cues. The result is the same as my first video- stepping to the next cue causes the previous function to stop entirely.

Is there anything to the Script approach that I am missing?


For the double chaser approach.. as I think back through this, I think I understand how this approach would allow you to run two different RGB Matrix functions at once, but it is slightly different than the use case I am trying to solve. I think.
This approach has a matrix function running in the collection in the first chaser, while you are activating two other matrix functions in the sub chaser. So you are able to overlap the matrix function at the top level chaser with one of the two in the sub level chaser. Whereas in my context, I'm using a midi note from an instrument as input. That input could be activated multiple times in succession, and I want it to cause an rgb matrix function to run to completion each time, without being interrupted.

But I don't actually *need* to use rgb matrix functions. I can "print" the changes to a Sequence, if that would help. I tried it, creating sequences for each of the two matrix functions I'm testing with. Then added those two sequences to a chaser, and tried stepping through them. Same result as always- when I advance to next cue, the current running sequence stops in its tracks (though it does fade out from that point for as long as the fade out time was set for)


Perhaps what I'm trying to do just can't be done with cue lists / chasers? I've looked at trying to use a button on the virtual console instead... maybe if I could "activate" a button via midi note that causes a function to run..but buttons only really work as toggles, not as something that triggers a function to run every time you press it. Buttons do have the "flash function" option for scenes only. I guess I'm in need of a hybrid of that. I want to "flash" some rgb matrix function to completion, but be able to press this button many times in a row, with each press causing the rgb matrix function to run again, ON TOP of the previous one, not replacing it. But I don't think I can do that.

Chasers seem much closer to what I need, but I haven't solved it yet. Because it is pretty easy to hook a midi note up to the "next cue" of a chaser, which works well for midi note playing to cause something to happen on the lights. But maybe Chaser can't work for what I want because when "next cue" advances to the next step, the previous one cannot continue running to completion?


Another quick video showcasing my dilemma:
Each note triggers the "wave down" animation on a different column of my matrix. But if I hit the same note consecutively, the animation does not complete, as it is replaced by the next press. My goal is to have the "wave down" animation continue to completion each time a midi note is triggered, even if the same note is pressed again.
MichelSliepenbeek
Posts: 720
Joined: Wed Feb 08, 2023 10:24 am
Location: Nederland
Real Name: Michel Sliepenbeek

For the script approach: this is a way to launch your separate functions with a fixed interval, but in order to make it work you have to put your StartFunctions all in the same script.

Furthermore you could use Sequences instead of RGB matrices.
To understand the difference between a Sequence and a Chaser, you are invited to read the second paragraph of the Show Manager documentation.

In both cases (Sequence or RGB Matrix) you probably don't want it to Loop, but instead use the Run Once option.
You can get yourself a "flying start" by converting a RGB Matrix to a Sequence (use the RGB button next to the Timer button in the top of the right window of the RGB Matrix manager).
A QLC Workspace is like a Bob Ross painting: "it's your world, you can create whatever you want!"
User avatar
GGGss
Posts: 3052
Joined: Mon Sep 12, 2016 7:15 pm
Location: Belgium
Real Name: Fredje Gallon

He now has a red sequence and a green sequence. He can fire those separately now; but he's not guaranteed that the sequence will end to completion.
The thing is ... because he retriggers the sequence playing the same midi note in the music, the sequence restarts and this is unwanted.
All electric machines work on smoke... when the smoke escapes... they don't work anymore
Post Reply