Sampling within Tidal

Damn @mrreason this looks cool as heck. Definitely going to try this out when I have a moment. What software are you using to trigger TidalCycles patterns btw? I think I recognize that but I can't recall what it's called.

EDIT: Oh shoot I just saw that this is a homebuilt project. (must have been thinking of something else) Dang this looks awesome.

1 Like

Holy Toledo this is amazing! I have it working, but I encounter SC server errors when cycling through the loop buffers. I'm not sure what is happening there. Using an edited version of yaxu's code above, I recorded this early this morning:

We do not have powers of time travel!

replacing 'loop0' (1)

replacing 'loop1' (1)

replacing 'loop2' (1)
FAILURE IN SERVER /n_set Node 1030 not found
FAILURE IN SERVER /n_free Node 1030 not found

replacing 'loop3' (1)
FAILURE IN SERVER /n_set Node 1031 not found
FAILURE IN SERVER /n_free Node 1031 not found

replacing 'loop4' (1)

replacing 'loop5' (1)
FAILURE IN SERVER /n_set Node 1033 not found
FAILURE IN SERVER /n_free Node 1033 not found

replacing 'loop0' (1)

replacing 'loop1' (1)
FAILURE IN SERVER /n_set Node 1034 not found
FAILURE IN SERVER /n_free Node 1034 not found

replacing 'loop2' (1)

replacing 'loop3' (1)
FAILURE IN SERVER /n_set Node 1037 not found
FAILURE IN SERVER /n_free Node 1037 not found

replacing 'loop4' (1)

replacing 'loop5' (1)

replacing 'loop0' (1)

I am glad that you have your fun with the looper! The error was in my code. I had fixed it locally but forgot to upload it to Github. Just use the current version and it should be working without the error messages now.

For the sake of completeness the explanation of what happens: The RecordBuf synth frees the buffRecord synth automatically when the recording is done (see doneAction: Done.freeSelf). But in the code I called the free synth method manually, so the looper was trying to free the synth twice and this caused the error, because the synth no longer exist.

I find your time travel recording very funny! With your piece I first had to think of Steve Reich's "It's gonna rain" from 1965. I'm also curious about the experiments other Tidal users than me do with the looper so thanks for sharing!

1 Like

Ahh!! I spent some time trying to figure that out. I was monitoring the node tree and noticed that some were releasing and others were delayed . I thought it was latency issue. Can't wait to use the new code. Thanks for sharing!

1 Like

I did some small, but important improvements to the looper:

  1. The dynamic allocation of a buffer is now working (I forgot to push it)
  2. The recorded buffer is immediately added to SuperDirt. So it is possible to access the buffer while it is written (canon structures incoming!)

@yaxu that means you don't need the legato anymore and the buffers will be created and written correctly (no gaps anymore!). Overlapping of recordings and buffers occurred because the length of the samples was not set. Now you can even do something like this:

d1 $ trigger 1 $ slow 8 $ s "loop" # lnr "<0 ~>" # linput 16
d2 $ trigger 2 $ slow 2 $ s "loop0" # pan "<0 0.25 0.5 0.75>"

I take advantag of the fact that TidalCycles always triggers a buffer from the beginning, regardless of its length. I record the canon "Brother John" - in German "Bruder Jakob" to demonstrate this and mess around with the speed of the loops in the second iteration. You can find the recording here:
So what is the result of this? I don't know, maybe some kind of multylayering canon structures? :smiley:

And if you want to start the recording from the beginning, then the length of playback and recording should be the same. That's it!


Hi ive been trying to use the looper but have been getting this error:
replacing 'loop0' (1)
SC_UdpInPort: received error - An existing connection was forcibly closed by the remote host

I am a total novice at all things super collider so I may have something strange set up but was wondering if anyone knew the error. May be something simple.

I'm not sure yet what exactly causes the problem with the looper code, but it seems to be that the problems is that I am sending osc messages. I found this opened SuperCollider issue on Github:

But since sending feedback messages is optional, I removed it from the basic-looper.scd and moved it to a new file named feedback-looper.scd.

You are welcome to try the new code from GitHub and then tell us if that fixes your problem.

By the way, the message replacing 'loop0' (1) comes from SuperCollider and is therefore perfectly normal. Maybe I should look if the message can be supressed?

It works now thanks a bunch!

Thankyou very much for this project. It's rlly exciting and relevant to me.

I'm having trouble getting it working, however. I'm able to write one or two loops, then I start recieving errors. It's the same error message that Mook recieved, but it seems to happen on the basic looper too. I first recieve one message then a different error repeats, like so:

This seems to happen when I try to write a loop and play a loop at the same time, maybe I need to write code that alternates recording time with playback time?

I'm no expert with code btw; sorry if my problem is obvious.


I am very happy to hear that you like this project!

But I'm just wondering about your error messages. This looks really strange. The current version of the basic looper does not send OSC messages by itself. Do you have any special setup? But generally writing and reading to a buffer should be possible in parallel.

Can you please share what your TidalCycles code looks like?

Otherwise, I will release a new version of the basic looper today or tomorrow, which should make it even easier to use. So if I can reproduce the problem with your TidalCycles code, I'll try to fix it as well!

1 Like

[Edit:] I just saw that the original GitHub link is wrong. You can find the project repository here:

As promised, I have uploaded a new version of the basic looper. I would like to ask you to try the new code from basic-looper.scd on GitHub. Please note the changed handling (I removed the lnr parameter , you don't need to specify each buffer name and everything is controllable with the n function).

Maybe this already solves your problems?


Virus be damned Eimear + I managed to make some progress (sorry the video is a bit quiet):

More info here:


That's awesome! I am very curious what comes out of the project.
Seeing this in the video makes me really want to use this live coding/live looping collaboratively in a project.

Sometimes I feel that I am still missing two or three arms :smiley:

1 Like

I used the time to simplify the Tidal looper under
All previous features are now in one file Looper.scd. And there is only one subfolder for the feedback examples I have used so far. There should be no breaking changes.

The biggest change is that there is now a true overdub mode that doesn't require any additional functions, which I think makes all the features more accessible and everything is all in one place now.


Here's another video from that (pre-lockdown) session:


Awesome! When I see it like this it catches my mind again that I still have so much to try out myself. Thanks for creating and sharing the video. It is very inspiring :slight_smile:

1 Like

I have now managed to record a new small performance and experimented a bit more with the looper. First I'm curious to see how this is accepted here, since in this genre (metal?), I think not so much exists yet in live coding?

Btw. I found the annotation from your video very helpful and got inspired by it.


Yes! need more metal! - For comparison, I wonder how Igorrr does it (e.g., Their wikipedia page says "cubase" which I guess has some automation but Tidal should be so much more expressive ... Mrreason is definitely onto something here. Go ahead!

NB: your camera swaps left-right? (or the poster in the background does) For true satanism that should be up-down? E.g.

1 Like

Just want to say a MASSIVE thank you for doing this <3 I love it, and am using it loads. Super simple to get working and has given me soooooooo many possiblities. THANK YOU!!!!!!!!!!!!!!!

1 Like

PS I have a live coded black metal/noise band :slight_smile: so you are not alone in live coded metal. We're called Trve Yorkshire Kvlt Ensemble.


We use FoxDot though not Tidal :dizzy_face: