rncbc / qtractor

Qtractor - An Audio/MIDI multi-track sequencer
https://qtractor.org
GNU General Public License v2.0
495 stars 86 forks source link

Ableton Link support #408

Open PowerUser64 opened 10 months ago

PowerUser64 commented 10 months ago

Ableton Link is an open-source library that allows synchronizing multiple music applications across one or more devices. If qtractor could support link, it would make it a lot easier to integrate into live performance setups and use with other software.

In my particular use case, I would like to use qtractor to sequence a modular synthesizer (bespoke synth), which doesn't run as a plugin. I can get midi out of qtractor and into bespoke, but there's no way to synchronize qtractor's clock with bespoke's clock.

A few similar standards exist (like midi clock), but after trying a few of these, I personally have found ableton link to be the most flexible and stable when it comes to handling like tempo changes and pause/play actions, which midi clock does not seem to handle very well.

rncbc commented 10 months ago

check jack_link, might do the job

cheers

PowerUser64 commented 10 months ago

Thanks for the recommendation! I have tried using jack_link before with ardour. Unfortunately, Qtractor's behaviour with it is no different than ardour's, as it dialates the timeline without adjusting the playhead to keep it at the same measure. Meaning, halving the tempo will double the measure number the playhead is at. (Ex, the playhead will move from measure 4 to measure 8 when the tempo is halved from 120 to 60.) I am not sure if this is jack_link's fault, JACK's fault, or even the DAW's fault, but it keeps JACK from being useful as a way to sync clocks between applications.

rncbc commented 10 months ago

I think you're confusing some concepts: DAWs like ardour or qtractor, maintain their own playhead (linear) position, on their own (linear) timeline; ableton link has no notion of a timeline whatsoever; also, link is not a linear time clock but rather best described as a shared metronome, so that peer may sync to the beat or "quantum phase" in its own parlance.

as a two-way jack-transport -to-ableton-link bridge, jack_link just does its best effort to sync-start (linear) jack-transport to the first current (quantum) beat from a-link, under a common tempo (bpm); playhead location is solely determined by jack-transport and conversely to jack-transport client application(s) on their own timeline--ableton-link has no word on that matter.

all that to say that what you get with jack_link is what you would most probably get if a-link was integrated into qtractor;