saving OSC values from TouchOSC?

396 views
Skip to first unread message

o865324

unread,
Apr 7, 2019, 7:02:03 AM4/7/19
to Lightjams
I'm experimenting with using TouchOSC to set intial XY positions for mover heads, so that I can set 5 base positions within 2 or 3 minutes on a gig. I have a grid in "absolute mode" for each base position, using Power sources linked to OSC values for pan and tilt. All my movement grids then use relative positioning.

I don't manipulate Lightjams itself on the gig as I only have a tiny screen attached to the PC just to see general status. Everything is done via ipad/android or MIDI controllers.

Same issue as I raised on this thread. https://groups.google.com/d/topic/lightjams/BI9SphyxLeM/discussion. That thread ended up solving a different problem with the fantastic relative mode!

The problem with TouchOSC is that the received OSC values in LightJams do not survive a restart of either the TouchOSC app, so if I have to quickly restart for any reason during the gig then I lose all the values that TouchOSC has sent. TouchOSC does not seem to have a way to "resend all values" which would partially solve the problem.

Wonder if it would be possible to save current values within LightJams? Perhaps an option on the OSC "Input Mappings" screen for each entry mapping to save state?

Or is there other software that works on iPad and Android that will save and send all values states? Ideally I'd also be able to recall saved states, which would give me default values for different venues and layouts.

Any other ideas on setting values quickly and repeatably using a tablet/phone?

Cheers.








Jürgen

unread,
Apr 7, 2019, 8:10:03 AM4/7/19
to Lightjams
Hi.... I thought you use Cantabile also.... so you can comunicate with the OSC-VST Plugin and that is always saving the values

Jürgen

unread,
Apr 7, 2019, 8:11:53 AM4/7/19
to Lightjams
......so I start the VST-Plugin for Positioning my heads in my Background-Rack and so it is always there and works fine

o865324

unread,
Apr 7, 2019, 8:28:33 AM4/7/19
to Lightjams
Thanks Jurgen. I'd need to run 2 instances of the VST as I have more than 64 values. I havent tried it, but assume that isn't a problem?

I'd then still need to get the values from x/y pads on android or ipad into Cantabile and then onwards to Lightjams, and it all gets unwieldy.

Last time I tried this I ended up using dummy gain sliders in a C3 rack to store the values for each head for each position. But again, it gets very complicated.

Mathieu

unread,
Apr 7, 2019, 9:27:17 AM4/7/19
to Lightjams
No problem to have multiple vst plugin instances. To have different OSC addresses per instance, duplicate the plugin's dll file and config file. Then edit the config files to have a different address prefix per instance.

Jürgen

unread,
Apr 7, 2019, 9:28:36 AM4/7/19
to Lightjams
no problem ...i mean at maximum you can have 512 Values ...makes 8x64 

so you can open up 8 VST#s and use al values 



I had it very complicated but with this solution it is very easy...

you need no dummy sliders

o865324

unread,
Apr 7, 2019, 9:35:23 AM4/7/19
to Lightjams
Thanks Mathieu, Thanks Jurgen.

Jurgen, how are you setting the values of the VST knobs in C3?

Scenario:- arrive at the gig and set up. Lights go somewhere different from last time, so need to set the values for "Front, Sky, Audience, Band, Singer. This time some moving heads are on the floor, not on a stand, so need a different base position to last time. The 5 positions need to be set in 2 or 3 mins max?

I have 8 movers grouped into 2 blocks of 4, so for each position I set x,y for 2 blocks, and a H and V spread which opens or closes the beams.


Jürgen

unread,
Apr 7, 2019, 9:50:37 AM4/7/19
to Lightjams
but I think I have a different solution than you want to try..... in my case I only use the VST with one Preset and this is Everytime the same


what I save in the VST are only Tilt and Pan values for different constelations 

the end Position in my case are the GRID's that combines this Values

the advantage of this workflow for me is that I can use thi grids easy for Sequences


in-out1.PNG

Jürgen

unread,
Apr 7, 2019, 10:00:43 AM4/7/19
to Lightjams
i have a corresponding Page in my Touch controll to calibrate this values.....

my Heads are always standing 4 in a row (Hydrabeam ) ...so it is not so complicated

and i only have relative Grids to give a offset -balance 
Calibration.PNG

o865324

unread,
Apr 7, 2019, 10:14:12 AM4/7/19
to Lightjams
I think I am back to my original question:- I want to use an Android or iPad device to set the X,Y for each position grid as that is quickest workflow. I want to go directly into Lightjams via OSC, not via Cantabile as it is too complicated.
I have a 6 page TouchOSC that lets me set this up in a couple of minutes and I can do this from the front of stage where I can see the effect of the lights, without having to be looking at my lightjams PC. The problem is making these settings persistent and recallable, and to be able to "send all values" on demand.

I think that either I need to find some tablet software that can save values, or ask Mathieu whether he'd consider adding support for persistent values in Lightjams.

Lemur can probably do it but seems quite complicated to get started. I'd got my touchOSC layout working within an hour. Is there any other controller software worth considering?




Jürgen

unread,
Apr 7, 2019, 10:18:39 AM4/7/19
to Lightjams
this is the grid that will be activated when I hit the red Button in the Touch controll


then this Grid is on Top and I can choose the real values ....



Example: I go to 10° and the heads go to this position now I can set the new value for 10°

then I go to 'audience' and the tilt value was hold and I can choose the target for PAN 

the values goes directly to the VST but It looks better with the Touch controll than the small Values on the plugin




Calibr.PNG

Jürgen

unread,
Apr 7, 2019, 10:23:37 AM4/7/19
to Lightjams
this way to work is only with states of cantabilke to realize..

for a direct way you would need a x/y Pad for each value

 .....makes no sense for me

Jürgen

unread,
Apr 7, 2019, 11:25:32 AM4/7/19
to Lightjams
little Vid...
Controll.mp4

o865324

unread,
Apr 7, 2019, 11:45:56 AM4/7/19
to Lightjams
Thanks  - do you have just the 1 grid in Lightjams that sets the position using the VST? or do you have separate 10deg, 20deg, 30deg grids?

isaac

unread,
Apr 7, 2019, 12:03:53 PM4/7/19
to Lightjams
Maybe you could use the record or gmem (or even sliders) functions to store your values?

You could have a button that saves each state and then you could have another button that switches from the 'live' input of TouchOSC or stored values that would be persistent if you reboot LJ.

Jürgen

unread,
Apr 7, 2019, 1:19:43 PM4/7/19
to Lightjams

this grid is only to calibrate all positions on one site


for the rest i have one mastergrid and then linked grids for pan and grids for tilt

also grids with links to this grids 

see pic

all moving devices are in this grids
the same i copyed for my overrides 

....that is only my way to work....maybe there is a better way but the result for me is FUN :-)
heads pos1.PNG
heads pos2.PNG

Jürgen

unread,
Apr 7, 2019, 1:32:11 PM4/7/19
to Lightjams
Here is the grid (linked) with my 8 heads and  2 Scanners



....for the future i planned two sources for the right and the left  Hydrabar 
but at the moment for me was important that it works

I have 2 Years before I planned to do gig's ....at the moment it is ((( only ))) a hobby 
heads pos3.PNG

Jürgen

unread,
Apr 7, 2019, 2:00:47 PM4/7/19
to Lightjams
But it is important to say that the system is only working with cantabile !!!!!

all combinations of positions and colours, strobes,remote for elm, moves and manipulations are stored in Cantabile states ......so each complex scene is a state.

For each case there is a embedded Rack to store the settings on the fly......


so when i press a registration on my Yamaha Genos automaticaly there is a Lightpreset linked to it.......

Presets can choosen from the pool of old .....or i make a new preset...




so say I have a song with a new state and change the preset to "Rock A01" then i can modyfy it also on the new state without saving explicit 
....settings in state behavior are intelligent   :-)


.....or Save as new preset

all Presets that never should changed anymore I have Locked 
heads pos4.PNG

o865324

unread,
Apr 7, 2019, 2:22:38 PM4/7/19
to Lightjams
Thanks for the explanation, I think I understand what you are doing.

Isaac, I could use gmem and grecall but that will consume most of the available slots, and add another layer of complexity.

I've found that I come back to Lightjams and update the project every few weeks or months. Every time I use gmem(3) or slider(4) in a formula I have to go back and work out what it did! Trying to simplify as much as possible. The notes feature is helping.

I want to be able to use Lightjams to do what it is designed to do and be as standalone as possible without relying on Cantabile. So I'd really like to be able to do this via OSC straight into my position grids.



o865324

unread,
Apr 9, 2019, 4:56:29 PM4/9/19
to Lightjams
I looked into gmem and according to another thread these values are not saved into the project.

How about it Mathieu? Anything you can do to make this safer on a gig by being able to make values persistent?

Jürgen

unread,
Apr 9, 2019, 5:29:52 PM4/9/19
to Lightjams
I use two instances in cantabile and the Values are automaticaly stored in the VST...

Everytime I open Lightjams and Cantabile I get my Values... so I did'nt understand what you want to store?

Jürgen

unread,
Apr 9, 2019, 5:33:40 PM4/9/19
to Lightjams
....the plugin after starting Cantabile  all Values are stored
Saved.PNG

o865324

unread,
Apr 9, 2019, 5:37:02 PM4/9/19
to Lightjams
My values are not in Cantabile, They are in Lightjams.

TouchOSC->Lightjams

I don't want to store values in Cantabile.

Mathieu

unread,
Apr 9, 2019, 6:26:24 PM4/9/19
to Lightjams
OSC values could be saved into the project file. I'm just wondering whether this should be an option or if it's good for everyone. It would add about 2KB to the project file.

o865324

unread,
Apr 9, 2019, 6:34:11 PM4/9/19
to Lightjams
Thinking about it, could the OSC values be saved into a separate file? So perhaps "File->Save OSC values", "File->Save as OSC values" and "File->Load OSC" values with a file picker?

o865324

unread,
Apr 9, 2019, 6:50:54 PM4/9/19
to Lightjams
My use case is:- I could save OSC values for each venue, so that next time we go there, I can recall OSC values file for that venue and just tweak it. This is a separate activity from saving the project file.

If the OSC file are XML, then I'd possibly be able to cut down the file so that only the OSC values relating to the moving heads are loaded back in?

Also, if the project could optionally load the last used values file that means unattended startup at the gig. This is a nice to have though!

Mathieu

unread,
Apr 9, 2019, 7:17:35 PM4/9/19
to ligh...@googlegroups.com
Ok, well, something doesn't feel quite right. I'll keep this in mind but I'm not sure this is the way to go. If you think about it, initially, you wanted to restore the OSC values when the computer crashes. But this isn't going to work since the OSC values would need to be saved right before the computer crashes. I guess ideally, the controller like TouchOSC would be the one sending back all latest values.

For your scenario about saving OSC values to a file and being able to load the files back, you'd end up with an out of sync TouchOSC. So it's not really a good option.

o865324

unread,
Apr 9, 2019, 7:37:20 PM4/9/19
to Lightjams
A couple of different scenarios I'm trying to cover.

For recovery,
After setting the values at a gig I'd save the osc values. So if I need to restart I could load up from last saved.

I'd expected to configure osc out back to touchosc from lightjams so that it was always in sync. Admittedly I haven't tested this yet.

isaac

unread,
Apr 9, 2019, 8:23:55 PM4/9/19
to Lightjams
I think being able to save  the OSC values to the project file is a good idea, but in my opinion it should be optional if it does get implemented.

For example, I have an installation that is blacked-out when Lightjams starts until it receives an OSC value that triggers specific patterns. That would mean if I want to save my project file, I would have to make sure all the OSC channels are at 0 before saving.

On the other hand, I once had an installation where the Master Intensity was linked to an OSC channel. Every time I started LJ, it would be off, but I would have liked to be able to save the value at 100, so I didn't have to manually raise the Master Int every time.

Just my two cents

Mathieu

unread,
Apr 9, 2019, 8:57:05 PM4/9/19
to ligh...@googlegroups.com
>>  I once had an installation where the Master Intensity was linked to an OSC channel. Every time I started LJ, it would be off, but I would have liked to be able to save the value at 100, so I didn't have to manually raise the Master Int every time.

Interesting! Maybe there could have been a grid that when activated the first time, it would send a OSC value to LJ (via the osc.send function). Something like: if(grid.onActivated, osc.send(0, 100), 0). 

This might even be a nice trick to initialize the OSC values to what you want at startup. The osc.send can send many values, so you can set all initial OSC values.

Mathieu

unread,
Apr 9, 2019, 9:10:12 PM4/9/19
to ligh...@googlegroups.com
I've tested it and it's working great. In the OSC output configuration, click the Extra outs button. Then set the first channel address to /lj/osc/0. The OSC output port needs to be the same as the input port.

You then create a grid named "osc init" and use one source with this formula:

if(grid.onactivated, osc.send(0, 0.1,0.2,0.3,0.4,0.5,0.6),0)

That means when you'll load this project file, the OSC values 10%, 20%, 30%, 50%, etc. will be sent from LJ to LJ. 

Jürgen

unread,
Apr 10, 2019, 1:04:18 AM4/10/19
to Lightjams


I don't want to store values in Cantabile.


I dont understand why? .....because you have nothing to do only to open the VST in the Backgroundrack and all is automaticaly saved on the fly 

Isn't it possible to connect OSC Touch with the Plugin in this situation?.....I have not tested it


o865324

unread,
Apr 10, 2019, 7:02:51 AM4/10/19
to Lightjams
I'd need to have this flow

Touchosc > touchosc bridge > Cantabile midi port> Bindings > lightjams vst > lightjams

And then the reverse flow to get the values back out to touchosc. I'd have to map each osc value to a midi cc or note.

Yes I could do it this way, but I'd rather not have the complexity.

Mathieu, that osc send trick will be useful thanks.

Jürgen

unread,
Apr 10, 2019, 2:40:29 PM4/10/19
to Lightjams
OK...now I understand what you want to do.


Jürgen

unread,
Apr 10, 2019, 2:53:06 PM4/10/19
to Lightjams
It is not able to save the mems but it is able to save the values of a source....

if you store a grid with only a source with no connection (midi/osc) then the value is stored

maybe you can use this and read out the value of a grid position (x/Y) with another osc-Linked Source

o865324

unread,
Apr 13, 2019, 5:15:24 PM4/13/19
to Lightjams
Hey Mathieu, do you think you'll add anything to help in this area? Would just like to know before I spend the time looking for workarounds.

Mathieu

unread,
Apr 13, 2019, 8:26:01 PM4/13/19
to Lightjams
I don't think I'll add something special. Why not use the trick to send OSC from LJ to LJ? Use this to send the default values you want when reloading your project.

o865324

unread,
Apr 13, 2019, 9:22:54 PM4/13/19
to Lightjams


Why not use the trick to send OSC from LJ to LJ? Use this to send the default values you want when reloading your project.

The "default values" are not there in a grid that I can send out when reloading. They are stored in Power source and OSC values - that is the whole problem!

Let me try and describe the issue with a bit more detail.

I am trying to quickly and safely set moving head positions.

I am playing in a band that will go to a different venue for every gig. We typically have 45 minutes to set up the whole band including lights and PA. There is usually not much space to set up the movers so sometimes they go on the floor, sometimes they go on a stand, sometimes they are at the back of the stage, sometimes they are at the front of the stage.

I have 6 base positions I need to save Pan and Tilt values for. They are Stage, Audience, Up, Down, Banner and Singer.

I group the 8 movers into 2 groups of 4 so for each base position I need to store 8 values - pan, tilt, hspread, and vspread x 2 groups. That is 48 values. There are 8 power sources on each grid mapped to OSC channels. That is 48 power sources. Here is one grid.


I need to be able to configure the 6 moving head positions within a couple of minutes. The lightjams PC has a tiny monitor attached to it, just to make sure that it boots properly, and is tucked away in a small mobile rack under my piano. I can't really manipulate Lightjams in any great detail.

So I have configured 6 pages on TouchOSC on my phone, one for each base position, and each page with a button that activates the relevant position grid. This lets me very quickly remotely set all 6 base positions and check that I'm not blinding the audience too much.

The problem is those power sources on the grid are not persistent, so as long as the PC or LightJams does not need to be restarted then I'm ok. But if it does then I have to go through that setup again. This PC is is also running my Piano vsts. There is no "send all" feature from touchOSC to reset the values. This is the biggest problem I am trying to solve.

To summarise - the 6 base positions are transient and do not survive a restart, which gives me a risk on a gig. I can work around it using 3rd party software and more complexity, but I do think it should be solveable using just LightJams? I can see a couple of other threads asking the same sort of question.


Mathieu

unread,
Apr 14, 2019, 7:11:08 AM4/14/19
to Lightjams
Ok,for this scenario, optionally saving all osc values in the project file would be useful. It won't be saved to an independent file and editable via xml though.

Mathieu

unread,
Apr 14, 2019, 7:15:08 AM4/14/19
to Lightjams
You also need to be able to save the project after positionning the moving heads. Will you be able to do so or you just have access to TouchOSC?

And when loading the project back, TouchOSC will be out of sync.

o865324

unread,
Apr 14, 2019, 7:25:17 AM4/14/19
to Lightjams

On Sunday, 14 April 2019 12:15:08 UTC+1, Mathieu wrote:
You also need to be able to save the project after positionning the moving heads. Will you be able to do so or you just have access to TouchOSC?

Yes I could hit save on Lightjams. Even better would if if you could expose a formula that I could map to button on TouchOSC that did a file save?

 

And when loading the project back, TouchOSC will be out of sync.


I could live with this. But I'm intending to set up OSC out from Lightjams to go back to TouchOSC. So that when the project is reloaded it sends all the values back to TouchOSC.

Mathieu

unread,
Apr 16, 2019, 3:00:30 PM4/16/19
to Lightjams
The new save OSC values option is now in v537  - https://www.lightjams.com/history.html. Let me know if it's useful.

o865324

unread,
Apr 17, 2019, 3:11:08 AM4/17/19
to Lightjams
Brilliant, thank you Mathieu, seems to work.

I'll gig with it on Saturday.

o865324

unread,
Apr 28, 2019, 2:30:36 PM4/28/19
to Lightjams
I'm finding this very useful - it means Lightjams starts up where I left it, without needing to send a load of initialisation parameters. It means that if I don't have Cantabile running, or TouchOSC, or anything else then I can still work with LightJams using the last values.

Thanks Mathieu - another really helpful feature.

o865324

unread,
Sep 14, 2019, 1:58:03 AM9/14/19
to Lightjams
Hi Mathieu, this has been working well - I can get to a gig, set my moving head base positions in about 2 minutes using TouchOSC, and if I don't have time to do that, then I already have the last saved positions which load up with the project.

I am using about 100 OSC channels to store all the positions.

Next thing is to set up OSC out, so that when I activate a grid then it sends the current value of each of those channels (once) back out via OSC. TouchOSC will receive these messages and reflect the proper values in the buttons and sliders.

The reason this is useful is that if I am setting up for a gig, and reloading the last gig's settings, then I might want to make a small adjustment to the base positions. However when TouchOSC loads it doesn't know the settings so the sliders are all at 0 position. I'd like to be able to "load" the current OSC values from LightJams so I can nudge the sliders along without starting from 0.

Is there a way of doing this? Is there a way of sending a value back to the input channel?

I can only map 64 OSC outs, even though the help page says I should be able to map 512?

Cheers.


Mathieu

unread,
Sep 16, 2019, 9:01:11 AM9/16/19
to Lightjams
I think I could  add two things: OSC feedback (sending the received OSC message back to the sender to confirm its reception) and then add an option to send all OSC values to the mapped addreses using the OSC feedback settings (port+network adapter). 

However, what happens if you start TouchOSC after Lightjams? Then TouchOSC is also out of sync. You'd need a button to force LJ to send all OSC values.

There are quite a few things to think about and some edge cases may not be covered...

Mathieu

unread,
Sep 16, 2019, 9:43:33 AM9/16/19
to ligh...@googlegroups.com
Ok, maybe that is a better idea: what if you could define an OSC address in LJ that when a message is received it sends all OSC values back to this IP address. Basically, that means you could add a button in TouchOSC with this special address and when you press it, LJ would send back all OSC values to TouchOSC.

But LJ would send only the mapped OSC values since sending all 512 values makes little sense. So it depends how you've configured TouchOSC addresses. Have you mapped addresses in LJ or is TouchOSC sending to the default /lj/osc addresses?

o865324

unread,
Sep 16, 2019, 10:55:46 AM9/16/19
to Lightjams
Yes I have Mapped every address in LJ.

The button in TouchOSC to "refresh values" would be perfect.

Is there any scenario where sending all mapped values wouldn't be ideal? eg. toggle buttons? I assume sending the refresh wouldn't actually toggle a button in TouchOSC would it?

Mathieu

unread,
Sep 16, 2019, 11:04:16 AM9/16/19
to Lightjams
I'm not sure, but probably that TouchOSC would update everything based on the received values from LJ, even toggles. 

Can you send me your project file so that I can see your mapping and confirm that it will work?

isaac

unread,
Sep 16, 2019, 11:56:54 AM9/16/19
to Lightjams
I also think TouchOSC would update everything including the toggles, but I don't think it would 'invert' your toggles (if that is your concern), meaning they should stay in the correct 'state'.

Also to use this 'potential' new refresh feature, I think you would have to open TouchOSC first, then reload your LJ project with the stored values to correctly update everything. Otherwise, if you open TouchOSC after reloading your LJ project, won't it it send all 0's to LJ and the refresh feature would just send back 0's to TouchOSC?


o865324

unread,
Sep 16, 2019, 12:06:48 PM9/16/19
to Lightjams

I also think TouchOSC would update everything including the toggles, but I don't think it would 'invert' your toggles (if that is your concern), meaning they should stay in the correct 'state'.


Correct - that was my concern.


Also to use this 'potential' new refresh feature, I think you would have to open TouchOSC first, then reload your LJ project with the stored values to correctly update everything. Otherwise, if you open TouchOSC after reloading your LJ project, won't it it send all 0's to LJ and the refresh feature would just send back 0's to TouchOSC?


TouchOSC doesn't send anything when you open it up. It only sends values after you update a button or slider. So no issue here.


Mathieu, will LJ send the refreshed values to broadcast or a specified IP? Having the option to specify either would be helpful, and so would being able to specify a dns name instead of an IP.

Mathieu

unread,
Sep 16, 2019, 12:45:55 PM9/16/19
to Lightjams
Just tested with TouchOSC, and it's working. TouchOSC doesn't send all values when starting. So you can press the button requesting LJ to send all values at any time. Also confirmed that all controls update to take the values sent by LJ.

o865324

unread,
Sep 22, 2019, 6:46:58 PM9/22/19
to Lightjams
Yes tested this now, and I have a button on TouchOSC that "refreshes" all the TouchOSC with the current values from LightJams. Perfect.

Thanks Mathieu for another great feature.
Reply all
Reply to author
Forward
0 new messages