Ableton's new open source SDK allows to easily synchronize devices over a local (wired or wireless) network. Regardless of whether you have any Ableton product in your setup, you can now enjoy bpm and phase synchronization between devices, making jams and sequencing a breeze.
More info here:
http://cdm.link/2016/11/free-jazz-now-ableton-link-sync-works-pure-data/

The [abl_link~] Pd object wraps Ableton's SDK into a Pd external, thanks to the ongoing effort of the libpd community.

I tried to compile the external on Bela and it compiled out of the box. Unfortunately, there were mode switches at every audio block and continuous dropout. A bit of investigation made me realize that these were due to the use of mutexes and clock services. Trying to wrap those with Xenomai calls as per the Xenomai manual caused issues, which I further dug down being more in general related to libstdc++ and the Xenomai posix skin, so I reported these to the Xenomai list.

At this point I had two options: either re-implementing Ableton's locks, tasks and clock services using the Xenomai native API, or moving the whole Link process to a separate thread, making the audio thread much lighter.

I went for the second option, which surely was easier, but I am not sure whether this may cause some imprecision in the timing, especially when the system is busy.
This seems to work and is now available for anyone who want to give it a try. It seems like it can be good fun.

Get the pre-compiled external, installation instructions and example patch here:
https://github.com/giuliomoro/abl_link/releases/tag/v0.0

Please report bugs here.

giuliomoro changed the title to Ableton Link [abl_link~] testing .
2 months later

it might be one of the first things i will try as soon as i get my hands on a bela 🙂

7 months later
5 months later

Hi,

is link working on the bela ? did anyone try ?

also does anyone knows if the PD on bela supports OSC ?

cheers

henri

[abl_link~] as provided at the link above does work. Pd on Bela supports OSC the same way Pd supports OSC:
[oscparse], [oscformat], then you can use [netsend -b] and [netreceive -b] to send and receive them.

this is wonderful ! i ordered my bela the other day. waiting for shipping notification.

can't wait to try it !

7 months later

I haven't tried that individually, but maybe it got built as part of the process? Dunno. You surely need to run it in an aux task and I think that that will be all you need. I think you will need a way for the aux task to know what "audio time" it is just now (e.g.: from render() store in a global variable the latest value of context->audioFramesElapsed.