On Button Press.. start/stop a function? (Instead of toggle)

Request a feature that you would like to see in QLC+.
Explain in details why you would need it and which is your usage case.
Post Reply
lukelissenberg
Posts: 7
Joined: Fri Mar 08, 2019 5:36 pm
Real Name: Luke Lissenberg

I could really use more than just 'toggle' and 'flash' functions on button press, ideally the ability to exclusively 'start' a specific function, and also exclusively 'stop' specific function. Yes, that means one button to turn a function on, and another button to turn the same function off. Ideally the behaviour would be if a 'start' button is playing a function and then gets hit again, it simply continues playing the function – and it will continue playing until 'stop all functions' or the exclusive 'stop' button for that function gets hit.

The reasoning for this is I am using Ableton with tracks along with midi cues to trigger lighting. We don't always play our songs the same way every time, sometimes we loop a section or at the end of a song, we may go back into the bridge etc. What this means is toggle triggers are less than ideal because say if you were to loop a song section, it will toggle off all the functions that were triggered the first time that section was played. The only solution I have found for this is to insert a 'stop all functions' cue before each song section to clear all and then turn on every function I want on for that section.. but this is not ideal because it causes the lights to flicker between every song section transition. If separate 'start' and 'stop' buttons were available instead of only toggle buttons, this would solve the problem entirely.

Another solution could be If QLC+ could read the intensity of midi notes/CC values; 1-64 = function OFF and 65-127 = function ON, this could solve the problem too. That being said, I think I would prefer the first solution, it's just simpler to manage.

Important to note, I would like functions to continue if re-triggered, I do not want them to restart - for example I would not want moving heads movements to restart every time a song section is looped.

If this feature was implemented this would make programming and working with Ableton tracks/midi cues MUCH easier.. I'm so serious about this I would be willing to donate a nice chunk of change to make it happen.

If anyone has any other suggestions or workarounds I'm all ears!

I am using 4.12.5.
User avatar
GGGss
Posts: 2732
Joined: Mon Sep 12, 2016 7:15 pm
Location: Belgium
Real Name: Fredje Gallon

lukelissenberg wrote: Tue Aug 02, 2022 8:19 pm I would like functions to continue if re-triggered, I do not want them to restart - for example I would not want moving heads movements to restart every time a song section is looped.
I think you make a mistake here... how can a button know it's being retriggered and next you want it to stop a function?
Depending on how complex your project is, you could solve this by using some loopback-magic:
Create a solo frame, put 2 buttons inside, one for start, the other for stop. Learning the right input commands you then can use this frame as a latching feature for your other stuff. As long as Ableton is not giving the specific stop signal, your loops may continue.
All electric machines work on smoke... when the smoke escapes... they don't work anymore
lukelissenberg
Posts: 7
Joined: Fri Mar 08, 2019 5:36 pm
Real Name: Luke Lissenberg

Hello, I appreciate the response.

A button would know to 'continue' because its only tasks would be to 'start' a function if hit once, and 'continue' the function if hit again with the same midi data. A separate button - and in turn midi signal - would be assigned to 'stop' the function. Obviously these buttons would go in a solo frame because both can't be active at the same time.

Upon further reading on the forum, I'm realizing it may actually be simpler to do my second suggestion in the above post: add another 'external input' section to the button properties. There would be two sections: 1 for toggle/on, and 2 for 'off'. If only 'on/toggle' is assigned, the function will toggle when midi signal 'A' hits the button. If both 'on/toggle' and 'off' are assigned, the function will turn on when midi signal 'A' hits the button, and off when midi signal 'B' hits the button. The button can still toggle on mouse click etc. Technically you could have three sections.. toggle, on, and off, but that may clutter up the interface too much.

That loopback technique sounds interesting.. could you elaborate? I have never used this type of feature. My project is somewhat complex.. 13 LED bars, 6 pars, 6 moving heads, a 2000 pixel grid (usually driven by Resolume but I do basic colours in QLC+), during Christmas about 500 more pixels are added for various Christmas stuff..
User avatar
GGGss
Posts: 2732
Joined: Mon Sep 12, 2016 7:15 pm
Location: Belgium
Real Name: Fredje Gallon

No, not precisely because a button has 2 edges: a rising one and a falling one. Depending on the state a button will use the rising edge (going to 'on'-state) of a falling one (going to the 'off'-state). Therefore hitting the button again will cause its state to change. So no luck there.
With the solo-frame you can retrigger a button without it changing state. The external commands allow you to repeatedly hit the button, without changing its state.
There are lots of examples of the use of loopback channels here in the forum. In your use case, you can misuse them to trigger functions (cue's, chasers, shows, ... collections) with an external command.
All electric machines work on smoke... when the smoke escapes... they don't work anymore
kproth
Posts: 76
Joined: Sun Jan 01, 2023 2:31 pm
Real Name: Kevin Roth

Adding a +1 for this topic. I'm running into a very similar situation, driving QLC+ via LoopBe from MultiPlay, for a figure skating show. I'm planning to build one button in a Solo Frame for each lighting look I need, and I'd like to toggle those buttons from MultiPlay. So that at any one point in time I have exactly one lighting cue active; or I can configure a button to cancel all running functions, i.e. blackout. All of this works great, except if I accidentally send the same MIDI note twice, without another one in between, the "Toggle On/Off" function will bite me by turning the lights off when I didn't want them off.

This thread is not the only one requesting this. See viewtopic.php?f=18&t=13078&p=55493&hilit=toggle#p55493 and viewtopic.php?p=47995#p47995.

I haven't tried the suggested slider+loopback+button arrangement yet, but on first glance it seems like a lot of complexity for something that could be much easier.

I've already realized another potential solution. I could build a "Cue List" widget, and activate it's dedicated Side Slider in "Steps" mode, and send specific values to the steps slider to activate a specific step in the cue list. This would be a perfect solution except for one kicker -- it seems that the value I need to send changes depending on how many steps are in the specified chaser. *IF* each step had a specific value (preferably 1, 2, 3, 4, 5, etc, or configurable), then this would meet my need completely. But since the values are subject to change if I come back later and add another step at the end, this becomes a rather fragile solution. I might use it anyways, and just ensure my chaser always has 128 steps (to cover all possible MIDI values), regardless of how many steps I actually need, but again, it seems complex.

By way of comparison, one of the commercial programs, LightKey, has already implemented what we're all looking for. Namely, when it receives a MIDI Note trigger, it has 4 behaviors to choose from when trying to alter the state of a preset or cue: "Toggle (On/Off)", "Flash", plus "Activate" and "Deactivate". These last 2 are what QLC+ is missing for my use case. (It seems like some users also want a "Restart" option to jump a running chaser back to the first step, but I think the Side Slider could accomplish this already.)

@massimo - is there any way we can encourage you to add this to the ToDo list? I'm sure it's more complicated than it seems to an end user, but it would sure help us out if we could send a single MIDI note that turns a button "ON" even if it's sent more than once, for "safety" during live performances involving people on stage (or on the ice).
kproth
Posts: 76
Joined: Sun Jan 01, 2023 2:31 pm
Real Name: Kevin Roth

If you're open to adding this enhancement idea to the list, here's an attempt to add clarity to what I'm asking for by way of description of how I'm thinking it could be implemented. Please understand I have no knowledge of the inner workings of QLC+, so take this with the requisite large grains of salt!

I'm envisioning a new option in the Button properties popup, next to the "On button press > Toggle function on/off" radio button, that offers a modifier that *only* applies to the "External Input" trigger. It could potentially be hidden if there isn't an External input configured, or if any other "On button press" option is selected. The new option could be labeled "External Input behavior:" and have choices like "Toggle on/off (default)", and "Toggle ON-only" and "Toggle OFF-only". (and perhaps "Restart Function" if you want to add that too).

And then in the code that handles External Input triggers, I'm envisioning just adding a bit of filtering logic, something like this:
  • If Toggle on/off is selected >> no change to current behavior
  • If Toggle ON-only is selected >> look at the current state of the button. If it's already active, i.e. it's outlined Green or Orange, ignore the input. Else, fall through to the existing Toggle on/off code.
  • If Toggle OFF-only is selected >> look at the current state of the button. If it's not already active, i.e. it's not got any outline color, ignore the input. Else, fall through to the existing Toggle on/off code.
---------------------------

My other suggestion was to somehow make the Side Slide for Cue Lists react to a more predictable set of values coming in from external input. I'd love to have an option so that each step reacts to a specific external input value, ideally just the step's position in the cue list. Obviously that would be hard to drive with the mouse, but it would be awesome to have as an option from external inputs that are configured in software.
nmaddix
Posts: 42
Joined: Thu Aug 13, 2020 12:51 pm
Location: Bali, Indonesia
Real Name: Maddix

+1 for this request. I'm also trying to automate QLC+ from Ableton and finding it to be quite challenging with the existing options for buttons.

One solution I'm exploring is by using faders in playback mode to control functions instead of buttons. Ableton can automate the fader (either smoothly or just all the way up and all the way down). When the fader hits 0, the function stops. When the fader is non-zero, the function starts. I'm doing this with OSC but it can probably be done with MIDI as well.
kproth
Posts: 76
Joined: Sun Jan 01, 2023 2:31 pm
Real Name: Kevin Roth

Hmm. I was sure I had tried faders (in a soloframe, since I want to turn off one scene if I'm turning on another) and couldn't get them to work well from automation input (MIDI). In hindsight, I think I was initially experimenting with "loopback magic" tied into the equation, as someone else had recommended. When running them directly they work pretty well.

One minor warning: it appears that faders in a soloframe in QLC+ v5 don't automatically turn off other faders in the same soloframe. But in v4 this works fine.

In my case though, MultiPlay is what I'm using to fire the MIDI cues, and I don't think it can "ramp" the fader up. So I'm going to still use buttons to ensure the fade-in setting is honored.
MichelSliepenbeek
Posts: 504
Joined: Wed Feb 08, 2023 10:24 am
Location: Nederland
Real Name: Michel Sliepenbeek

Ideally the behaviour would be if a 'start' button is playing a function and then gets hit again, it simply continues playing the function .
Have you tried using a Cue List?
There you can define the Play Button to act as Play/Stop or as Play/Pause.
A QLC Workspace is like a Bob Ross painting: "it's your world, you can create whatever you want!"
Post Reply