ableton link and live tempo changing

Support & discussion regarding DAWs and MIDI sequencers.

Moderators: MattKingUSA, khz

tatch
Established Member
Posts: 662
Joined: Fri Nov 16, 2012 3:18 pm

ableton link and live tempo changing

Post by tatch »

not sure if you've read about ableton live 9.5 but one of their planned updates is this thing called ableton link that seems to be a convincing inter-device tempo sync.

paul davis was present during the unveiling of ableton sync and has an interesting perspective:
...The JACK community developed technology back in 2005 or earlier that could do what Link does (and a whole lot more besides). But the developers failed to package it, failed to make it usable for anyone other than a small group of tech-oriented tinkerers, failed to give it an inviting face. In addition, the developers failed to understand how significant platform is when trying to create products for people. Designing the most awesome thing in the world is no help if it doesn't run on the platforms that people want to use (for whatever reason). Ableton not only chose OS platforms with huge numbers of users, but has proceeded to develop its own product-centric platform that provides compelling reasons for users to want to remain within its walls. The open source community shouldn't be trying to follow or copy what a company like Ableton does, but there is a strong lesson here: our technology is not as important as we like to think.
In any case, one thing that we've talked about to various degrees in the past is tempo ramping in JACK, and with the announcement of ableton link I'd like to revisit the topic.

http://linuxmusicians.com/viewtopic.php ... 81&p=46912
http://linuxmusicians.com/viewtopic.php ... 90&p=51449
http://linuxmusicians.com/viewtopic.php ... 35&p=30447

JACK does indeed largely do what Link does (and more) but I've been having difficulty successfully tempo ramping. Incidentally, danboid recently posted about how he can successfully ramp in MuSE; but I don't use MuSE nor do I plan to in the near future, and unfortunately my attempts to change tempo dynamically within the greater JACK/modular LAU paradigm have been rather unsuccessful.

To clarify my own use-case, I'd like to map an encoder/knob to a tempo control and be able to speed up/slow down the tempo live, e.g. during a performance.

changing tempo as timebase master
For the most part it seems that changing tempo dynamically is possible but it is not well-defined.
* seq24 forces itself to be transport master (I know there's supposed to be a patch but it has still never worked for me ever) and disallows tempo changes while playing
* hydrogen sort of allows tempo changes but it will sometimes politely refuse to change (which is bad)
* klick can be configured to send out predefined tempo ramps but I haven't been able to set it as timebase master and actually interact with it (I was trying klick -Ti and klick -To 8080 but it seems -i and -o somehow disregard the -T option)

changing tempo as a slave
* hydrogen is happy to oblige tempo changes but is equally happy to cut off the beginning/end of a bar
* qmidiarp follows tempo changes but doesn't stay in time and forgets to send note-offs

I'd appreciate if someone more familiar with the transport spec could chime in on this, I'd like to understand what is missing from a technical perspective (I'm actually not entirely clear on the timebase master/slave relationship either).

Going a step further, it seems that ableton link may become the go-to replacement for midi clock in software-based production; it could be beneficial to discuss possible timebase master clock clients that can also communicate using the ableton link protocol. Of course this is contingent on the SDK being compatible with linux, which may be unlikely but they are encouraging interested developers to get in touch.

By the same token it would be great to have this for midi clock as well -- I know of jack_midi_clock already but I don't believe the reverse case exists, though falktx and I briefly discussed something related a while ago.

To reiterate,

1. lau apps have to implement tempo ramping in JACK properly
2. a JACK timebase master clock client must be made that can
- change tempo dynamically
- communicate with ableton sync to send/receive tempo information (pending a working SDK for linux (this should also be optional for those who don't want anything proprietary))
- set tempo given a midi clock input

Thoughts? I think tempo syncing is one way we can get JACK to interact more proactively with other software/equipment, and that seems like it could be a great way to reconnect with the rest of the audio community.
Last edited by tatch on Fri Nov 20, 2015 2:38 pm, edited 1 time in total.
gimmeapill
Established Member
Posts: 564
Joined: Thu Mar 12, 2015 8:41 am
Has thanked: 44 times
Been thanked: 8 times

Re: ableton link and live tempo changing

Post by gimmeapill »

Never had the balls to try Jack tempo changing, but regarding Seq24 it may be a good idea to report this on the reboot project here: https://github.com/ahlstromcj/sequencer64
danboid
Established Member
Posts: 1327
Joined: Sun Aug 26, 2012 11:28 am
Location: England
Has thanked: 1 time
Been thanked: 4 times

Re: ableton link and live tempo changing

Post by danboid »

Qtractor CANNOT tempo ramp. I've discussed this several times with Rui and it's not going to happen.

I generally don't use external JACK apps / JACK transport so I have yet to try anything like you describe. You didn't explain why MusE wouldn't work for you. Have you tried it recently?
tatch
Established Member
Posts: 662
Joined: Fri Nov 16, 2012 3:18 pm

Re: ableton link and live tempo changing

Post by tatch »

@falktx: I will post this on LAD soon. Still deciding which email to use.. on a related note I'm drafting a post on the LM/listserv divide, would be interested to hear thoughts on that later.

@danboid: I misremembered the QTractor thing, I edited the original post. I don't use MuSE because I don't understand the UI and also find it prohibitively ugly. At the same time, solving timing locally would be ignoring the bigger picture I'm trying to paint regarding interoperability with the greater audio ecosystem. If a standalone, robust timebase master client can talk link/midi clock the, other JACK-transport-aware apps would just have to implement faithful JACK tempo following, and link/midi clock support would then come by design.
danboid
Established Member
Posts: 1327
Joined: Sun Aug 26, 2012 11:28 am
Location: England
Has thanked: 1 time
Been thanked: 4 times

Re: ableton link and live tempo changing

Post by danboid »

I know muse can operate as a JACK Timebase master (see Muse Settings menu -> MIDI Sync ) but I'm not sure if it handles MIDI clock too?

Muse is really no harder than Ardour or qtractor to use. I'd watch this to get started:

https://www.youtube.com/watch?v=11VWsbeT35s

To create tempo ramps, use the graphical mastertrack editor under Edit -> Mastertrack -> Graphic or just push CTRL+m

I'd def recommend everybody who wants to create MIDI under Linux watch that video and try out the latest MusE. The Muse interface has got room for improvement thats for sure but it has a few active developers who are making good progress in tidying it up and making it easier to use.
Drumfix
Established Member
Posts: 299
Joined: Mon Jan 26, 2009 5:15 pm
Been thanked: 11 times

Re: ableton link and live tempo changing

Post by Drumfix »

Since we have jack-midi i don't see a reason why the timebase thingy would still be needed.
ssj71
Established Member
Posts: 1294
Joined: Tue Sep 25, 2012 6:36 pm
Has thanked: 1 time

Re: ableton link and live tempo changing

Post by ssj71 »

Drumfix wrote:Since we have jack-midi i don't see a reason why the timebase thingy would still be needed.
IIUC so the sequencer knows when to send the jack-midi events.
_ssj71

music: https://soundcloud.com/ssj71
My plugins are Infamous! http://ssj71.github.io/infamousPlugins
I just want to get back to making music!
tatch
Established Member
Posts: 662
Joined: Fri Nov 16, 2012 3:18 pm

Re: ableton link and live tempo changing

Post by tatch »

@danboid: I don't want to create tempo ramps, I want to change tempo live. Please understand that I don't need someone telling me to use MuSE and I don't intend to use it in the near future (perhaps if/when I think the UI is agreeable enough), and that the primary purpose of this thread is not to uncover "previously unknown capabilities" but to scrutinize existing behavior in the greater LAU ecosystem as a part of the audio world instead of as a separate thing.
danboid
Established Member
Posts: 1327
Joined: Sun Aug 26, 2012 11:28 am
Location: England
Has thanked: 1 time
Been thanked: 4 times

Re: ableton link and live tempo changing

Post by danboid »

I would suspect it was when you said:
JACK does indeed largely do what Link does (and more) but I've been having difficulty successfully tempo ramping. Incidentally, danboid recently posted about how he can successfully ramp in MuSE;
That made me think you want to create tempo ramps / gradients. Rosegarden, MusE and Tracktion can all do this. If its just abrupt changes in tempo then every Linux DAW/sequencer can do that but I clearly don't know what you actually want any more so I'll bow out of this thread now.

As for MusE's UI, I've made a number of suggested improvements to it over the last few days and the devs say they will implement them all. If they stay true to their word you won't be complaining about muse for much longer!
User avatar
rncbc
Established Member
Posts: 1060
Joined: Mon Apr 19, 2010 12:20 pm
Has thanked: 45 times
Been thanked: 256 times
Contact:

Re: ableton link and live tempo changing

Post by rncbc »

danboid wrote:Qtractor CANNOT tempo ramp. I've discussed this several times with Rui and it's not going to happen
it's not going to happen in qtractor as real, continuous tempo-ramps (which i suppose it's about linear-time-interpolated?) or any other easing-curves you might come after anyway--it's a pita. to implement correctly and i myself imho. don't get oh why it seems to be a so critically and useful feature at all!

that said, you can simulate step-wise tempo ramps, by having successive one-beat bars of increasing/decreasing tempo, while on qtractor's tempo map; i believe this is how it should be done if you wish to compose accelerandos/ritardandos across the MIDI eco-system, not only in (your favorite DAW/sequencer name here), as successive tempo (and time-signature) changes tat are shared to all other clients of the JACK timebase (iif qtractor is set as master one).

otoh. i also still believe, you can emulate real, continuous tempo-ramps in qtractor, via the "time-shift" MIDI tool over the first or few bars right after a regular tempo change--of course, this is applies internally only to a selected sequence of MIDI events on a clip, you can apply the same transformation vertically, to one, more or all selected MIDI track clips, at a time if you please. pof course this transformation is not shared to other applications via JACK timebase, only the instantaneous tempo change.

hth.
cheers
tatch
Established Member
Posts: 662
Joined: Fri Nov 16, 2012 3:18 pm

Re: ableton link and live tempo changing

Post by tatch »

http://cdm.link/2016/09/ableton-opening ... ing-today/

it looks like it's now possible to implement ableton link support in linux
tatch
Established Member
Posts: 662
Joined: Fri Nov 16, 2012 3:18 pm

Re: ableton link and live tempo changing

Post by tatch »

rncbc wrote:
jftr. there's these posted upstream:
https://github.com/Ableton/link/pull/5
https://github.com/Ableton/link/pull/6

however, for the time being, this is only about adding example
applications (linkhut, qlinkhut, etc.) with jack audio support, as in
alternative to portaudio on linux.

again for the time being, it has nothing to do with jack-timebase, at
least yet, and for x sake, it probably won't do anything about
jack-transport, which i believe is not applicable nor substitute

i see each, jack-transport and ableton-link, as orthogonal in function
and purpose. iow., an application either adopts jack-transport *or/and*
ableton-link protocol (possibly through a jack-timebase proxy) to sync
its "play time".

afaiu. jack-tranpsort is about absolute sample/frame real-time
positioning; otoh. ableton-link is about relative tempo, beat and/or
phase (within a bar or measure) musical-time ie. it's better described
as a shared *metronome* over the LAN (wether it's wired or wireless: low
level is multicast udp/ip, so that it works on the local net segment
switches but never across routers). iow. ableton-link is *not* a
wall/word-clock for keeping media streams in sync. and it doesn't do
WAN, so you can keep your tinfoil in the closet :).

point is, applications using the ableton-link facility have to implement
special, dedicated sync patterns, which are not bearable to a linear
real-timeline, so to speak. it is best suited, or recommended, for
syncing loopers on musical BBT and tempo (BPM) units, abstract time
boundaries if i may, not to concrete linear/real-time stream players.

on the practical side of thoughts, i mean, i'd say to scrap any
jack-transport implementation on superlooper or seq24, for example. make
those sync to ableton-link instead. hydrogen would have a great boost in
usability too, i'm sure. though, old plain linear timeline based DAWs,
eg. ardour, (or sequencers for that matter) qtractor, muse(score),
rosegarden, etc. would be better still set to jack-transport as
master/slave as usual, maybe set ableton-link tempo and beat/bar phases
according to their rolling playback state, that is as long as to
function as timebase masters.

as a final note, and conclusive perhaps, ableton-link integration is an
application/client option, not quite on the JACK server/service side if one.

just my 2eur.
Hey rui,

I've noticed the discussions on github/LAD (the latter of which i am still unable to post on :? ) and your PR to Link. It seems like you've made reasonable progress with it-- can you comment on how feasible the ideas I described in my original post are?

I am still vaguely under the impression that if a Timebase master client is Link-capable then any transport-aware client (e.g. most LAU apps today) would be able to follow any tempo changes described by the master and therefore automatically have "Link support"-- from my understanding the JACK Timebase includes transport control and BPM information (though maybe not beat sync information like Link?). Then can't a timebase master client be Link-obedient just in regards to BPM but operate transport independently (since Link doesn't have transport a transport representation anyway)?

Though after reading your post to LAD a couple times over it seems like there is possibly overlooked but important incongruity between BPM and "linear/real-time".. and perhaps that limits the ability of word-clock time designators like JACK from seamlessly following BPM? If that is the case it is still unclear to me what the specific technical details of that incongruity are.
User avatar
rncbc
Established Member
Posts: 1060
Joined: Mon Apr 19, 2010 12:20 pm
Has thanked: 45 times
Been thanked: 256 times
Contact:

Re: ableton link and live tempo changing

Post by rncbc »

tatch wrote:Though after reading your post to LAD a couple times over it seems like there is possibly overlooked but important incongruity between BPM and "linear/real-time".. and perhaps that limits the ability of word-clock time designators like JACK from seamlessly following BPM? If that is the case it is still unclear to me what the specific technical details of that incongruity are.
read this?
JACK Transport Limitations

ok. now from the top of my head.

a. jack-transport/timebase (JT) is a centralized master/slave model, including its API approach; corollaries follows: all JT clients start and stop on demand and at the same time; netjack clients might drift apart, unless they implement some sort of PLL/DLL device (anyway, this assumes one of the participants is master); time reference is absolute frame position, constant sample-rate (frames/second), starting from a designated master application, linear (tape-like) timeline model (a song, session or project as a whole length continuous composition or arrangement).

b. ableton-link (AL) is a distributed metronome facility and API; any AL client may or not be playing its thing on any given time, but when they play, they should start and sync (internally on their own premises) on beat boundaries on their own best-fit strategy model; time reference is tempo (BPM; beats/minute); tempo changes are broadcasted (well, dang truth is multicasted), may be initiated by any participant, then each other participant may react accordingly (or not) on their own chance, next cycle or phase, whichever fits best their own designed playback model--this is why, AL is more suited for loop-based contraptions that straight linear-tape model ones.

you can map AL to JT (timebase) if you will, but it's one master's job to do it--make the time calculations according to its own master, static tempo-map.

cheers
tatch
Established Member
Posts: 662
Joined: Fri Nov 16, 2012 3:18 pm

Re: ableton link and live tempo changing

Post by tatch »

Tempo changes are underspecified

The current implementation might actually be sufficient to support tempo changes, but the API is not entirely clear on how this should work.

There are 2 ways of doing tempo changes: sharing a 'tempomap' among all synchronized applications, so that each can convert to frames from BBT/BPM information and vice-versa, or by putting the Timebase Master in charge of keeping the tempomap and keeping the clients up-to-date.

There is currently no recommended mechanism/format for the former. The latter approach might be suitable, but is not well-documented yet.
this is the only thing that seems relevant to me regarding Ableton Link. If the only problem is that it is underspecified then I am under the impression that this is more of a "build it and they will come" problem than any underlying structural issues (though in LAU that is a slow proposition). As you have said before AL and JACK transport are orthogonal in use so none of the transport stuff like start/stop/relocation is really that relevant to AL, but if the timebase master has the ability to delegate BPM info to all the other clients then that seems like a perfect case for AL integration.
User avatar
rncbc
Established Member
Posts: 1060
Joined: Mon Apr 19, 2010 12:20 pm
Has thanked: 45 times
Been thanked: 256 times
Contact:

Re: ableton link and live tempo changing

Post by rncbc »

tatch wrote:but if the timebase master has the ability to delegate BPM info to all the other clients then that seems like a perfect case for AL integration.
a JT/timebase master may set AL tempo/beat information based on its own private tempo-map and timeline alright, so that all other JT and AL clients may roll and sync to whichever time reference they opt and find appropriate;

however, i do find here a conceptual conflict emerging: AL clients are allowed to change common tempo anytime, more keen to a live-act rhythmic/loop-music performance than a recorded (tape-music) playback, remember? and others shall follow accordingly.

how is all that supposed to work for a JT master? i guess we're on an infamous "undefined behavior" situation: well, most probably the JT master will force and override common tempo at first chance (which is immediately), or otherwise, it can change and set its own tempo-map accordingly (if it can or is prepared for just that).

all that to say that a so called JT+AL integration is a per application use case. such an integration should be rather discrete, on its own model and implementation and quite difficult to do at the jack server side. imho.

byee
Post Reply