Need help with button or slider solo behavior

Ask a generic question about the usage of QLC+, not related to a particular operating system
Post Reply
nturley
Posts: 4
Joined: Thu Dec 14, 2023 8:08 pm
Real Name: Nate Turley

Hello!

Pretty new to QLC+ here but hope to keep using it on my projects.

I am currently trying to trigger effects via OSC, which I have gotten working via a Solo frame with buttons (1 per effect)

This works fine, however, since the only functionality of buttons I have found is toggle (and I have found this to be the case based on many forum posts) If I send the same effect twice in a row, my lights turn off.

My desired effect is that if an effect is already running, the button does not turn off the effect that is playing if it is pressed, because I may not be able to predict the order i

i.e. if I send

OSC "buttons/1" 1
OSC "buttons/1" 1

I want effect 1 to still be playing, which is not the case with a solo frame and buttons.


Now after some research, I found the technique of using a slider matrix in mix mode for this use case.


This seems to work fine when using sliders with the mouse, however, when I set the slider via OSC

i.e.

OSC "sliders/1" 255
OSC "sliders/2" 255

The result is that both sliders 1 and 2 are set to 255. The expected behavior of is that Slider 1 will be 0 and slider 2 will be 255, which works when I move the slider with the mouse.


Any ideas for how to achieve this?
Thanks!
User avatar
GGGss
Posts: 2732
Joined: Mon Sep 12, 2016 7:15 pm
Location: Belgium
Real Name: Fredje Gallon

With external controls, it is always tempting to find the right solution. You want QLC+ to fix the lack of feedback or operator faults. This is impossible since QLC+ does not possess logic controls (yet).
You could make your project even more complex and create feedback channels for the outer world. Then, you introduce the logical blocks to inhibit double commands in the external world.

The sliders you are talking about, have to be in 'catch up with external controller input'-mode. This gives you a visual clue of who is in charge...
All electric machines work on smoke... when the smoke escapes... they don't work anymore
MichelSliepenbeek
Posts: 504
Joined: Wed Feb 08, 2023 10:24 am
Location: Nederland
Real Name: Michel Sliepenbeek

Seems to be the same problem as overhere: viewtopic.php?t=16850
A QLC Workspace is like a Bob Ross painting: "it's your world, you can create whatever you want!"
MichelSliepenbeek
Posts: 504
Joined: Wed Feb 08, 2023 10:24 am
Location: Nederland
Real Name: Michel Sliepenbeek

You can try the logic in this example .

The top Red, Green and Blue buttons each have its own frame: by using the On/Off button of the Frame , you can Allow or Disallow the button to be pushed.
You start a Scene by running a Chaser that Disables the button on Init (first step) and disables the button on Exit (last step). It uses Loopback to do that.
You can use your OSC buttons as External Control on these VC buttons on the top.

The Bottom, Red Green and Blue buttons can be used to Stop the Running Scene (the run time is set to infinite so it will never stop by itself). It uses Loopback and it makes the chaser skip to the next step.
You should notice that the chaser is set up as Run Once.
You can also use those buttons on the bottom, as a "normal toggle switch" to turn the scene on and off.
If you try to use OSC buttons as External Control on these VC buttons on the bottom, you are back to where you started: if you press them a second time it will turn the function off. :) :)

In this example i made the Top Buttons a bit smaller than the Frames they are placed in, so that you can see the On button off the frame.
It looks nicer if you enlarge the buttons to make them cover the entire frame (move the button to the left upper corner and then enlarge it to the Right bottom corner).

You can minimize the frame with the Cue Lists that control your chasers.
You can change the run time of the second step of the chaser from infinite to (as an example) the length of a MP3 file you are playing.
Attachments
Example Lock - Unlock Button.qxw
(15.47 KiB) Downloaded 37 times
Loopback-Lock-UnlockButton.qxi
(892 Bytes) Downloaded 37 times
A QLC Workspace is like a Bob Ross painting: "it's your world, you can create whatever you want!"
nturley
Posts: 4
Joined: Thu Dec 14, 2023 8:08 pm
Real Name: Nate Turley

Thanks for the info.

I am still a little unclear why this is impossible since there needs to be some "logic" to toggle the effect as well I would think... EIther in the button or the effect or the effect player. Anyway, total noob so understand that I have no understanding of the architecture of this project.

@Michel Thank you for that example!
It seems like it may do what I want, however I think this would require me sending an external "STOP" command right?
Ideally if Red is playing, and I press Blue, I would like to stop Red and Green.

Otherwise, I think I will just manage the state on my external control software to not send double commands (or pick some other lighting software for this project)
MichelSliepenbeek
Posts: 504
Joined: Wed Feb 08, 2023 10:24 am
Location: Nederland
Real Name: Michel Sliepenbeek

In electronics two types of switches are common:
- Rocker switch. This is a type of electrical switch that consists of a lever or rocker that can be toggled between two positions: "ON" and "OFF."
Other names are Latching switch, "Push-To-Make, Push-To-Break" switch .
In QLC it is called Toggle switch.
Best known example is a light switch.

- Push Button switch. This is a type of electrical switch that is operated by pressing a button or plunger.
It is a momentary switch, meaning that it only makes or breaks an electrical connection while the button is being pressed. When the button is released, the switch returns to its original position and the connection
is broken.
In QLC it is called Flash Button.
Best known example is a doorbell.


In the on-line manual https://docs.qlcplus.org/v4/virtual-console/button you can find the following:
A Button is the simplest and at the same time one of the most powerful widget in QLC+; with it, you can start, stop and flash your Functions.
When activated in toggle mode, the Button border will turn to green, but if a Function attached to a Button is started from another Virtual Console widget, the Button border will turn to orange, to indicate that the Function is active but not actually controlled by the Button. Pressing a Button in "monitoring" state will take control of the running Function and the Button border will turn to green. Another press and the attached Function will be stopped.

If you push a button, the button border will turn to green, which tells you that the function is ON. That way you could know that if you press it again, it will turn the function OFF.
If you use an External Input on your button, QLC can provide Feedback. Depending on the type of Input Device you can use this to turn the led of a Button On and Off, give it a different color or let it blink.
Different ways to make your input device show you that a function is already active and make it recognisable that if you press that button again it will turn the function OFF.

I Suggest you try to find out how to use this Feedback in your OSC application.
Unfortunately i only have a little experience with MIDI devices (Novation Midicon, Behringer BCF2000, Novation Launchpad, Akai APC Mini), never tried using OSC yet, so i cannot help you with that.
A QLC Workspace is like a Bob Ross painting: "it's your world, you can create whatever you want!"
MichelSliepenbeek
Posts: 504
Joined: Wed Feb 08, 2023 10:24 am
Location: Nederland
Real Name: Michel Sliepenbeek

After a good night of sleep, you allways wake up with better ideas. :) ;)

This one uses a Frame with two pages.
On your Virtual Console it looks the same as a regular Button (almost, only the Green Border is missing).
If you use a Midi Device or OSC however, you have two different Buttons to work with, each having its own External Controller (with its own Feedback).

As only the Button on Top will be Active, you could call this an "externaly uninterruptable Toggle Switch'.


This example is "self explaining" (meaning: it has a separate frame that explains "the trick").


If you really want a Green Border: (for each color) create a Button that starts a dummy function and has the same size as the Start function, decrease the size of your Stop function in both directions by 2 pixels and put this Stop Button on Top of the Dummy Button. In your chaser replace your Scene by a Collection that starts both your Scene and this Dummy Function.

If you want this to act as if ithe buttons were in a solo frame: double the number of your loopback channels (and Rename them to Red Page1, Red Page 2, Green Page 1, .... Blue Page2), change your Input profile accordingly, on the Multi page frames remove the External Control for Next Page and instead (on the bottom of this screen) set it up for "Specific Page selection", in your chasers replace the last step by "skip to page 1" for the selected color and replace the first step by Scripts with one "skip to page 2" for the selected color and for every non selected color a "skip to page 1" as well as a Stopfunction (as you don't know which one is running: if it's running it will stop, if it's not running it won't harm).
Attachments
Loopback-Lock-UnlockButton.qxi
(892 Bytes) Downloaded 28 times
Example Lock - Unlock Button V2.qxw
(29.07 KiB) Downloaded 36 times
A QLC Workspace is like a Bob Ross painting: "it's your world, you can create whatever you want!"
kproth
Posts: 76
Joined: Sun Jan 01, 2023 2:31 pm
Real Name: Kevin Roth

nturley wrote: Thu Dec 14, 2023 8:30 pm This works fine, however, since the only functionality of buttons I have found is toggle (and I have found this to be the case based on many forum posts) If I send the same effect twice in a row, my lights turn off.
I have run into the same issue (in my case, driving via MIDI from MultiPlay), and I created a forked-copy of qlcplus that adds new external-input options to the buttons to make them react to the note value, such that sending a note value >0 will turn the button ON and a note value of 0 will turn the button OFF. This way if you send a >0 note value a second time, the button does not toggle.

viewtopic.php?p=69298#p69298

viewtopic.php?p=69232#p69232

Note 1 - this custom build does save the new button setting into your .QXW project file. But if you switch back to using the official build and save any updates to your .QXW file, this build's new setting would be lost.

Note 2 - this build is ~6 months old currently, so any more recent changes aren't in it. I will be jumping in again soon to work on this again and will post a fresher build. Also, I have not gotten around to submitting a pull request for this yet, but I intend to at some point still. If you try this and like it, please let us know.
User avatar
mcallegari
Posts: 4482
Joined: Sun Apr 12, 2015 9:09 am
Location: Italy
Real Name: Massimo Callegari
Contact:

kproth
Posts: 76
Joined: Sun Jan 01, 2023 2:31 pm
Real Name: Kevin Roth

Nope. I haven’t posted mine yet. The comments on timebutt’s PR sounds like it would allow both NoteOn and NoteOff to cause toggling of a button. My change will allow NoteOn (with velocity value > 0) to only cause the button to activate, even if sent repeatedly, and vice versa (a note off or a note on with velocity 0 would only deactive the button even if received repeatedly).

I think we’re probably trying to solve 2 different problems.
nturley
Posts: 4
Joined: Thu Dec 14, 2023 8:08 pm
Real Name: Nate Turley

kproth wrote: Sat Dec 16, 2023 11:14 pm
I have run into the same issue (in my case, driving via MIDI from MultiPlay), and I created a forked-copy of qlcplus that adds new external-input options to the buttons to make them react to the note value, such that sending a note value >0 will turn the button ON and a note value of 0 will turn the button OFF. This way if you send a >0 note value a second time, the button does not toggle.
Hey this sounds like exactly what I am looking for (I think) !

Does it also play nice with solo frames? i.e.

Send value 1 to button 1, effect 1 turns on
Send value 1 to button 1, effect 1 stays on
Send value 1 to button 1, effect 2 turns on, effect 1 turns off

Currently my control software never sends a value 0 to the buttons, and I was hoping to leverage the solo frame feature for this.

Thanks!
kproth
Posts: 76
Joined: Sun Jan 01, 2023 2:31 pm
Real Name: Kevin Roth

nturley wrote: Mon Dec 18, 2023 3:17 pm Does it also play nice with solo frames? i.e.

Send value 1 to button 1, effect 1 turns on
Send value 1 to button 1, effect 1 stays on
Send value 1 to button 1, effect 2 turns on, effect 1 turns off
Yes it does. That’s exactly how I use this option. I added a blackout button into the solo frame as well, so I can turn off anything active in the frame without having to somehow keep track of the last thing I turned on in my control software.
nturley
Posts: 4
Joined: Thu Dec 14, 2023 8:08 pm
Real Name: Nate Turley

kproth wrote: Tue Dec 19, 2023 2:37 am
nturley wrote: Mon Dec 18, 2023 3:17 pm Does it also play nice with solo frames? i.e.

Send value 1 to button 1, effect 1 turns on
Send value 1 to button 1, effect 1 stays on
Send value 1 to button 1, effect 2 turns on, effect 1 turns off
Yes it does. That’s exactly how I use this option. I added a blackout button into the solo frame as well, so I can turn off anything active in the frame without having to somehow keep track of the last thing I turned on in my control software.

Thanks you for this! I was able to test last week and this is working just as expected. I hope this will become part of the core in the future. For now, thanks for sharing your work!
kproth
Posts: 76
Joined: Sun Jan 01, 2023 2:31 pm
Real Name: Kevin Roth

Thanks for the feedback.
kproth
Posts: 76
Joined: Sun Jan 01, 2023 2:31 pm
Real Name: Kevin Roth

nturley wrote: Wed Dec 27, 2023 3:09 pm Thanks you for this! I was able to test last week and this is working just as expected. I hope this will become part of the core in the future. For now, thanks for sharing your work!
FYI - I re-built my customizations for v5 (on top of the latest 5.0.0-beta3 release) and for v4 (on top of the current v4.12.8 code).

They are both available from here if you want to give them a go:
https://github.com/kpr0th/qlcplus/relea ... 2023-12-31
Post Reply