Station Point

Crafting Tune Artifacts

Ableton Live, The Machinedrum and The Monomachine (Part 2): Minimizing Latency

Posted on | June 6, 2010 | 4 Comments

In Part one of this series, I post­ed tips for get­ting the Mono­ma­chine and Machine­drum synced and record­ing prop­er­ly with your Live ses­sions. The oth­er half of the equa­tion is which oper­a­tions to avoid that might intro­duce laten­cy and tim­ing errors dur­ing your sessions.

Ableton Prints Recordings Where It Thinks You Heard Them

I guess this design must be intu­itive for many users, but it con­fused me for a while.  If you have a set­up with any­thing but a minis­cule audio buffer, mon­i­tor­ing through a vir­tu­al instru­ment witha few laten­cy-induc­ing plu­g­ins in the mon­i­tor­ing chain, you will hear a fair amount of mon­i­tor­ing laten­cy when you play a note.  The same goes for record­ing audio.

When record­ing a MIDI clip, I expect­ed that Live puts the actu­al MIDI events when I played them — which it does­n’t.  It shifts the MIDI notes lat­er in time to match when you actu­al­ly heard the out­put sound — try­ing to account for your audio buffer delay, the laten­cy of your vir­tu­al instru­ment, and any audio pro­cess­ing delay from plu­g­ins in the down­stream sig­nal path.  There’s one excep­tion to this — it does­n’t wor­ry about delays you might hear due to any “Sends” your track is using.

So your MIDI notes (and CC’s) are record­ed with “baked-in” delays the size of your mon­i­tor­ing chain laten­cy. I’m going to call this baked laten­cy.

To be fair, Live’s man­u­al goes into the rea­son­ing behind this in some detail, and offers some sug­ges­tions for work­ing with opti­mal MIDI tim­ing. I want­ed to find out what this entails.

I’m guess­ing most artists work­ing with MIDI will also quan­tize the crap out of these notes any­ways, effec­tive­ly grid­ding-away the baked laten­cy. How­ev­er, if you actu­al­ly want to hear Live try to play back the notes when you hit them – say if you are try­ing to record some pre­cise rhyth­mic pas­sages by hand — you have to min­i­mize (or elim­i­nate) any of this record laten­cy com­pen­sa­tion that Live is doing for you.

Whether the Options menu “Delay Com­pen­sa­tion” fea­ture is enabled or not, any devices that are mon­i­tored through Live — MIDI tracks, Audio Tracks, or Audio Instru­ment MIDI tracks — have a delay the size of your audio input buffer baked in.

In addi­tion, if “Delay Com­pen­sa­tion” is enabled while record­ing, the addi­tion­al laten­cy due to any audio devices in your mon­i­tor­ing sig­nal path will be baked in.

Thwarting Ableton’s Kind Efforts To Bake Your Latency

I’ve found a few gen­er­al meth­ods for this.

1) Don’t Software Monitor

In my expe­ri­ence, this is always the best option, if it’s pos­si­ble.  All of the fol­low­ing work:

  • Record an out­board MIDI synth to a nor­mal MIDI track. Mon­i­tor mode should be set to “Off” (yes Able­ton will still bake laten­cy for MIDI tracks with mon­i­tor­ing enabled!).  Use local con­trol on your MIDI device, and mon­i­tor it direct­ly through some­thing like a mix­er or a sound­card mon­i­tor­ing fea­ture. Edit and tweak the clips to your lik­ing. Then record your syn­th’s out­puts via nor­mal Audio tracks with mon­i­tor­ing disabled.
  • Record a hard­ware-mon­i­tored out­board MIDI synth to an Exter­nal Instru­ment track with Live’s Mon­i­tor mode set to “Off”.  Freez­ing the result­ing clip(s), and option-drag­ging them to an audio track will give you a nice tight record­ing with well-cho­sen loop position.
  • Record audio tracks with Mon­i­tor set to “off”.  Use direct mon­i­tor­ing facil­i­ties on your audio inter­face, or a mixer.
or 2) Temporarily Turn off Delay Compensation

If you have to record using soft­ware mon­i­tor­ing (eg. your sound­card does­n’t sup­port direct mon­i­tor­ing, you’re using a vir­tu­al instru­ment, and/or you need to mon­i­tor through some plu­g­ins), you can min­i­mize laten­cy by reduc­ing your audio buffer size.  If you have laten­cy-induc­ing devices in your mon­i­tor­ing chain, turn­ing off Delay Com­pen­sa­tion under the Options menu will help keep your record­ed clips roug­ly where Able­ton actu­al­ly received then — not shift­ed late for you.  They will still be delayed by your audio buffer size in an effort to min­i­mize jit­ter (as explained in the man­u­al’s chap­ter “MIDI Fact Sheet”), but at least the “device” Delay Com­pen­sa­tion shift won’t be added.

This method may not work if you have a com­pli­cat­ed sig­nal chain on oth­er parts of your track that will now sound cacoph­o­nous with laten­cy com­pen­sa­tion dis­abled dur­ing your track­ing session.

or 3) Bite The Bullet, But Minimize Latency During Recording

If you have to have delay com­pen­sa­tion enabled, and you have to soft­ware mon­i­tor, then the gen­er­al rule of thumb is to min­i­mize laten­cy.  Keep your audio buffer size tiny.  Don’t put any plu­g­ins on the mas­ter.  Don’t put any plu­g­ins on tracks you’re record­ing on.  Hav­ing plu­g­ins or audio devices dis­abled often isn’t enough — you have to actu­al­ly delete them for Live to com­plete­ly take them out of the laten­cy com­pen­sa­tion chain. Live will still bake in your audio input buffer laten­cy, but at least it will be minimal.

Ableton Doesn’t Latency-Compensate MIDI Clock Out

No mat­ter what it’s doing to your record­ings, it does­n’t both­er to delay com­pen­sate MIDI clock sig­nals at all.  So if you have much laten­cy in your sys­tem, and you’re mon­i­tor­ing an out­board sequencer that’s slaved to Live, and you’re mon­i­tor­ing that sequencer audio via a bunch of plu­g­ins, you have to put in large neg­a­tive delay adjust­ments for Live’s MIDI Clock Delay or things won’t line up.

And if you change your sig­nal path at all, you’ll most like­ly have to hand-tune that delay para­me­ter again — for all out­puts that care about MIDI Clock.

What Ableton’s Doing Behind The Scenes On Playback

This behav­ior all kind of makes sense in Able­ton’s world-view of laten­cy com­pen­sa­tion: on play­back, shift pre-record­ed clips ear­ly to antic­i­pate for play­back delays. I’ll call this ear­ly play­back. It has the great­est effect when “Delay Com­pen­sa­tion” is on, adjust­ing for high-laten­cy plu­g­ins in the sig­nal path.

Exter­nal Instru­ments MIDI, inter­nal­ly-rout­ed MIDI, and audio tracks clips are all shift­ed ear­ly on play­back. MIDI clips on tracks rout­ed to an exter­nal MIDI inter­face aren’t played back ear­ly, prob­a­bly because it’s not obvi­ous how they’re being monitored.

MIDI clock out­put is kind of an unknown, exter­nal thing, and it’s not clear how much you’d want to off­set if by.  As I men­tioned above, it’s not shift­ed early.

Strange­ly, the metronome in Live seems to be added post-Mas­ter fx, so whether device delay com­pen­sa­tion is active or not, it will always be play­ing “on time”.

Try this — cre­ate a set with a sin­gle beat loop in an audio track.  Put a ton of laten­cy-induc­ing plu­g­ins on your mas­ter chan­nel.  Turn on the metronome.  Make sure delay com­pen­sa­tion is active.  Your beat and the metronome should sound in-time.  Now dis­able delay com­pen­sa­tion.  Your beat should sound late, but the metronome is still “on-time”.  With delay com­pen­sa­tion active, your beat­’s audio was being shift­ed ear­ly to account for the pro­cess­ing delay from the plugs.

This device delay com­pen­sa­tion on play­back is usu­al­ly your friend — it can keep a set with tons of real­time audio pro­cess­ing in near-per­fect sync. 

So What About The Machine­drum or Monomachine?

When record­ing the Machine­drum and the Mono­ma­chine, I’ve cur­rent­ly opt­ed to soft­ware mon­i­tor since I like record­ing a bunch of dis­crete out­puts from them, and my audio inter­face does­n’t sup­port mix­ing mul­ti­ple inputs for direct monitoring.

How­ev­er, I have a tem­plate set that basi­cal­ly has no plu­g­ins in those devices’ mon­i­tor­ing path, and I start com­pos­ing songs with my audio buffer set to 32 sam­ples.  The laten­cy is con­stant and known, so I’ve com­pen­sat­ed for what lit­tle there is using the MIDI Clock Delay para­me­ter.  And I don’t mess with it unless I have to change my audio buffer size. Basi­cal­ly, I’m using Option 3 from the sec­tion above.

I don’t put plu­g­ins on the Mas­ter until well after I’ve record­ed the MD and MNM to audio, and I don’t mon­i­tor the MD or MNM through plu­g­ins.  If I’m record­ing their MIDI out­put, I don’t record mon­i­tor the input track (sug­gest­ed in the Live manual).

If I’m going to use the MNM as a synth respond­ing to MIDI notes from Live, I either use the audio + midi track set­up, or an Exter­nal Instru­ment track. 

With these pre­cau­tions, I think I’ve come pret­ty close to an opti­mal set­up for work­ing with these machines in Live.


4 Responses to “Ableton Live, The Machinedrum and The Monomachine (Part 2): Minimizing Latency”

  1. balache
    June 28th, 2010 @ 7:21 pm

    able­ton prob­lem with laten­cy and jit­ter is real­ly seri­ous, it is sur­pris­ing they have not already solved, is there a midi plu­g­in or some­thing that can “move” auto­mat­i­cal­ly record­ed midi events to a defined offset?

  2. jdn
    July 13th, 2010 @ 4:11 am

    Bal­ache, I could imag­ine using Max For Live to shift notes back by a user-defined off­set, but for now I’m just try­ing to keep my laten­cy low, and under­stand what’s actu­al­ly hap­pen­ing in the sys­tem. That way, when I play, things are tight, and the record­ed per­for­mance is pret­ty darn close to what I want in the first place. Cheers, ‑j

  3. Ambrose Holmes
    September 16th, 2010 @ 12:21 am

    Bal­ache, I could imag­ine using Max For Live to shift notes back by a user-defined off­set, but for now I’m just try­ing to keep my laten­cy low, and under­stand what’s actu­ally hap­pen­ing in the sys­tem. That way, when I play, things are tight, and the record­ed per­for­mance is pret­ty darn close to what I want in the first place. Cheers, –j

  4. J J T
    September 6th, 2014 @ 12:30 pm

    To get machine­drum and mono­ma­chine and all my syn­the­siz­ers with inter­nal sequencers to sync all togeth­er i just stop mon­i­tor­ing from the DAW ( If you are in able­ton Mon­i­tor­ing off) and i open my audio inter­face mon­i­tor­ing. The motu inter­faces gives zero laten­cy in the midi.

    Now are all synced the DAW and the exter­nal sequencers but now i can use the DAW only as a recorder.

Leave a Reply