PDA

View Full Version : Ableton Live launch clips with touchOSC (help needed)



gzma
08-31-2009, 11:13 AM
Hi Guys,


Great software indeed!


Maybe this is more of a TouchOSC problem, but maybe you can help. I've added a simple multi-toggle grid in TouchOSC Editor, added it to my iPhone, and hooked up the MIDI map in Ableton to launch clips.


When I click on a clip on the iphone it launches it next in Ableton (as it should) and turns off the other clips, it stays lit on the iPhone for the duration of one loop and then the button turns off even though it is still looping in Ableton.


It seems like it receives a message at the end of the loop to turn off or toggle. Is there a way around this? so that TouchOSC can accurately show which loop is playing.


Many thanks

camille
08-31-2009, 06:23 PM
Hi gzma,


Perhaps you should try buttons that are not toggles.

I am no TouchOSC interface expert, so I can't tell you right away if that is possible, but my guess is that the button is "toggling" at the end of the clip, when it should simply stay enabled.


Cheers,

Cam

gzma
08-31-2009, 08:12 PM
Thanks for the reply camille,


Unfortunately it makes no difference if I use a push button or a toggle button.


This is what I see in osculator returning from live (as OSC Routing). I press the button on the iPhone and a signal of 1.0 is traced and then when the loop reaches the end it traces 0.01 even though it is still looping. This seems to be what is turning the button off.


http://i27.tinypic.com/2wntt8n.jpg


Thanks again

camille
08-31-2009, 10:35 PM
I've tried under Live 7 and Live 8 and I find it very weird too.

Maybe there's a rationale behind this behavior, but I can't seem to understand why it acts like this.

Like you I would have thought the high value would have been kept until the clip stops looping …


Maybe something here but I haven't tried, sorry:

Use toggle buttons in your TouchOSC set, and modify Live Preferences under the "Record Warp Launch" tab, set "Default Lunch Mode" to "Toggle". hmmm …

gzma
09-01-2009, 07:36 PM
Thanks, I tried what you said but it still doesn't work.


I wonder if there is any way of ignoring the 0.01 value, or converting it to 1.0 before sending it back to the iPhone. Is Osculator capable of this? I can't find anywhere to do it.


Cheers

camille
09-01-2009, 09:33 PM
That's a good idea, here's a solution I've tried that works:


make sure you have configured the mappings like you want
switch to the Scalings View.
locate the MIDI message sent from Live, typically something like /midi/cc1/1.
change the "In. max" parameter to 0.007
EDIT: In OSCulator 2.10 instead of 0.007, just use 1. The MIDI values are automatically scaled appropriately.


Now the button will be on during the interval at which the clip is looping.

Best,

Cam

gzma
09-02-2009, 11:46 AM
Hi Camille,


That works a treat! Thanks so much for your help.

Although I don't fully understand why it works. Why does it need to be 0.007?


Many thanks

camille
09-02-2009, 10:44 PM
Hi gzma,


When a clip is launched, Live sends a MIDI value of 127, and when the clip begins looping (but continues to play), the value is set to MIDI value 1.


You have to know that OSCulator internally scales incoming MIDI values to a range of 0.0 to 1.0 to match the convention used by most of OSC applications. This means that MIDI value 1 is internally 1/127 ~= 0.007874.


I will now use OSC scale notation (from 0.0 to 1.0) instead of MIDI (0 to 127) to avoid confusion.


If we make a correspondance between input values and output values, here is what we want :

- when the clip is not playing, Live sends value 0.0: we want 0.0 on output

- when the clip is looping, Live sends value 0.007874, we want 1.0 on output so the button will be on too.

- when the clip is playing the first loop, Live sends value 1.0, we want something at least higher than 1 on output so the button will be on.


That means that the input must be scaled in order to map 0.007874 on input to 1.0 on output. To simplify, we take a number slightly below and "round" it to 0.007.


I hope it makes sense …


Best,

Cam

camille
09-02-2009, 10:46 PM
I should also note that is was easier to find this trick by using the Quick Look window so I can change the values on the fly and test if it is working.

gzma
09-07-2009, 11:14 AM
Thanks for the explanation Camille. All seems clearer now. Keep up the great work!


I have one more question, slightly related. Clicking on record "arm" in ableton 7 doesn't seem to send any output message, so if I arm in Ableton it is not reflected on my iPhone. I guess this is a problem with Ableton not sending all messages. Do you know of any possible work around?


Again, many many thanks.

camille
09-07-2009, 04:23 PM
argh, yes Live doesn't map everything.

Maybe you could look at editing a UserConfiguration mappings file (very useful for drum kits !!!).

Have you already tried that?

Before I go further into details, I will see it that actually works ...

funnycat
10-17-2010, 03:21 AM
That's a good idea, here's a solution I've tried that works:


- make sure you have configured the mappings like you want

- switch to the Scalings View.

- locate the MIDI message sent from Live, typically something like /midi/cc1/1.

- change the "In. max" parameter to 0.007


Now the button will be on during the interval at which the clip is looping.


Best,

Cam


thanks so much.. passed the whole day trying to solve this problem

amazing !

camille
10-17-2010, 11:48 PM
Note that if you are using OSCulator 2.10 you don't need to do the funny division (1/127 ~= 0.007), but you can just enter 1 instead if the assign event is a MIDI CC. This works because OSCulator now displays MIDI values with a range between 0 and 127 instead of 0.0 and 1.0.

lividinstruments
04-11-2011, 10:47 PM
Does this work with note messages or just cc's?

camille
04-12-2011, 01:01 AM
You can surely launch clips using MIDI notes, but I am unsure wether you will have bi-directional communications of the playing status for the clip.

lividinstruments
04-12-2011, 01:24 AM
Yeah it doesn't seem to, but the cc toggle function is working just fine for me.