Controlling multiple sources with the same MIDI controller fader

137 views
Skip to first unread message

Arth

unread,
Mar 12, 2019, 4:05:38 AM3/12/19
to Lightjams
Hi there. I'm new to Lightjams and have been googling around for quite a bit to find out how to do this, but I haven't been able to find anything.

I would like to control multiple sources with the same fader on my MIDI controller. I have assigned buttons on the controller to the sources, and
when I press one of them, I want the fader to affect the value of that particular source. I've managed to get this working, but the fader isn't motorized
so when I swap source, it's value gets set to the same value as the previously selected source, because that's what the fader is set to. I'd like the fader 
to not affect the source value of the newly selected source until I manually move the fader into the position of it's current value. I'm all out of ideas on 
how to achieve this, and would appreciate any help!

Mathieu

unread,
Mar 12, 2019, 8:52:06 AM3/12/19
to Lightjams
The sources need to be on different grids, otherwise all active sources will react to MIDI at the same time. If the sources are on different grids and you activate one grid, then you can use a formula to modify the source only when the MIDI value is changing. The formula should look like:

latch(onchange(midi.control(1,20)), midi.control(1,20))

where midi.control(1,20) is the MIDI value you're tracking. However, in case you don't know, values this like this will be resetted once you reload the project file. So if you want to pre-program the sources via MIDI and save the values to the project file, you need to select all sources once their values are set and click on the manual icon (the hand) at the bottom. This will unlink the source from MIDI and store the current value.

Arth

unread,
Mar 13, 2019, 3:48:23 AM3/13/19
to Lightjams
Thanks for the Quick reply, much appreciated! I'm not sure that would be the whole solution to my problem, though. I'll try to explain a bit better by giving an example. The MIDI controller is an Akai APC40 mini.

I have two sources (source1, source2), each source "connected" to a button on my MIDI controller (button1, button2). When I press button1, the fader Controls source1. When I press button2, the fader Controls button2.

Example:
- Starting out, source1 and source2 both have the value 20.
- I press button1 and turn up the fader from 20 to 80, effectively setting source1's value to 80. 
- I then press button2 and now I want the value of source2 to stay at 20, until I move the fader back to 20 (+-10 perhaps). 
- What happens instead is that it gets assigned the same value as source1, namely 80, because that's what the fader is set to. I haven't been able to try your solution (the software is on my friend's computer), but if I understand it correctly, in my example it will change the value of source2 as soon as move the fader, setting it to either 79 or 81 right away?

Mathieu

unread,
Mar 13, 2019, 10:12:38 AM3/13/19
to ligh...@googlegroups.com
Maybe you could not press the button 1 or 2 until you've moved the slider to the position you want? In other words, when you press button 1, the source 1 takes the current value of the slider. If you press button 2, the source 2 takes the current value of the slider and source 1 is left unchanged.

In this scenario, the formula for source 1 should look like:

latch(midi.note(1,53), midi.control(1,8))

and source 2:

latch(midi.note(1,54), midi.control(1,8))

where the note 53 is to change the source 1 and the note 54 is to change the source 2 and the midi CC 8 is the slider.

A nice thing is that if you press both buttons (and keep them pressed), both sources will be updated at the same time, which can be quite handy sometimes.

Jürgen

unread,
Mar 13, 2019, 2:19:43 PM3/13/19
to Lightjams
Hello Arth,
for me this would only make sense if you would work with motorized Faders that bring you automaticaly the real value on the slider if you push a specific button...
what to do if your slider is on the highest level and the new/next value is near 0 ........ if you move the Slider only 1 value then the corresponding stored value is overriden ....hope you can feel what I mean.

Jürgen

unread,
Mar 13, 2019, 2:26:22 PM3/13/19
to Lightjams

Calibration.PNG

.....I do this with Chameleon Touch controlled and so I can jump and callibrate my movingheads Positions for Lightjams..

Example: When I Press Button Tilt45° my Movingheads and scanners go atomaticaly to the stored Position and also the two sliders for this Value.....then I can finetune the value to a specific location and it is automaticaly stored

clavaint...@gmail.com

unread,
Mar 16, 2019, 6:10:12 AM3/16/19
to Lightjams
Hi!

I'm Clava, I've been working with Arth (or rather, Arth has been helping me) with this issue and lots of other things. I recently started learning Lightjams and have previously been working with QLC+. 

The idea/setup we are working has a lot of buttons to change what slider certain midi faders should control. All is working well except for the issue Arth is describing.

In QLC+ there is a "catch up" feature which works really great for these type of situations. Basically, it means the midi controller needs to pass by the current value of the selected slider for the slider to react. When using smaller midi pads it comes in very handy and expands both the program and the midi pads.

We've been trying to program something similiar in Lightjams without success, trying to make it compare the current values if the slider and the midi and only react once they match. So far nothing works. 
Any ideas, or a direction we could try, or have we hit a dead end here?

Mathieu

unread,
Mar 16, 2019, 7:50:10 AM3/16/19
to ligh...@googlegroups.com
You can try a formula like this:

latch(midi.note.latest(1)==x+1 & abs(midi.control(1,50)-last) < 5, midi.control(1,50))

Put one source per button, one after another horizontally. You can replace midi.note.latest(1)==x+1 by the midi note for this source if you're not used to variables. Also replace midi.control(1,50) by the CC for the slider.

But unless you don't want to use both hands, you should try the method described in my previous post to update the value when the corresponding button is pressed.

Edit: no shader mode needed.

clavaint...@gmail.com

unread,
Mar 16, 2019, 8:01:23 AM3/16/19
to Lightjams
Thank you, will give it a try in a few minutes. Just got what I think might be a step closer myself with:

switch(midi.note.latest(1, 29, 32), 29, if(slider(21)<=midi.control(1,53), midi.control(1,53), slider(21)), !29, slider(21))

Only works in one direction unfortunately, and using == gives no result at all.

Den lördag 16 mars 2019 kl. 12:50:10 UTC+1 skrev Mathieu:
You can try a formula like this by activating the shader mode on the source:

latch(midi.note.latest(1)==x+1 & abs(midi.control(1,50)-last) < 5, midi.control(1,50))

Put one source per button, one after another horizontally. If you don't want to use the shader mode, replace midi.note.latest(1)==x+1 by the midi note for this source. Also replace midi.control(1,50) by the CC for the slider.

clavaint...@gmail.com

unread,
Mar 16, 2019, 8:07:55 AM3/16/19
to Lightjams
Well, updating it when pressing a button also requires a "do nothing" button along with the others, one that will set the fader to not do anything so I can move it into place. And if I switch between these buttons/faders a lot then it's an extra step which will take time and probably cause fumbling.

Mathieu

unread,
Mar 16, 2019, 8:21:47 AM3/16/19
to Lightjams
If you update only when a button is pressed, you don't need a do nothing button.

With the method you want to use, yes, you need a do nothing button.

Mathieu

unread,
Mar 16, 2019, 8:25:00 AM3/16/19
to Lightjams
Maybe we're confusing terms. When I say a button is pressed, I mean you push it and keep it pressed. No button pressed=do nothing. That why you don't need an extra do nothing button.

clavaint...@gmail.com

unread,
Mar 16, 2019, 8:35:05 AM3/16/19
to Lightjams
Oh now I see, yeah that sounds better for sure. Though the first issue would remain the same if I get it right, e.g. the next time I press the button the physical fader would have to be in the exact same position to avoid any jumping/skipping/notsurewhattocallit, or am I not understanding you correctly?

Mathieu

unread,
Mar 16, 2019, 8:38:24 AM3/16/19
to ligh...@googlegroups.com
That's the thing. You don't press the button until the slider is at the exact position you want! Pressing the button really mean "record the current value". So you move the slider, then you press one or multiple buttons to store the slider's value. That also mean you can store the value for multiple sources at the same time, which can be handy.

clavaint...@gmail.com

unread,
Mar 16, 2019, 9:14:16 AM3/16/19
to Lightjams
But then... Say I just have one fader and two buttons on my midi pad. With button 1 I can use the fader to choose color, with button 2 I can set the intensity. So I record a nice orange with button 1, then I lower the intensity, and then I want to slowly fade that orange into a really nice red. It would mean I have to remember exactly how I set the fader to make the orange, if not it would suddenly just skip colour to whatever the midi is set to now and completely mess upp the cozy atmosphere I'm trying to set up.

I might just have found an answer (Or so I think... we started these attempts about a week ago, so I'm trying not to get my hopes up too much.)

switch(midi.note.latest(1, 29, 32), 29, if(isbetween(slider(21), midi.control(1,53)-5, midi.control(1,53)+5), midi.control(1,53), slider(21)), !29, slider(21))

Seems to be working so far anyhow.

So every source's different sliders will have one global slider each... 

Mathieu

unread,
Mar 16, 2019, 9:23:48 AM3/16/19
to ligh...@googlegroups.com
If you want to fade, why not use the grid fade? Or use the fade function in your formula?

To update the value only when the button is pressed and do a fade, the formula looks like:

fade(1, latch(midi.note(1,54), midi.control(1,8)))


For the formula to do what you wanted first, I gave you the formula. Did you read all posts?

clavaint...@gmail.com

unread,
Mar 16, 2019, 10:21:17 AM3/16/19
to Lightjams
Hmmm... Maybe I need to get used to a new way of working here. I guess my mind is still in QLC+ mode and RGB colours.

I did read the post and tried your formula for a bit (thank you!), but after having previously experimented with a whole bunch of different sliders I got really confused about what was what. Eventually I tried the one I wrote last and it worked without me having to rearrange too much. It is my first workspace that I'm trying to put together and I'm learning programming as I go along, so I'm guessing there will be a lot of things which could have been done smoother in the end. In either case my APC Mini now has a functioning sequencer running on it :D

One thing which I really enjoyed when I first tried Lightjams was the color palette and color systems. It's really neat to be able to put together your own gradients/colors in that way, as well as being able to choose complementary, triad, etc, it really simplifies a lot. 
One request/wish/thought which came up quite quickly as I was trying out the different ways of working with the colors was a simpler way to define your own complementaries and triads. The HSI wheel is definitely scientifically correct, yet aesthetically unsatisfying. I guess Munsen or NCS would be more common when dealing with aesthetics. 
So my hope would be that there at some point in the future would be a simple way to make your own. Say you define a gradient as you do now, and rightclick for complementaries (which then also defines triads) (basically making two gradients simultaneously, to not have to jump back and forth between the two to find the right colors), and to be able to use those definitions on attributes, possibly even in code. 

Thank you for your help! I will try to let you get back to enjoying your saturday now.

Thomas Meier

unread,
Mar 23, 2019, 7:34:02 PM3/23/19
to Lightjams
A bit off topic but was looking for a way to control Lightjams remotely. So Chameleon Touch allows a connection to Lightjams sequences and controls? A search for Chameleon didn't give any meaningful results.

Would you be able to elaborate on this a bit more? Thanks

Mathieu

unread,
Mar 24, 2019, 7:57:35 AM3/24/19
to Lightjams
I think Chameleon controls Lightjams via MIDI. So you can create your interface in Chameleon and link the MIDI messages in Lightjams.

Thomas Meier

unread,
Mar 24, 2019, 9:35:13 AM3/24/19
to ligh...@googlegroups.com
Ok. So that I'm clear are we talking about Chameleon the lighting software i.e. https://download.cnet.com/Chameleon/3000-18502_4-75211028.html as opposed to simply a remote interface app running on say an iPad? 

If yes is this the only way to control Lightjams remotely?

On Sun., 24 Mar. 2019, 10:57 pm Mathieu <mat...@lightjams.com wrote:
I think Chameleon controls Lightjams via MIDI. So you can create your interface in Chameleon and link the MIDI messages in Lightjams.

--
You received this message because you are subscribed to the Google Groups "Lightjams" group.
To unsubscribe from this group and stop receiving emails from it, send an email to lightjams+...@googlegroups.com.
To post to this group, send email to ligh...@googlegroups.com.
Visit this group at https://groups.google.com/group/lightjams.
For more options, visit https://groups.google.com/d/optout.

Mathieu

unread,
Mar 24, 2019, 9:59:09 AM3/24/19
to Lightjams
Sorry, I'm not sure to understand. Why you want to use chameleon the light software to control Lightjams which is so a light control software?

Lightjams supports remote control via midi, osc, artnet and sAcn. So you can control it remotely via another light software.

Mathieu

unread,
Mar 24, 2019, 10:01:59 AM3/24/19
to Lightjams
And this was about Chameleon touch https://hi.computer/chameleon/.

Jürgen

unread,
Mar 24, 2019, 3:52:53 PM3/24/19
to Lightjams
Chameleon (touch) does the same things than a Hardware MIDI-Controller....  its only for people they dont need real Knobs and Faders (like me )


....I like to work with it because I can built my controller with all functions I need

so I like to use Sliders to send Values to relative Grids :(example)... one slider spreads my Movingheads (pan)

but in my case I also work with cantabile and so I am able to store each scene automaticaly with a songstate for my Song (as many as I want)

Thomas Meier

unread,
Mar 24, 2019, 6:08:52 PM3/24/19
to ligh...@googlegroups.com
Thanks Mathieu, yes I didn't want to use another light control software but just couldn't find any reference for Chameleon Touch from hi.computer. Thanks for that. So it's simply an add-on to send MIDI messages to Lightjams which is perfect.

On Mon, Mar 25, 2019 at 1:02 AM Mathieu <mat...@lightjams.com> wrote:
And this was about Chameleon touch https://hi.computer/chameleon/.

Thomas Meier

unread,
Mar 24, 2019, 6:10:28 PM3/24/19
to ligh...@googlegroups.com
Thanks Jürgen, now that I know where to get Chameleon Touch the above makes a lot of sense. Thanks again. Will try this.

--
Reply all
Reply to author
Forward
0 new messages