Digital tape loops for norns

digital tape loops x 6.

I call this script “oooooo” because it is composed of six loops. They are like digital tape loops - you can level, pan, speed, slow, shorten, lengthen, dub, overdub any loop at any time.

I was inspired to make this after seeing tape loops circulating (pun sorta intended) all over the place. I like the idea of having multiple independent different loops, with different sizes, played on a different tape players with different eccentricities. I don’t have any cassette tapes but I have norns so I wrote this script to try to make digital tape loops.

future directions:

  • arc support (need help)
  • crow support (need help)
  • fix all the 🐛🐛🐛


  • audio input
  • norns
  • grid (optional)


  • E1 selects loops
  • E2 changes mode/parameter

in tape mode:

  • K2 stops
  • K2 again resets
  • K3 plays
  • K1+K2 clears
  • K1+K2 again resets
  • K1+K3 primes recording
  • K1+K3 again records

in other modes:

  • K2 or K3 activates or lfos
  • E3 adjusts parameter

all parameters are available via the global menu.


  • in tape mode, press K2 to stop/goto 0, and press K3 to start playing (once recorded).
  • in tape mode, press K1+K3 to prime recording. When primed, recording will automatically begin when incoming audio rises above a threshold. The recording threshold can be set by global parameter “recording -> rec thresh”.
  • in tape mode, you can force recording by hitting K1+K3 a second time.
  • recording stops after traversing the whole loop. You can stop it earlier with K2 or K3 (in tape mode) and that will shrink the loop to that point. You can set recording to continue to the next loop by setting the global parameter “recording -> rec thru loops” to yes.
  • by default, volume in “pinched” when starting/stopping recording to avoid pops from discontinuous signals. You can lower/raise the pinching by adjusting the global parameter “vol pinch”.
  • to record a loop over and over, infinitely, change recording -> stop rec after to its max value.

quick menu:

  • E2 changes mode/parameter on the quick menu
  • each parameter can be activated by K2 or K3 (activated lfo), and it can modified by E3
  • you can adjust the rate in continuous or discrete (±25%, ±50%, etc.) by changing the global parameter “continuous rate
  • the “warble” mode allows you to temporarily pitch up/down the current loop using E3

A loop:

  • “A” loop can control all loops. the tape mode works as before, but affects all loops.
  • the quick menu differs from loops but is also activated by K2 or K3, and modulated with E3


  • in startup menu you can load loops on startup, play loops on startup, start loops with random lfos and change the length of the starting loops (in beats). note: these settings persist next time you open oooooo!
  • in recording menu you can change pre/rec levels, recording threshold for primed recordings, the volume pinchoff, whether to record through loops, and how many times to loop over before stopping recording. note:_ these settings persist next time you open oooooo!
  • in all loops you can pause all lfos, set loop destruction (which slowly degrades loops), ramp volume up/down, randomize loops on reset, change the reset per loop
  • in loop X menu you can modify all lfos, and several other parameters of each loop.

oooooo ideas:

  • audibly ambient: record to each loop and then move them around the screen. video example
  • lucid looper: instead of overdubbing one loop, record six separate loops of the same size that have their own stereo field. change startup -> start length to 16 beats and startup -> start lfos random to yes. then change recording -> rec thru loops to yes and make sure recording -> stop rec after is 1. then reload oooooo, and record. video example
  • dangerous delay: tape delay with six tapes, that shapeshift. in recording menu set pre level and rec level to 0.5. set stop rec after to max. go to A loop. turn E2 to rand lfo and activate with K2. turn E2 to tape and press K1+K3 to record on all loops forever, making a stereo-field delay. (make it crazier by changing all loops -> randomize on reset to yes and all loops -> reset all every to X beats). video example

grid docs:

(thank you @tyleretters for this absolutely amazingly useful grid doc tool!)

loop mode

mellotron mode

volume mode


;install https://github.com/schollz/oooooo

 / #music #portfolio #norns 

Made by Zack, filed in Blog. 2019.