Delayyyyyyyy: a simple, warm delay for norns



A simple, warm, playable delay for Norns. Includes modulation and stereo separation.


  • Norns/Fates
  • Audio source


Plug a mono (left input) audio source into your Norns.

ENC1 delay time
ENC2 feedback
ENC3 modulation/separation
KEY1+ENC1 mix


Install via Maiden from Community section.

Alternatively, run this in the Maiden REPL:


Please restart Norns after installing, as this script includes a new engine!

Repository is here to clone and/or contribute.


  • Support stereo input


Massive thanks to rukano from, whose code powers the Supercollider engine for this script.


Great, will check it out soon. To nitpick (as maiden will) the install line should be

1 Like

it sounds wonderful. love the modulation! thanks for sharing

1 Like

Added a quick audio demo, also delayyyyyyyy is now available via Maiden :slight_smile:

Just a heads up: you might need to refresh your community package list in Maiden, and also reminder to restart Norns after installing since this includes a new engine!


oooof this demo is love


oooof this demo is love

:slight_smile: 20 characters of thank you!


I was lucky enough to beta test this script and made a few things that are terrible examples of it as a delay but i like how they came out anyway :upside_down_face:

extremely modulated squiggle beat funz



with apologies for the dumb filenames


some_delay_lol is my jam, can’t wait to try this script!


Hi, I was just wondering what it would take to get the two crow inputs to operate as a modulation source to assign control to parameters like time and feedback? What would be a neat way to crow-ify a script like this?

I don’t have a Crow so this is a bit of guesswork, but from reading the docs it looks like you can read values from an input like this:

function process_stream(v)
  -- this function is called every 0.25 secs with a new value

crow.input[1].stream = process_stream
crow.input[1].mode("stream", 0.25)

Then, inside of the process_stream() function you could change delayyyyyyyy params like so:

params:set("time", v)  -- expects 0.01 to 2
params:set("feedback", v) -- expects 0 to 100
params:set("mix", v) -- expects 0 to 100
params:set("sep", v) -- expects 0 to 100

Please note the expected value ranges above - you’ll want to map input values to those ranges. I think that Norns will ensure you don’t go above the max value, but Supercollider doesn’t care and setting feedback greater than 100 will hurt your ears :frowning_face: Speaking from experience haha.


And I think I’d agree - feedback and delay time seem the most fun to modulate!

Just a note though, I added a smoothing Lag around the engine inputs to improve the sound (reduce glitches) when twirling the time param in particular. So, that parameter might not update at e.g. audio rate.


Thanks for your response! I appreciate the note regarding the smoothing as well. Despite the details you shared I was unfortunately not able to figure out how to implement the use of the Crow inputs. I need to spend more time studying!

Another thing I was wanting… and for anyone else who wants it… here’s a (likely very obvious) snippet of code to enable the use of the 4th encoder of Fates to control the Mix parameter. You would just swap this out with the original bits of code for that functionality on Fates… Feel free to point out if something about my modification to this code is not correct, as I’m pretty new to this.

Hidden For Tidiness

function enc(n, d)
if n == 4 then
params:delta(“mix”, d)
elseif n == 1 then
params:delta(“time”, d)
elseif n == 2 then
params:delta(“feedback”, d)
elseif n == 3 then
params:delta(“sep”, d)