Page 1 of 1

Latency setting help

Posted: Tue Mar 03, 2020 1:14 pm
by phibow
Sorry for people looking searching the web and finding the same topic on 2 forums... I didn't know that sooperlooper had a forum so I posted on linux-musicians... Again sorry. The topic is here:

So yes, I am trying to have a setup working perfectly in time with Internal sync. I am sending the bpm (fixed value) via OSC. The thing I don't understand is how sooperlooper knows the start of the loop, I mean when using midi clock you have the BPM sent via a pulse (very old, not stable, fluctuating) and a MIDI START, STOP so sooperlooper knows about both the BPM and the start event. How to do that with OSC?

So the thread on linuxmusicians speaks about the latency setting. I am not able to have overdub working correctly. The recording is almost fine. Is it because sooperlooper doesn't have the start event?


Re: Latency setting help

Posted: Wed Mar 04, 2020 10:23 am
by phibow
Another related question, when looking at my saved session, I see this:
<Control name="trigger_latency" value="256" />

Care to explain this option?

Because I have exactly this amount of latency:

Re: Latency setting help

Posted: Thu Mar 05, 2020 12:49 pm
by jesse
Latency compensation is a troublesome beast in looping! It's hard to remotely troubleshoot someone's issues as well....

I didn't see an overview of how your system is setup and how you are doing your looping, to give any good answer regarding your question of start event and sync. Usually, in SL if you are using internal sync, then you are manually starting/stopping the record/overdub/etc operations. On the first/master loop the sync start is related to the moment you manually start the operation. If you are setting a BPM ahead of time and with quantize on that will define how the end of the loop operation is quantized, but the start is all on you.

You mentioned OSC, do you have a custom setup using OSC commands? What commands are you sending and when, etc?

I had to look into that trigger_latency parameter... it appears I am not exposing it in the GUI, but if you have auto-latency compensation turned on it is automatically set to the buffer size of the system. Otherwise, it isn't touched, which is why you may still see it set to 256 (I assume your buffer size) in that session. As for what it does, it appears to be related to avoiding jitter in trigger events, but honestly it has been too long since I tried to figure out the internals here. You should be able to send an OSC command that sets the trigger_latency (it is in the SL OSC docs) to see if that does anything for you.

Re: Latency setting help

Posted: Thu Mar 05, 2020 3:43 pm
by phibow
Hi Jesse, thank you so much, SL is very neat and the fact that you are still taking the time to answer questions makes it even better, thanks again. Yes, latency... in a perfect world such thing wouldn't exist.

So finally (will also post back on linux-musicians) it's working. Each setup is unique indeed, mine is a old USB 1.1 soundcard running on a Surface Pro 3 with a low latency kernel.

Code: Select all

1906.058 frames 43.221 ms total roundtrip latency
extra loopback latency: 882 frames
use 441 for the backend arguments -I and -O

Frames/period = 256
Periods/Buffer = 3
I didn't touch qjackctl to add the 441 latency, instead I removed the trigger_latency (set to 0) and specified the input_latency to 576 and the output_latency to 0 (yes finally overdub is working too with this setting).

Here's my setup:
Bitwig -> Pd -> SL -> back to Pd
Pd set the BPM (Bitwig & SL) via OSC. Send a start (to Bitwig) - metronome.
In PD I have a limiter with 64 sanples delay.

So lots of trial and error (comparing the metronome source to SL using Audacity to calculate the delay)... Finally found that the input latency is exactly my frames/period (256) * 2 + 64 (PD limiter delay) = 576! I do not understand, but I have perfect sync now. I have a feeling that the recording event is also quantized.

In the end it will be my fault if I am off tempo :) Yeah!

Re: Latency setting help

Posted: Thu Mar 05, 2020 5:26 pm
by jesse
That's great, it was a minor miracle that I was able to help!