How I got Hapax and Ableton Live into nearly perfect sync with M4L

The Problem: Like many producers, I use Hapax with Ableton Live. However, the synchronization of Live and Hapax remains an issue: If I slave Live to Hapax or other external clock, I get wonky timing. Specially after receiving transport signals, Ableton Live likes to lose track of the clock, resulting in pitched effects from any clock synced effects like delays. The alternative is to sync Hapax to Ableton. But then I need to keep track of Ableton transports, figure out how to start or stop the DAW or adjust the BPM. All this, while I just want to focus on using the Hapax instead of looking at the screen or fiddling with Midi Bindings. Specially in my use case, I don’t use Ableton for sequencing, only for recording, effects and mastering, this gets into the way.

My solution: I decided to try and clock Ableton Live by routing the cv clock output from the Hapax through my audio interface and writing a Max 4 Live device to translate this input into bpm and transport commands. While the CV tools already offer a comparable functionality, they suffer from similar problems as the midi synchronization, namely they drift quite a bit at transport. Also, they are not optimized for my setting, where I don’t have a special dc-coupled interface nor do I want to sacrifice two audio channels, one for clock and one for transport. After some time of tinkering, I came up with a device that produces a very stable and precise clock and derives transport signals from the starting and stopping of the cv clock signal.

How I tested it: I created two identical midi tracks with identical drum sets. One was triggered from the Hapax, the other from Ableton Lives internal sequencer, which both played the same drum sample in identical quarter notes. Starting the Hapax, both samples were played in sync so perfectly, it was impossible to distinguish them as different sounds. There were no phasing effects, as you would have them, if their timing varied as a result of jitter. I then left and let the sequencer run for about 22 Minutes. There was still no audible discrepancy between the sounds, and I could still make out no phasing.

For me, this solves the problem. It also allows me some conveniences, like separately turning on and off transport and clock sync. As a little caveat, the clock, because I buffered it to minimize drift, takes about a bar to precisely detect a new timing, so it’s not very useful for people who record tracks with varying bpm. However, I don’t think this is really more feasible with other forms of synchronization, aside from expensive specialist devices, perhaps. Once it has detected a tempo, the clock remains stable, even when transport is halted and restarted.

So, why am I writing this? I was thinking to put a little more effort into this and maybe publishing the device for a little tip or something. But beforehand, I would like to know if there is actually any interest in this. Also, perhaps someone with a DC coupled audio interface could help me test this, I would like to know if the way how I treat the signal still works with such an interface or if it needs a special setting.

2 Likes

Well that’s cool!
But my take on this is that there shouldn’t be any sync problems. If there are some it needs some fix.

Sure, but I don’t think there is anything squarp can do about it. I believe the problems I described are due to a mix of the limitations of the aged midi protocol and Abletons somewhat shoddy implementation. My hardware plays along nicely to the clock of the Hapax.

I would have expected more people to be interested in this, but I finished the device anyway. You can download it unter the following link:

https://www.sendspace.com/file/ts2a8x

1 Like

this is awesome - thanks for posting. currently don’t have an audio interface but will definitely be giving this a try once I get a new one.

Let me know how it works for you once you tried it. I am actually working on it again, because there is a delay issue when recording, where live takes some miliseconds to actually start recording after it is prompted to.