Posted on | June 6, 2010 | 9 Comments
Recently I’ve been (going crazy) getting the timing tight between Ableton and two outboard sequencers — the Elektron Monomachine and Machinedrum. On their own, these silver boxes have amazingly tight timing. They can sync to each other to create a great live setup.
Add a computer DAW into the loop, and you introduce jitter, latency, and general zaniness to the equation. And it’s not trivial — this is obviously-missing-the-downbeat, shoes-in-a-dryer kind of bad. I tested the jitter / latency by ear, as well as by recording audio clips and measuring the millisecond offsets from the expected hit times.
I don’t think this is fundamentally a slow computer / poor setup issue either — I’m running a good interface, using a tiny 32 sample audio buffer. The rest of the setup is an i7 Intel Mac running OS X 10.6.3, Ableton Live 8.1.3, Emagic Unitor 8 midi interface and an Elektron TM-1 TurboMidi interface for the Machinedrum.
Below is a journal of what’s working, what isn’t, and my theories on why…
Method 1: Ableton Live as Master, using External Instruments
This seems like the way Ableton would want you to set this up. It’s what the External Instrument is made for — routing midi to– and audio from– an outboard MIDI device. However, it has a number of drawbacks when working with these machines:
- Latency depends on whether they are in “active” monitoring mode. I didn’t realize that in Ableton, having a track in “Auto” monitor mode — but not record armed — has different latency than having it in “In” monitor mode, or having it record armed in “Auto” mode. This makes it hard to monitor a beat coming from the outboard sequencer, yet have record armed for another track in the song: the audio for the outboard gear will sound late.
- If you try to get around this by leaving the track set to record monitor “In”, it’s like leaving your device always record armed, which can make it hard to avoid sending undesired MIDI events along.
- The Machinedrum’s internal tempo fluctuates +/- a few BPM.
Sync is done pretty standard: Ableton output sync is enabled for the TurboMidi interface the Machinedrum is plugged into, with a trial-and-error tuned MIDI clock sync delay of around –9 ms, and “Song” MIDI clock type. I still found that this method — even in Record armed mode — had slightly higher latency values than the methods listed below.
Method 2: Machinedrum or Monomachine as MIDI Master
Why not flip it around? Set the Machinedrum to send MIDI clock and transport control, tell Ableton to listen to sync on the TurboMidi input, and hand-tune the MIDI clock sync delay until things line up. I ended up with an delay value of –26 ms — pretty large! This method works as expected, but still has some issues I don’t love:
- Ableton is having to try and lay stuff down while its tempo is shifting — it has problems syncing to incoming MIDI clock steadily. So your clips end up with basically random, non-integer tempos as their default Seg. BPM values.
- Timing jitter / error seems to accumulate over a few beats, steadily drifting earlier and then locking back to the downbeat.
- When it’s on, it’s close — but when it’s off, it strays pretty significantly. Some sequencer starts will be tight, others might not be.
- You can’t start/stop Live from anything except the outboard gear.
- You can’t skip around in the Arrange in Live — all song-position information comes from the outboard master.
- Apparently Live’s mixer latency compensation is irrevocably disabled when using external sync.
Method 3: Machinedrum Internal Sync Only, Receiving Transport Control From Live
Nice idea — it would mean the MD could use its own rock-steady notion of what a given BPM means, yet I could start/stop the sequence from Ableton, and jump around in the Arrange window.
This didn’t work very well — I ended up getting start offsets that made the MD run substantially behind Ableton, and without any subsequent clock updates that would sync things back up.
Method 4: Live as Master, using discrete MIDI & Audio Tracks
This is how I’m rolling for now. It seems to have the best blend of controllable integration into the Live workflow, acceptable latency and jitter, and flexible MIDI recording and playback for all tracks of the outboard gear.
- Live sends Sync out to Machinedrum and Monomachine. In my setup I’m using a MIDI clock delay of –9 ms for both.
- I create audio tracks for each input from the MNM and MD, and set them to Monitor “In” mode for lowest latency.
- Midi is routed via dedicated MIDI tracks — one per channel I need to send to. If you don’t want Live to bake in latency on recorded midi clips, make sure monitor mode is set to “Off” for these.
Here’s the Monomachine portion of the setup: (click image for full size)
Using this setup, I’m getting jitter of less than 1 ms. Strangely, it seems to alternate back and forth within that range every other quarter note. I’m not getting perfect phase-sync on every downbeat, but at least the “band” is reliably, roughly in time now.
- The Machinedrum’s TurboMidi mode doesn’t seem to have a substantial effect on all of this. I’ve noticed that it seems to slightly delay or rush the overall timing, which I’ve compensated for in the MIDI clock delay parameter when I’m using it. However, it doesn’t seem to have any better or worse jitter performance than non-TurboMidi enabled mode.
- If you want to be tight like Hybrid or BT, then get ready to drag some warp markers on your bounced audio tracks until everything’s all sample accurate. Or sequence your drums using audio hits in the Arrange timeline. I’m fine with things being pretty darn close for now.
- Switching Ableton to use “Pattern” mode MIDI clock seemed to result in clock drift over the course of each measure. By the end of the measure beats were all over the place (relatively speaking — they were still within 5 ms of the correct time).
That’s it. If you’ve read this far and have any tricks to get this stuff working better (without resorting to expensive hardware panaceas), please let me know! In my next blog post I’m going to write about Ableton’s interaction between latency compensation, different methods of monitoring, and MIDI Clock output.