PDA

View Full Version : Storing Midi CC from an external device as a variable?



subparmusic
11-08-2011, 03:38 PM
Hello! I'm new(ish) to Osculator. I'm using it with TouchOSC, with the goal in mind to control a digital console (DM1000, O1v96, etc...) that transmits and receives Midi CC.

This is easy, but what I have in mind to do is to save the Midi CC data from say, fader 1 on the board to a variable, so that when I change banks on my TouchOSC GUI so that I'm looking at fader 9, the position of fader 1 is stored, and can be recalled when I change my bank back to that fader.

Currently, I have a proof of concept file for both TouchOSC and Osculator, which I've had some "success", but there seems to be two problems:

1) When I create a re-write address (something like OSC routing > TouchOSC /1/fader1 : var[0]) for just the one variable, this works fine. If I create a copy that instead sends argument var[8] to the same place, it seems to change the first re-write address variable index to [8] as well... ? ? ? So instead of having

/1/fader1 : var[0]
and
/1/fader1 : var[8]

it automatically changes to

/1/fader1 : var[8]
and
/1/fader1 : var[8]

2) There seems to be only variable 0-15 available to use... Is it possible to have many more (perhaps infinite) available so that I could set up not only 3 banks of 8 faders, but also EQ and Dynamics variables per channel as well? (This would make variables into the hundreds).

Or perhaps I'm not understanding the concept correctly, and there is a much simpler answer?

I can post the TouchOSC and Osculator files if needed.

Thanks!

camille
11-09-2011, 12:55 AM
Hi,

IIRC, I think I have fixed the Variable event around 2.11-beta8.
You may want to try this version:
http://www.osculator.net/forum/threads/1410-OSCulator-2.11-beta

I would be happy to have a look at your files, please send them to camille at osculator dot net.

About the number of available variables:
I was not expecting such a creative way of using them, so I thought 16 would be enough. If I bump them to 127 variables, I guess that would be enough for your application. However, I am not sure how to make an unlimited number of variables.


Best,
Cam

subparmusic
11-09-2011, 01:58 AM
Thanks Camile, will try. Regarding the number of variables, in my case it would actually be preferable to have an infinite number, as I would not only use it to store fader positions [up to 24], but also compression, EQ, and on/off positions for each fader [up to QUITE a lot]. After I update to the new beta and run my file again, I'll send so that you can have a look at the proof of concept file. I'll send an alpha design as well for what I had in mind.

-------

Using osculator in this way also brings up another feature that I'd like to hopefully see in the future. When I use banks to change the assignments for each fader / control (ie. /1/fader1 now sends to midi cc 9 instead of 1), the only way I know how to do this in Osculator is to use a new preset. Imagine EQ and Dynamics control with 12 different paramaters per channel PLUS aux sends... that starts to add up to a LOT of presets.

The size and scale doesn't bother me, but the fact that if I were to try and save other "hidden" midi cc data (ie. not being shown on this page or preset... like if I were on an EQ page / preset while a fader on the board itself were to move), every control that is sending midi cc data to osculator from the board has to be remapped PER preset. Every fader, every EQ knob, every Dynamics paramater. This is a VERY time consuming process.

If there were a way to only map every single knob / fader / etc... to a variable on one preset, and then mass COPY those messages to every preset, this would be a non-issue. I'd simply have to reroute every control on TouchOSC instead (the easy part).

Of course there could be some other way to do this entire process within Osculator that I haven't thought of yet, and if you can imagine some way, I'd be VERY greatful. The goal is to 'save' midi cc data within osculator so that when presets are changed back and forth, the cc data would 'recall' on TouchOSC per preset. If not, I might just wait until Osculator supports Sysex or NPRN where I can request that data from the console itself.

Many thanks again!

subparmusic
11-09-2011, 02:11 AM
....Actually I just had a 'Eureka' moment...

In regards to mass copy & paste of messages... I could just map everything out to a basic preset, and then save that as a separate file... Then every new preset, I simply import from that one, huh?

Hmm...

I'll send the files when I try it with the beta.

camille
11-09-2011, 04:25 PM
I am considering the idea of using a concept similar to [MIDI] channels for Variables.
With that and 127 Variable, you could store 127 * 16 = 2032 different values. I chose 127 and 16 because it feels natural wtr to MIDI, but it can indeed be a totally different number. Just keep in mind that 127 variables already gives a rather long Value menu.

However I am not convinced that the variables should be used for this purpose. There were initially introduced to give the possibility to construct OSC messages with some arguments coming from other messages. The natural way of recalling a value would be a system to store and recall values (a bit like presets, but not altering the structure of a preset). I have discussed about this issue with several users, and this is on the TODO list.

Now, if the Variables help you do something that is not possible or not convient otherwise (that is without the snapshot system), it's not a problem for me to upgrade their number.

----


Using osculator in this way also brings up another feature that I'd like to hopefully see in the future. When I use banks to change the assignments for each fader / control (ie. /1/fader1 now sends to midi cc 9 instead of 1), the only way I know how to do this in Osculator is to use a new preset. Imagine EQ and Dynamics control with 12 different paramaters per channel PLUS aux sends... that starts to add up to a LOT of presets.

I agree, this is unfortunately the problem with Presets that combine both structural changes (e.g. change the event of a message), versus a concept of Snapshots that would only store and recall messages values. All this has to be refactored in a future version.


If there were a way to only map every single knob / fader / etc... to a variable on one preset, and then mass COPY those messages to every preset, this would be a non-issue. I'd simply have to reroute every control on TouchOSC instead (the easy part).

In my opinion, the solution to this problem would be to allow several presets (or banks as your call them) active at the same time. This would allow you to breakdown your controller into different functional parts. Add to this a set of snapshots for each presets, and you'll be able to do exactly what you want without having to copy all definitions again and again.

By the way I have received your files and report, thank you!

Cam

subparmusic
11-09-2011, 05:36 PM
Thanks so much Camille, I'll be patiently awaiting new features in the updates. I've browsed the forums quite a bit and still find it almost unbelievable that you might be the sole programmer for this. With all the support you provide and prompt updates to user requests, id suspect it should normally take an army of employees to do this!

To perhaps suggest something with the variables, the way I think about saving to variables is that there isnt already a set number of variables available initially, rather, they are created on user request in the program. Ie.

/1/fader1 : var[n]

... At this point variable [n] is created, rather than picked from an existing index. Perhaps is this possible instead? Just a thought.. Also provides an infinite virtual bank. Imagine something like var[fader1] saved as a number value between 0.0 and 1.0? Also makes it less confusing.

Cheers Camille!

wagedu
12-19-2011, 05:29 AM
Hi, after testing OSCulator for a while got so dependant on it that just purchased :) My problem, though, is the same as others mention above: I'm using it to track a Kinect skeleton (15 joints *3 values/joint = 45 values) and I'd like to be able to send all 45 values (variables) in a single message, to be later picked up.
I mean, without the limit of 15 variables, It'd be extremelly easy to create a "Kinect Skeleton tracking template", available to anyone.
I recently wrote a walkthrough to achieve hand tracking on Flash using OSCulator. But if I had no limit to the number of variables, it'd have been the full Skeleton.
I'd send something like /fullskeleton var0, var1, ... var45 and easily track it entirely. Any chance for this to happen?
Thanks in advance :)

camille
12-19-2011, 09:52 AM
This is a good point. In your case, the only way to send the whole message is to use as many variables.
I will bump the total number of variables to 128.

If you would like to use the new build before I publish it (next week), just send me an email (camille at osculator dot net).

Best,
Cam

wagedu
12-21-2011, 09:07 PM
Excuse my delay. Message sent ;)

camille
12-22-2011, 11:29 AM
Reply sent :D