Sloop v1.0.3 - Synchronized Looper (Updated for v0.6)

Updated for v0.6 here: Sloop v1.0.3 - Synchronized Looper (Updated for v0.6) - #99 by tomf

Hello everyone,

I’m excited to introduce a new custom unit I just finished building using the Middle Layer SDK! As a result this unit performs similarly to the built-in units with advanced buffer control and exceptional performance (~3% CPU).

I’m calling it Sloop (for synchronized looper), it’s a clock synced looping unit that allows you to record into a buffer with all input synchronized to a clock. For example, when pressing record the buffer recording will start at the next clock tick and proceed for a number of steps before terminating.

I’ve compiled a few patch ideas that I’ll repost here:

  1. 4 Bar Looper This is the default unit configuration. Connect an empty buffer, a clock that triggers once per bar, and a trigger to the record input. After engaging the unit, trigger the record input to write the incoming signal to the buffer for the next four bars. Once complete it will continue to play back the newly filled buffer. Trigger again to add overdubs!

  2. 2 Step Recorder As before connect an empty buffer and clock and engage the unit. Set the steps to 8 and the rSteps to 2. When the record input is triggered the incoming signal will be added to the buffer fo the next 2 steps only. Adjust the rFdX parameters to taste in order to avoid sudden level drops after the 2 steps are up.

  3. Random Sample Using a relatively fast clock, set steps to 16 and rSteps to 1. Randomly trigger the record input to capture clock synced segments from the incoming signal. Adjust rFdIn and rFdOut to taste to avoid clicking induced from the sudden buffer writes.

Documentation and download.

Any and all feedback appreciated!

Edit: demonstration video


Well done! :heart_eyes:

1 Like

Fantastic, can’t wait to try this. I previously developed this idea in a preset, using three sync’ed loopers in a three band container. If your bespoke unit works well, I will replace most of the preset’s guts by a bunch of sloopers!

1 Like

I just had a quick test and I’m really impressed with what you done. What a great tool to have. One control that I found in your custom menu, I would have liked to see on the “front panel” though: the erase buffer command. It’s something that I use all the time in my presets, emptying the buffer, replacing it by new sounds, while other loopers take over, that sort of tricks. Is that a sensible feature request, if I may call it that? But once again, brilliant work, it’s a very elegant unit, well done.

1 Like

Thanks! I put a lot of effort into making it sound almost transparent by default, I wanted to avoid the sudden level drop you get with most loopers.

Definitely keep trying it, it’s possible there’s more bugs that I haven’t found yet :slight_smile:

I’m not sure how it’s possible to zero a buffer on a trigger, I haven’t seen anything interact with them like that before but I can look into it.

One alternative is to trigger record and set the feedback to zero. This will effectively overwrite the buffer but its not as convenient for sure.

Ah yes, you are not using the pedal looper as a basis of course… I haven’t thought of that. In this preset Tricycle - a three band looper custom unit I’m using pedal loopers which have a Stop/Clear trigger input, so it’s easy to implement: just hit the stop trigger twice and the buffer is gone. Not sure if there is a way to do it in the feedback/dub looper units.

I will definitely keep testing this unit, don’t you worry! :slight_smile:

1 Like

So I looked into the pedal looper source and it appears to use a trick to only virtually clear the buffer. As far as I can tell it manipulates the feedback level to make it seem like the buffer is empty and then records over whatever is there.

This would be difficult to do in Sloop since the play head can be reset at any time so it’s hard to know when we’ve traversed the entire buffer.

Interesting! Too bad though.

I played with it some more and there is another feature that I found interesting at first, but also a little limiting. It’s the overdubbing behavior: whenever you hit the record button after initially recording, it starts overdubbing but only until as long as the loop lasts, then it toggles back to play mode. It can be a handy feature but also it prevent building a “seamless” loop. Do you think that could be a “setting” in the menu. Something like “overdubbing behavior”: continuous or one time.

The rSteps parameter would cover this I think, by default its 4 (the same as steps). By setting it higher you can record up to 32 steps. This could be increased of course.

On the other hand it’s possible to just patch this yourself by hooking the clock up to the record trigger and gating it on your own :slight_smile:

1 Like

I put together a demonstration video so if anyones interested they can see how it works without needing to download it :wink:


I’ve just added some much needed new features to this unit, greatly improving usability IMO:

  1. Fixed record length (@Bparticle )

Enable to lock the record length to the loop length. This is very convenient when you simply want to record for n beats and not have to worry about setting the separate loop values together.

  1. Reset on disengage

Reset the looper when the unit is disengaged. This is useful for syncing the unit to a drum machine when patching a run signal into the engage toggle.

  1. Reset on record

Reset the looper when a record is triggered. Useful for keeping the start of the recording at the front of the buffer, so the buffer can easily be saved and used again later without having to worry about alignment.

  1. UI Improvements

I’ve elided the secondary controls so they don’t get in the way during normal usage. Of course they’re all still available in the sub-views but hopefully this makes the average workflow more efficient.

I’ll try to make a video shortly to demonstrate and as always feedback appreciated!

Edit: link for convenience

Edit 2: demonstration video


The improvements look very slick. Thank you!

1 Like

Just fixed two bugs:

  1. Record length was being set to the loop length even when the option was turned off.

  2. Clicks introduced when using low feedback values caused by the fdbk level not being slewed along with the record level.

PS was just messing around with the unit as a tape delay which was pretty fun, might post a video later to show the patch.


Patching Sloop as a tape echo, complete with glitchy hold mode :slight_smile:

Video Link


thanks for making and sharing this wonderful unit!

wondering: is it possible to build a version that doesn’t have a preset loop length? record start/end would still be quantized to the incoming clock, but it would record as many bars as you want (assuming the buffer is long enough). seems like this ups the complexity… you’d have to somehow keep track of how many clock pulses are in a loop…


Hm good idea, I’ll see what I can come up with :slight_smile:


amazing! if you can crack this i can stop thinking about the 1010 black box or how i should just use ableton for looping :slight_smile:


Amazing unit, thank you! One question — were you able to do a quicksave (without saving buffers) and then — after a power cycle — load it and get it to work? in my case it won’t work until i remove Sloop from the global chain and insert it again.

Oh strange, yes I was. Make sure you have the latest code. How does it not work exactly?

edit: maybe you had an older version saved and updated it? Unfortunately v2 is not backwards compatible.

1 Like

Just tried again, still no luck. I’ve deleted the Sloop folder in /libs/ and replaced it with a freshly downloaded one from Github. I’m sure that’s me but I’ve not been able to figure it out so far.

Here’s what i’m doing:

  1. Create a patch similar to the “tape echo” patch from the video (with Sloop in a global chain)
  2. Create a buffer via Sloop’s menu.
    — at this point everything works great —
  3. Save a quicksave, answering “no” to the reminder that there are unsaved buffers in the pool (actually, even if you save them the result is the same)
  4. Reboot the ER-301
  5. Load the quicksave.
    — at this point it does not work (outputs the input signal) no matter what i do except delete Sloop, insert it again, create buffer etc. Then it works.

Firmware is the latest of course.

PS I love how it sounds! A small test run: