Page 1 of 1

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

Posted: Tue Aug 02, 2022 8:19 pm
by lukelissenberg
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.

s

Posted: Wed Aug 03, 2022 9:28 am
by GGGss
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.

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

Posted: Wed Aug 03, 2022 4:02 pm
by lukelissenberg
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..

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

Posted: Thu Aug 04, 2022 10:29 am
by GGGss
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.

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

Posted: Sun Jan 01, 2023 3:00 pm
by kproth
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).

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

Posted: Sun Jan 01, 2023 7:16 pm
by kproth
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.

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

Posted: Sat Feb 25, 2023 11:51 pm
by nmaddix
+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.

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

Posted: Mon Feb 27, 2023 11:32 pm
by kproth
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.

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

Posted: Mon Feb 27, 2023 11:50 pm
by MichelSliepenbeek
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.

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

Posted: Mon Jul 08, 2024 6:17 pm
by hoga2443
+1 for this request. This must be possible. Specifically, the web interface has the feature "setFunctionStatus" which does exactly this.

('setFunctionStatus', 'sfFuncID', 'sfStatus')

This feature is also available through Bitfocus Companion which uses the web interface. It would be super helpful to have this same option for buttons in Virtual Console.