SOLVED :: MIDI Latency (Ableton)

hello! i am getting some unusual results sending MIDI data from Tidal to my DAW (Ableton).

if i run this simple test and record the output, i notice that each MIDI channel is mis-firing a few fractions of a cycle from one another despite sending each one identical instructions.

d1 $ stack [
  struct "t*2" $ n "0" # s "midi" # midichan 0
, struct "t*2" $ n "0" # s "midi" # midichan 1
, struct "t*2" $ n "0" # s "midi" # midichan 2
, struct "t*2" $ n "0" # s "midi" # midichan 3
, struct "t*2" $ n "0" # s "midi" # midichan 4
, struct "t*2" $ n "0" # s "midi" # midichan 5
, struct "t*2" $ n "0" # s "midi" # midichan 6
, struct "t*2" $ n "0" # s "midi" # midichan 7

i should note that i am not trying to sync any clocks (i don't really need that level of functionality). i am just confused why there is so much timing variation happening between the MIDI channels in this simple test example.

(running the latest Tidal, SC, and SuperDirt builds)

worksforme, but I don't have Ableton, just routing the MIDI signal via pipewire-jack to fluidsynth. I can put "fast 60" in front of this pattern, and it still mostly works (with some drop-outs).

See also Using MIDI | SuperCollider 3.12.2 Help "Use with caution"

Kit and I had a bit of a discuss on discord today - he's going to put a midi logger in between supercollider and ableton and try to find out where the latency is introduced (sc side, or ableton side)

@jwaldmann just curious, when you say it "works for you", you can confirm that multiple midi channels all receiving the same instructions are perfectly synced when you arm the tracks and record the output?

the code technically "works" in that, yes, it sends data. but you can see in the screenshot below that, once visualized, there is some severe offset between the various midi channels. i put a box around where each note starts (never mind the fact that this is on legato 1 so there should be no gap between notes, that's totally another problem it seems...)

@cleary this is what the midi utility is saying...everything is bang on...i just don't get it.

That's telling you that the latency is introduced after supercollider (which rules out tidal/superdirt/supercollider issues) - I'd be getting into your ableton settings/help forums from this point.

My guess is that there may be a latency or buffer setting in ableton that you may be able to adjust?

thanks y'all. i think i figured it out.

1 Like

What is the solution if a similar problem arises one day for another user?

I was not recording, just listening, and judging by ear. I can do more tests (record the audio output of fluidsynth from jack - or record MIDI signals with ardour, I guess that's possible. Tell me what you need.)

1 Like

@jwaldmann many sincere thanks, my friend. i believe it's sorted for now :slight_smile:

the solution to this was a bit counterintuitive and i had to go against my instincts a little. there is a setting in Ableton to "reduce latency when monitoring". naturally we think latency is bad so of course we want to reduce it... but this latency compensation was actually causing the problem to begin with so unchecking this setting did in fact reset my MIDI notes back to all begin at the same time again. who knew!

perhaps this will not be an issue for other users will need to consider if using other DAWs like Logic, Bitwig, FL Studio, etc. maybe just an Ableton thing.