Low latency tidal / strudel?

Hi all,

I'm looking to use Tidal or maybe Strudel in performance with instrumentalists, where I have low latency control e.g. for triggering start/stop and adjusting tempo. For this I'll need to run Tidal and SuperDirt at lower latency rather than the usual 200ms+ latency that is usually fine for live coding.

Does anyone have experience to share about using Tidal/Strudel for low latency controllerism and triggering of patterns?

Cheers

2 Likes

you could try and set the latency very short in tidalcycles? SuperDirt just forwards.

Yep I was just wondering if other people had experiences while also thinking about posts I could make to test federation to mastodon :wink:

Yesterday I did test tidal with low latency, I didn't think a lot about the numbers but this felt fairly instantaneous (using new config format from the current main branch):

tidalInst <- mkTidalWith [(superdirtTarget { oLatency = 0.01 }, [superdirtShape])] (setFrameTimespan (1/50) $ setProcessAhead (1/20) defaultConfig)

I made a quick tap tempo thing where that just sends mute messages to stop, cps changes from averaging a series of taps, and unmute and reset the clock to restart sound. I tested it jamming with a drummer and it already worked pretty well!

1 Like

This works OK but the low framespans can really cook the cpu. In theory though resetting the cycle should also be able to reset the clock completely so the frame span shouldn't get in the way of accurately restarting the cycle. In fact, this is almost what resetCycles does - it resets the cycle, the start time and the tick count. In practice actions like resetting the cycle aren't processed until the end of the current frame though, so you still get a lot of jitter between 0 and the frame span. I think this could be solved: