Effortless wireless sync everywhere has arrived with free software, too, thanks to Ableton’s new open source SDK. And it’s incredibly easy – enough so that anyone with even rudimentary patching skills will probably want to try this out.
Pure Data, the free and open source cousin of Max/MSP, looks ugly but does great stuff. And it’s worth checking out even if you use Max, because Pd is lightweight and runs on any platform – including Linux, Raspberry Pi, iOS, Android, and inside other software (like game engines). Now that it supports Link, you can make patches that run anywhere and then jam together with them.
Let’s walk you through it step by step and get you jamming.
1. Grab the latest copy of Pure Data.
Leave that dusty ancient aversion of Pd aside. Because the “vanilla” version of Pure Data is now up to date and lets you instantly install any external or library, it’s the only one you likely need. (Pd extended is no longer supported.)
You’ll find it direct from Pd (and Max) creator Miller Puckette:
2. Install the new Ableton Link external.
Here’s why you don’t need Pd extended any more – Deken is the awesome automatic external installer. (Think of it as a package manager for Pd.)
You’ll find the installer at Help > Find externals…
Type in abl_link~ in the search box.
Click the top choice (the one that isn’t grayed). A dialog box asks if you want to install to the Pd folder inside your library. Choose yes. (I only tested this on the Mac so far; I’ll be looking more at this build system in different environments as I’m teaching some workshops and going back to a triple-boot environment myself.)
Now, you can use the abl_link~ external in any Pd patch. (It installed to a path Pd searches for the active user.)
3. Get some help
Create a new Object. Type abl_link~ into the Object box. If you don’t make any typos, you’ll see the Object box get a solid rectangular outline and inlet and outlets. Right-click (ctrl-click) on the Object and choose Help to bring up the external’s help file.
Read and look around. You’ll already see tempo and beat information and the like – that’s what Pd is generating internally and sending to any other Link-enabled apps on your network.
Now, this help file will be most interesting if something else on the wifi network supporting Link – like Ableton Live, or an iPad app, or Reason – is running. So go ahead and do that. Tick the Connect box, and now if you change tempo in one of those other apps, you’ll see the tempo and beat information change here, too.
Notice that you’ve got all the same information you have in, say, Ableton Live. You can see how many other apps are connected via Link. You can see the current tempo in bpm. You can see beats. And you get more precise data you can use in your own patches.
4. Use that tempo information
Now you’ll need something to do with this info. The “step” information out that first outlet is the easiest to use. So for instance, you could feed that into a step sequencer — connect the bang output so you send a bang every quarter note (in 4/4), for instance, or connect to a counter.
There are two settings to pay particular note. One is the connect option – without this, you won’t receive incoming Link information from other apps. The other is resolution, which lets you divide beats. So for instance, if you want to divide those 4/4 quarter notes into eighth notes, set resolution to 2. Triplets, 3. Sixteenth notes, 4. And so on.
For more precision you could do some maths on the “phase” information.
What’s cool about Link is, once you’re connected, any peer – any connected app – can change tempo information. And if one drops out, the beat keeps going. There’s none of the usual futzing with master/slave (server/client) data.
Here’s an incredibly stupid proof of concept, which creates a 4-step step sequencer synced to Link’s beats.
You can paste this into a text editor, save as “peterhasastupidexample.pd” or something like that, and open it in Pd.
#N canvas 0 22 486 396 10;
#X obj 63 22 abl_link~;
#X obj 63 81 sel 0 1 2 3;
#X obj 61 115 vsl 15 128 0 127 0 0 empty empty empty 0 -9 0 10 -262144
-1 -1 4500 1;
#X obj 84 115 vsl 15 128 0 127 0 0 empty empty empty 0 -9 0 10 -262144
-1 -1 6800 1;
#X obj 108 115 vsl 15 128 0 127 0 0 empty empty empty 0 -9 0 10 -262144
-1 -1 9200 1;
#X obj 131 115 vsl 15 128 0 127 0 0 empty empty empty 0 -9 0 10 -262144
-1 -1 6400 1;
#X obj 77 51 nbx 5 14 -1e+37 1e+37 0 0 empty empty empty 0 -8 0 10
-262144 -1 -1 2 256;
#X obj 69 298 osc~;
#X obj 68 271 mtof;
#X obj 69 318 *~ 0.5;
#X obj 59 348 dac~;
#X connect 0 0 1 0;
#X connect 0 0 6 0;
#X connect 1 0 2 0;
#X connect 1 1 3 0;
#X connect 1 2 4 0;
#X connect 1 3 5 0;
#X connect 2 0 8 0;
#X connect 3 0 8 0;
#X connect 4 0 8 0;
#X connect 5 0 8 0;
#X connect 7 0 9 0;
#X connect 8 0 7 0;
#X connect 9 0 10 0;
#X connect 9 0 10 1;
But obviously the idea will be to start thinking about sequencing and time in your patches. Wherever that’s relevant, jamming just got more interesting.
Plus, because Pd patches run on other devices, you could make a little jam chorus of phones or tablets or whatever.
Note that the open source Ableton Link SDK is licensed under the GPL. If you want to use it in a commercial app, you can – but you’ll have to request a separate license from Ableton. (You’re free to use it in patches all you want, since you aren’t distributing anything.) As a testament to the fact that Ableton were bold enough to release free software, though, you can (and should) distribute your own open-source projects with the Link stuff included.
abl_link~ itself though is under a BSD license. So it’s compatible with either the GPL or the proprietary license. And that means you can dump it in patches and then move it from open to proprietary environments without worry.
But in fact, please don’t hesitate to distribute open source projects and share your patches and code. There’s a real chance here to benefit from some community.
5. Thank Peter Brinkmann.
Peter is the principle author of libpd and the creator of this external. (I was lucky enough to get to contribute to the libpd effort with him and … hope to continue contributing, somehow.)
You’ll find the code inside the libpd repository:
6. Reward yourself with a free reverb.
You read this whole article! You worked hard. Sit back, relax, and install a reverb external.
Type “freeverb” into that box, and you’ll find a lovely reverb you can use in your patches.
7. Let us know how you’re using this.
We’d love to know.
Now get jamming. You just need a nice, cozy set.
We got nothing to play. – I’ll tell you what we’re gonna do.
What? – Jazz Odyssey.