HOW-TO: iPhone TouchOSC + Pure Data + Ableton Live
Jun/0954
After I posted a YouTube video and this blog demoing TouchOSC controlling Ableton Live I received a lot of messeges from people having trouble figuring out how to get it working. All of the resources to do this are available at http://hexler.net/touchosc, but this is how I got it working on my PC, step by step.

TouchOSC (pic borrowed from http://hexler.net/touchosc)
Let me give you a brief intro into what TouchOSC is, in case you don’t already know; TouchOSC is a nifty little iPhone app that is basically just a bunch of buttons and sliders. Okay, not that exciting on it’s own, right? However, when you link TouchOSC to another app called Pure Data (which is free open source software) you then hold in the palm of your hand a powerful MIDI controller akin the very pricey Jazzmutant Lemur.

This is the Jazzmutant Lemur, $1770.00 USD
Why is this cool? Because the Lemur is pretty awesome, but it costs nearly two grand. This setup will cost you about 3 dollars. Granted, you do need a software or hardware device to actually control via MIDI (this would also be the case with the Lemur), and while Ableton Live is not free, there are free applications out there you can easily use in place of Ableton Live.
TouchOSC uses your iPhone’s wifi connection to send data, so it is wireless MIDI controller! As with any ‘controller’, this does not make it’s own sounds. It simply ‘triggers’ another piece of software or hardware to make sounds.
Okay, enough small talk…
STEP 1 – TouchOSC
Install TouchOSC on your iPhone. It is a $3 dollar app (if I remember correctly) that you can buy and install from the app store on your iPhone (no jail breaking required). This is easy enough; just go to the app store, search for ‘TouchOSC’ and buy it. Try and resist the urge to play with it just yet, as it does nothing useful until we get all of our ducks in a row in the following steps.
STEP 2 – MIDI Yoke
MIDI Yoke creates several ‘virtual’ MIDI input and output ports on your computer. Think of it as a set MIDI patch cables that connect various pieces of software together, just like real MIDI cables connect hardware devices together. Go to http://www.midiox.com/myoke.htm#Download and download & install MIDI Yoke. You will probably be asked to reboot, and this is one case where you really should reboot or the ports may not appear on your system. Just remember to bookmark this page first so you can get back to this tutorial!
STEP 3 – Pure Data
Now, the end goal here is to control Ableton Live with TouchOSC, but there is a sort of ‘middle man’ that takes the data that TouchOSC sends over your wifi network and converts it to MIDI data that your software (or hardware) can work with. This is where Pure Data comes in. I won’t go in to any more details about what Pure Data is/does. You can read up on their website www.puredata.info if you care to learn more, but it is not necessary to understand it. Pure Data simply needs to be running on your computer with the proper file opened within it for this to work.
Go to http://puredata.info/downloads and download the version of Pure Data for your operating system (Windows XP in my case). Install Pure Data on your system.
Also be sure to get this file: http://hexler.net/pub/touchosc/simple-midi.pd, which is the layout mappings for Pure Data that correspond to the Simple layout in TouchOSC.
Once Pure Data is installed run ’simple-midi.pd’. This should open up in Pure Data and look like this:

At this point your may be getting an idea of what Pure Data is doing. These layouts you see above correspond to layouts that come bundled in TouchOSC, and this is sort of like the set of ‘rules’ for how your PC will interpret what TouchOSC sends.
STEP 4 – Making Them Talk
We’re almost getting down to business, I promise! We just have to get TouchOSC ‘talking’ to your computer now. So open TouchOSC on your iPhone.
Under ‘Network’ it will say ‘Not configured’. Click this so we can configure it! Now, maybe you will be lucky enough that TouchOSC will detect your computer running Pure Data and you can just click on that if it pops up. Mine didn’t. In this case you will need to know the IP address of your computer. You can find this by going to START>RUN and typing ‘cmd’, and then hit enter. This opens the Windows console, from here type ‘ipconfig /all’ and hit enter:

You will see a bunch of info, and your IP address will be listed in there [red arrow]. Enter this number as your ‘Host’ in TouchOSC (192.168.1.100 in my case). For ‘Port (outgoing)’ enter 8000, and for ‘Port (incoming)’ enter 9000.
When your all done tapthe ‘<TouchOSC’ botton in the top left to return to the main screen.
Now you must select the layout for TouchOSC that corresponds to the one you opened in Pure Data. In this case choose the ‘Simple‘ layout, because that corresponds to what we are using in Pure Data. Once again tap ‘<TouchOSC’ to go back and you can now tap ‘Done’ in the top right. You should see something like this:

If you don’t see this and got an error message instead, double check your TouchOSC configuration and also be sure that you have the ’simple-midi.pd’ Pure Data layout open on your computer! If your still not having luck your firewall or router may be causing problems. Either disable the firewall (not a good idea long term since you leave your system vulnerable) or read up on how to open port 8000 and 9000 across your local network (sorry, this is beyond the scope of what we’re doing here).
So this is getting exciting, your iPhone is looking a bit like the Lemur finally! Now, watch the layout window in Pure Data as you slide and press things in TouchOSC. They should be moving in Pure Data too!
So finally we must set the MIDI I/O in Pure Data to use the MIDI Yoke ports you installed in Step 2. All you have to do is go to ‘Media’ > ‘Midi Settings’ and choose ‘MIDI Yoke 1′ for both your MIDI input and output ports, then hit ‘ok’.

Step 5 – Setting up Ableton Live
Okay, by the end of this step you will be ready to make music! Open up Ableton Live and go to ‘Options’ > ‘Preferences’ and click ‘MIDI Sync’. From here turn on ‘Remote’ for the MIDI Yoke 1 input and output ports, then close the preferences window.

Move some sliders on TouchOSC and you should notice the MIDI activity indicator in Live (red arrow below) flashing. This means that Live is receiving MIDI data!

Now all that is left to do is map the MIDI commands to whatever you want them to do in Live. Do this by clicking the ‘MIDI’ button in the top right area in Live, near the MIDI activity lights.

Notice that things turn blue-ish, this means that you are in MIDI mapping mode. Now you can click on any blue button or slider within Ableton Live and then move any button or slider in TouchOSC and you should notice that Live automatically detects what you just did and maps it! So now just ponder on how you want everything to be mapped about in Live and then set it up by repeating this for each button, slider, etc… When finished simply click the ‘MIDI’ button again to return to normal mode and you can now control Live with your iPhone! Now go load some sounds and make music! :-)
Final notes:
1) I had hoped to supplement this with video material, but I have already burned through my Sunday afternoon just putting this together. Let me know if anything here is not clear or if I got anything wrong.
2) It’s also worth mentioning that you can also receive MIDI with TouchOSC to do some neat stuff, but I have not messed with that nor do I know how to go about setting up something like a pattern sequencer where you see the play head running across TouchOSC. That would be very cool though, so if YOU know how to do that please post a comment or point me to more info! :-P
3) This is NOT the only way to do this. You can use MAX/MSP (commercial equivalent of Pure Data) or OSCulator (for Mac). So this is just one way to do it and maybe not the best or easiest way, but it’s how I did it, and it works great!
4) I assume you know how to do other stuff in Ableton Live, like import samples/loops, and despite touching on midi mapping, you probably are already well versed in that if you’ve used any controller with Live before.
5) Does anyone know how to use the X-Y axis controller with-in Live using this setup? The method above does not seem to map the X-Y controller properly.
Good luck and happy jammin!
10:54 AM on July 2nd, 2009
hi, any news about the xy thnig? it’s simple on MAC & osculator, you just need to block y when moving x and reciprocally, but I’m on windows, it must be the same, manage to block one coordinate but I’m unable to understand PD implementation …
3:37 PM on July 2nd, 2009
I’ve heard that you do it on windows by mapping it in live, and it picks up one axis, then hit undo, when you map it again both X-Y get mapped. Again, just hearsay, so if you verify please let me know. I will getting around to trying the latest beta version here shortly and I’ll make it a point to verify this. It sounds funky but I believe it is something like this.
5:04 PM on July 7th, 2009
It’s working perfect with the undo-method as described above. If you map the first of the axis-parameters then Live assigns a CC number to it. If you choose undo, then Live assigns a CC number (original number minus 1) to this first parameter and the next axis-parameter will be assigned the original CC number. I.e. first mapping: X-axis-parameter gets CC 45 -> undo -> X-axis-parameter gets CC 44 -> second mapping: Y-axis-parameter gets CC 45. Voila…
6:25 AM on July 8th, 2009
Hey Gadget Cracker,
Fantastic tutorial, worked like a charm, although as a suggestion with my setup i had to turn of “output to midiyoke ch1″ to stop a midi feedback loop that was being created…. Although i have a problem…perhaps u or someone reading could help
Gig situation + No wireless network + PC win xp
Current setup is Ableton + Pure Data + TouchOSC
everything works fine when i have a wi-fi network to connect to, but is there a way i can connect wired? of failing that i have a jailbroken itouch, i don’t mind using 3rd party, however i really wanna use TouchOSC live, is there a work around?
Obviously being PC format i don’t have much needed apple “airport” function.
10:54 AM on July 8th, 2009
Ive just finished building a native midi remote script for ableton live so that an osc bridge isnt needed. It also supports xy controllers properly. If you move left and right it will only send x axis data, then moving up and down sends y axis data, allowing you to map both controllers independently in Live.
http://monome.q3f.org/wiki/TouchOSC
for more info
7:24 AM on July 9th, 2009
Hello Everybody
I have windows + iphone2, and everithing is working with the touch osc . (I use puredata normal layouts)
My probleme is: I make my own touchosc layout with the touchosc-editor-1.0-win32 and I copy the index file to the right iphone`s folder. Next step I try to use, and Its not working properly, because the pure data layouts information is not the same of course. Please, when somebody know how to make my touchosc`s pureda layout, or when somebody know somebody, who know how to make puredata layouts, please tell. Finally, when this problem was fixed to mee, this TouchOSC stuff is the best controller ever! Thank Your help. Have a nice week.
6:13 PM on July 10th, 2009
Clayton, there’s a brandnew version of the win-editor (1.1) available from the hexler site. Maybe it solves your probs. It solves mine because i couldn’t open any template file nor save it. Rob mentioned something about probs with the latest Java Runtime on Win.
11:45 PM on July 19th, 2009
all right i couldnt i did everything…. but still not working idk maybe cause im using a router?…… maybe i have to unblock the port 8000 and the 9000? could please help me out with that…. if is not that wat im doing wrong?
11:04 AM on July 21st, 2009
Jason, please give more detail about what your doing and what problem your having.
5:35 PM on July 23rd, 2009
all right i did everything like the tutorial said but when i try to use it with ableton it Doesnt i mean the ableton do not detect de midi signal from the touchosc
4:10 PM on July 27th, 2009
Did you turn the MIDI Yoke channels in Ableton that you used in PD? They must be selected as ‘remote’ channels in Ableton.
9:42 PM on August 22nd, 2009
I am using Pd + Live on WinXP, and when mapping the xy pad, the “map & undo” method that Vaikl suggests does not work for me. However, it is pretty easy to disconnect one cable at a time in Pd so that it only reads one axis at a time. I have made a Pd file that includes step by step instructions for this method, and also has an improved mapping for the 4×4 pads (it sends note events rather than MIDI CC, so it is easy to use with Live Drum Racks). It’s at http://discolingua.com/simple-midi-ableton.pd
11:48 PM on August 23rd, 2009
How do you get the drum rack/impulse to map to the pads in Ableton?
When I hit ctrl + M none of the pads are highlighted???
3:58 PM on August 24th, 2009
i am having the same problem as jason please help?
8:09 AM on August 27th, 2009
Wow, thank you h_double, I’m going to check this out soon. And to everyone else I am sorry to leave you guys hanging lately but I’ve had my hands full helping my gf with our newborn son. I’ll be getting back in to the groove here shortly though :)
1:31 PM on August 30th, 2009
HELP! I have Vista with UAC turned off, and firewall allows pd.exe to work, Ableton receives the MIDI from pd, however, PD doesn’t receive any info from my IPod.. only thing I can think of is the Port config is wrong, where in PD do I set the port and how do i know which one to use? My Ipod just says searching on the TouchOSC Network screen, is that right or should it say my PC name?
1:43 PM on August 30th, 2009
Also can i just add, i get these messages in another window when i open up simple-midi.pd
dumpOSC 8000
… couldn’t create
OSCroute /1 /2 /3 /4
… couldn’t create
11:58 PM on September 10th, 2009
Hi,
My group’s performance/demo video of TouchOSC accompanies an article in the San Francisco Chronicle that was published a couple of days ago.
Natasha and the Reject: http://sfgate.com/ZICY
9:30 AM on October 3rd, 2009
Hi there,
Thanks for the tutorial. It was working fine for me yesterday on Ableton. Today however I continue to get the following error on both my desk and labtop: “error: *: no method for ‘/z’”. Also the midi test does not show any response. However, the sliders are working well with the iPhone (i.e. they DO respond on my desk and labtop…). Also I indicated yoke 1 as the incoming channel (as explained above). Is this some kind of pd problem? Yesterday everything was fine…..what has changed?
3:50 PM on October 5th, 2009
If you see the sliders in PD moving but nothing is responding in Ableton I would suspect MIDI Yoke is the culprit. Try removing and reinstalling MIDI Yoke and then make sure you set it back up as the output for PD and the input for Ableton. Hope this helps Bart!
7:35 AM on October 28th, 2009
I have successfully made TouchOSC communicate with PureData, but when I try and use it with any MIDI enable program (via midi yoke), e.x. Ableton Live, the software does not receive any MIDI…
Whats wrong? (could it be i have Ableton Live 6.0.7, not ableton live 8 – which I am currently downloading…)
8:32 AM on November 9th, 2009
It sounds as though you have not enabled the MIDI Yoke channel to receive the MIDI data from the same port PD sends it on. Or the other way around. If you have done all this I would try re-installing MIDI Yoke. This should work with any MIDI capable app, so you don’t have to have the latest Ableton Live.
7:42 PM on November 23rd, 2009
I’m a novice at all midi stuff, but can find my way out of a paper bag. I have ableton 8.0.1 and an M-Audio Axiom 49 through USB and am using asio4all. I have successfully routed TouchOSC to Ableton through MidiYoke to Pure Data, and find no problems with it through and through. However, my pc will not recognize my Axiom49 input at all. It does not show up in MidiOx, and ableton doesnt receive any messages from it.
It would seem to me that i need to tell my axiom to talk to MidiYoke, because all that shows up in the “input” and “output” columns for control surfaces in Ableton are in’s and out’s from MidiYoke, but i dont know how to do that, nor can i find any comprehensive work-through elsewhere on the net.
*NOTE : If this isnt the right place to pose this question, can anyone tell me where i might go?
7:56 PM on November 23rd, 2009
*forgot* I am running vista 32bit, SP2
5:53 PM on November 26th, 2009
Thanks a lot !
It works, and mâle me happy ! LOL !
9:06 AM on December 1st, 2009
Why do you need to run the Axiom thru MIDI-OX? Why just just enable it for track & remote right within Live? Just trying to better understand your problem here. It’s really a support question for M-Audio to be honest, though.
6:56 AM on December 2nd, 2009
Hi there!
Nice tutorial. Works for me, but still have problems with the impulse pad assignment so same questions that others, how did you do that? :-D
Thx!
4:43 AM on December 4th, 2009
when i open pure data
this comes out
[import] $Revision: 1.2 $
[import] is still in development, the interface could change!
compiled against Pd version 0.41.4
libdir loader $Revision: 1.8 $
compiled on Jun 4 2009 at 04:48:48
compiled against Pd version 0.41.4.extended
GEM: Graphics Environment for Multimedia
GEM: ver: 0.91.3 ‘tigital’
GEM: compiled: Jan 22 2009
GEM: maintained by IOhannes m zmoelnig
GEM: Authors : Mark Danks (original version)
GEM: Chris Clepper
GEM: James Tittle
GEM: IOhannes m zmoelnig
GEM: with help by Guenter Geiger, Daniel Heckenberg, Cyrille Henry, et al.
GEM: found a bug? miss a feature? please report it:
GEM: homepage http://gem.iem.at/
GEM: bug-tracker http://sourceforge.net/projects/pd-gem/
GEM: mailing-list http://lists.puredata.info/listinfo/gem-dev/
GEM: compiled for SIMD architecture: SSE2 MMX
GEM: using SSE2 optimization
Gem Man: QT init OK
libdir_loader: added ‘cyclone’ to the global objectclass path
libdir_loader: added ‘zexy’ to the global objectclass path
libdir_loader: added ‘creb’ to the global objectclass path
libdir_loader: added ‘cxc’ to the global objectclass path
libdir_loader: added ‘iemlib’ to the global objectclass path
libdir_loader: added ‘list-abs’ to the global objectclass path
libdir_loader: added ‘mapping’ to the global objectclass path
libdir_loader: added ‘markex’ to the global objectclass path
libdir_loader: added ‘maxlib’ to the global objectclass path
libdir_loader: added ‘memento’ to the global objectclass path
libdir_loader: added ‘mjlib’ to the global objectclass path
libdir_loader: added ‘motex’ to the global objectclass path
libdir_loader: added ‘oscx’ to the global objectclass path
libdir_loader: added ‘pddp’ to the global objectclass path
libdir_loader: added ‘pdogg’ to the global objectclass path
libdir_loader: added ‘pixeltango’ to the global objectclass path
libdir_loader: added ‘pmpd’ to the global objectclass path
libdir_loader: added ‘rradical’ to the global objectclass path
libdir_loader: added ’sigpack’ to the global objectclass path
libdir_loader: added ’smlib’ to the global objectclass path
libdir_loader: added ‘toxy’ to the global objectclass path
libdir_loader: added ‘unauthorized’ to the global objectclass path
vbap – v1.0.3 – 12 Aug 2006 – (c) Ville Pulkki 1999-2006 (Pd port by HCS)
libdir_loader: added ‘pan’ to the global objectclass path
libdir_loader: added ‘freeverb’ to the global objectclass path
libdir_loader: added ‘hcs’ to the global objectclass path
libdir_loader: added ‘jmmmp’ to the global objectclass path
libdir_loader: added ‘ext13′ to the global objectclass path
libdir_loader: added ‘ggee’ to the global objectclass path
libdir_loader: added ‘flib’ to the global objectclass path
libdir_loader: added ‘ekext’ to the global objectclass path
libdir_loader: added ‘flatspace’ to the global objectclass path
i dont get it wut is this link for
http://hexler.net/pub/touchosc/simple-midi.pd,
im doing everything exact just like in this tutorial but nothing i have windows 7 my ipod working good but when i conect it with ableton the midi thing dosn blink like if i had a midi control wut im i doing wrong ?
3:35 PM on December 12th, 2009
Ok, found it. Just have to change the pure data layout to send midi notes instead of CC. Now I have to fight with the XY pad!
10:54 AM on December 17th, 2009
hello! in xp works thx, but now I have windovs7 and there it’s not working :( step4 is have differents, I dont know what differents. can somebody tell me please how to” in win7? thx
5:45 PM on December 21st, 2009
having a problem connecting to PD for some reason it will not accept my itouch. I typed in my Ip and it just keeps searching any idea what I am doing wrong?
7:46 AM on December 22nd, 2009
EZ` know somebody how to make the step 4 with windows7 ?
oha and have everybody a happy NYE!
12:53 AM on December 23rd, 2009
Midi Yoke hasnt been updated since 2007. There are many factors here between the iTouch and Ableton in order to make this tutorial work. Getting 4 applications to run in cooperation with one another can get pretty confusing. Many of these factors vary for every user. I understand that this page is an attempt to make it easy, but why the hell does this whole thing rely on MidiOX from 2007?! Their application was made Pre-Vista which is what I’m working with. Im getting constant errors in PD. Eventually something pops up and shuts off the Midi connection. I dont expect anyone to know the answer to that but the big question is, Why isnt this being done with software more modern than MidiOX? Cant they make some sort of Osculator for PC? Cause this is BS.
1:44 AM on December 23rd, 2009
turns out that Vista is the problem here. i installed this program in replacement of the moronic MidiOX. its called ipMidi and you can download it here http://nerds.de/en/download.html . You connect it the same way to PureData by going to ‘Media’- ‘Midi Settings’ and selecting ‘Ethernet Midi’ for both input and outputs. turn on the Remotes in Ableton and your good to go. Cheers
5:20 PM on December 23rd, 2009
Great tutorial, everything works fine now
and the add/undo method works for me too, great!
8:57 PM on December 24th, 2009
Jay-Doe: Cant they make some sort of Osculator for PC? Cause this is BS.
Sure ‘they’ can. But ‘they’ are just ‘us’. People like you and I with lives and jobs doing this in their spare time for fun. Thanks for the contribution on ipMidi, but what’s great about MidiYoke is that you can use it for free. It is ashame that you can’t get it working with Vista, but to be honest not many people doing music on PCs consider Vista a system of choice anyways. It has become quite common with new PCs though, so it is a shame that it’s still that way. You can always dual boot with XP, and then you have an installation specifically for your music that doesn’t get junked up. It’s a win-win (pun intended).
Thanks again for letting us know about ipMidi, even though it’s not free it seems interesting and I look forward to checking it out!
8:57 PM on December 24th, 2009
Thank you PCM! Glad you found it useful! :)
9:02 PM on December 24th, 2009
This is just normal PD initialization stuff, don’t worry about it. The simple-midi.pd file is a crucial step, open this file with PD and then try the tutorial again. I am not sure it works with Win7, I still use XP, and thats a pretty safe bet for music on PC, so if possible stick with it. More stable drivers, faster, well tested, all around better for music production imo. I feel like I’m pimping XP way too much on here, but seriously guys, Vista and Win7 are not your best options if you want to attain music production nirvana on PC! :P
9:03 PM on December 24th, 2009
Thanks for sharing the tip!
9:54 AM on December 27th, 2009
JAY DOE!!! you got it to work!?!? I tried IPMidi and read the whole manual for it but i get the same problem… TouchOSC Searching….for ever. I tried port 21928 and that didnt work.. what exact steps did you take to make it work on Vista 32? Thx
10:11 AM on December 27th, 2009
WOHOOO it works, make sure you select the simple layout haha!!!!!
11:18 AM on January 17th, 2010
It works on midiyoke works on win7.
I’m having trouble getting PD understand all the layouts that are on the TouchOSC website.
8:26 PM on January 17th, 2010
Not sure what you mean by ‘understand’, Klas. Can you clerify?
7:28 PM on January 18th, 2010
hi, great tutorial, ive got everything sync’d with ableton etc. but…. everytime i play a track when ive mapped the midi out it just loops the track after a few secs resulting in ableton crashing. any ideas? cheers
8:05 PM on January 18th, 2010
great tutorial! eveythings working fine apart from the tracks keep looping when i press a play button which ive mapped out this results in ableton freezing. any ideas? thanks
12:30 PM on January 23rd, 2010
Hi there. Having a few problems getting touch OSC to communicate with pd. I installed midi yoke, then pd then open the simple-midi file which comes up in the same format as the window shown above but in the pd window the following messages are given
OSCroute /1 /2 /3 /4
…couldn’t create
OSCroute /fader1 /fader2 etc. etc.
…couldn’t create
x many similar error lines
Then it seems when i set up touchOSC from the iphone, it won’t move the faders etc. in simple-midi. Can you offer any advice?? Thanks in advance.
1:24 PM on January 27th, 2010
Klas please tell how make it on win7! The probleme to me is the7.th step
2:26 PM on February 1st, 2010
I mean the 4.th step.. sorry for the wrong button :)
12:54 PM on February 3rd, 2010
To Andrew:
I am doing another application with touochOSC, and also having problems of connecting iphone with a PC. You said you got your application works, and the Network page is still showing searching or your PC’s name.
Thanks
2:43 PM on February 17th, 2010
ok so ive edited the simple layout to create a more user accessable layout for myself but when i try syncing that layout to my ipod through Touchosc editor, my ipod just keeps searching and not picking anything up! could someone help me please, my heads pickled
7:37 PM on February 20th, 2010
I got pure data to work and all but I can’t get MIDI Yoke to install. I tried to route PD to Ableton via some different MIDI I/O’s but nothing in ableton. Is there a way to do it without Midi Yoke?
3:23 PM on February 21st, 2010
Ok I got MIDI Yoke installed and the buttons all work in Pure Data, I set the I/O but I get no midi input activity from Live, FL Studio, etc
8:39 PM on February 21st, 2010
@ Ali and Bassbinv. I had the same problem when using pd vanilla, when I used pd extended it worked. Hope this helps. :D