PDA

View Full Version : Midi controller values?



CarsonDay
07-08-2009, 10:41 PM
Hello all,

First a thank you to Camille for making this awesome software! I was wondering if there is anyway to interpret Midi controller change values in osculator. As far as I can tell, incoming midi data is converted into an OSC style syntax, i.e. midiin/cc93/1. In this example we are receiving the message from midiin, controller change # 93, on midi channel 1. However it seems that Osculator is truncating the full midi message. I would like to be able to access the controller change value as well, midiin/cc93/1/127 where 127 is the value that is being truncated. I think it would be very useful to be able to access that last databyte. Maybe I'm missing something simple and haven't searched deep enough, but as far as I can tell, at this point there is no way to access these incoming midi values. Any help would be greatly appreciated,

thanks!

camille
07-09-2009, 01:24 AM
Hi,


This is a good question. The problem is: would you consider the data coming from a MIDI CC is rather a continuous value changing in the 0-127 range, or is it rather a single event at a particular value? To keep things general, MIDI CC are represented on input the same way there are on output (MIDI CC event).


If you want to know when a particular value has been triggered, there is a way to do that, but it's not pretty:

Select the line corresponding to the MIDI CC input (/midi/cc93/1), and then go in the Edit menu, and choose Demux. Now, change the value of the MIDI input. The message will now be filled with every values it can take on input (max 128 values).


This will "demultiplex" the input, meaning the message values will be represented as discrete events.

As I said, it is not pretty since it produces a lot of rows, and the values are ranging from 0 to 1 will all the numbers in between. If you really need to do that, it will make the trick. If you can give a further description of what you would like to do exactly, I can maybe think about a better solution in the meantime.


Best,

Cam


PS: I can see there is a small bug in the current version (2.8.4) that forbids demultiplex of messages in this specific case. In order to force the demultiplex, you need to duplicate (Edit->Duplicate) the /midi/cc93/1 message, and then delete the second duplicate (the line named "0->0"). Now, select the argument at first index (the line that is named "0"), and do Edit->Demultiplex. I will fix that so you just have to select the /midi/cc line and do "demux".

CarsonDay
10-05-2009, 11:50 PM
Hi Camille,

Thank you for your quick response, please excuse the tardiness of my own. I've finally had some time to sit down and think about how I was hoping to integrate osculator. At the moment I'm using the Native Instruments Maschine midi controller (knobs, buttons, and an 4*4 Pad array) to control an application called Glitch-Sequencer. I've finally got the OSC syntax problems down and am now left with this problem.


I'm sending Midi CC1 from the controller as a variable value (1-127), I would like this midi controller to modulate a volume fader in the application. I'm sending the following OSC message: "/glitch-sequencer/vol (1,[i:arg[0])". I notice that the OSC is being sent successfully and the volume fader changes its value. But unfortunately the volume fader wants to see an OSC message with an integer value from 1-127 and not the decimal 0.0 to 1.0 . I understand how to use the demuxer to get the individual midi values as separate messages but felt it to be very tedious with such a large range of values. Is there some way one could multiply the the i:arg[o] and round to the appropriate values?


I'm soo close! and excited! thanks for your help!

-Carson

camille
10-06-2009, 09:04 AM
Hi Carson,


It looks like you're on the good way!

Well, the solution is very simple: go to the scalings page, and put 127 in the Out Max column at the location of the argument that corresponds to arg[0]. (I guess this is either the first argument of a multi-argument message, or, the only argument of a single-argument message.)


Best,

Cam

CarsonDay
10-07-2009, 02:23 AM
Hi Camille,

That worked out great, thank you! it would have been working before but I had the input scaling ceiling at 127 as well.


One more quick question if you don't mind...Say I'm sending a midi message CC1 to osculator. At the moment I'm translating this message using OSC routing to send "/glitch-sequencer/vol (1,i:arg[0])" the first argument addresses volume 1 and the second relays the 0-127 values from CC1. Is there a way to have the first argument be set by the midi CC number. I've tried using the "i:arg[#]" and "i:var[#]" in differing ways to try and achieve this but unfortunately haven't quite figured it out. There are only 8 volume faders in the application so I'm happy to manual insert those; But there is a 16*16 grid i would like to map to as well and would rather have one OSC message to map them all to and not 256 individual messages.


Thanks Again,

Carson

camille
10-07-2009, 10:18 AM
Ah, this is a good question. The answer is no, not for the moment.


The idea would be to change the format of the /midi messages. We would have then something like
/midi/cc <channel> <cc> <value>. The problem I see right now is that it would break compatibility with other users, but that could be a nice option to have.


By the way, if you had a 256 element grid, you would need to use another channel. Would that work for you?

CarsonDay
10-07-2009, 06:42 PM
Thats good to know and yes it would be nice to have that functionality. It would really cut down on the amount of time needed to create large patching presets. In the mean time I'll just have to bite the bullet and write out the messages individually :)


I have a template for my controller built using midi cc's 0-127 on midi channels 2 and 3 to to obtain the 256 values. In this case the midi is being interpreted as a binary value with values of 127 equaling 1.

as always thank you!

-carson