A weird stereo delay effect for external audio.


Here’s my second Norns script. After the slightly more elaborate nmQuadroDubber, I wanted to make something simpler. As an exercise, I tried to create a kind of chained delay effect that fades in and out and also changes pitch. The user interface should display simple graphics then, instead of text. Coding this was fun! I find nmRain works well with drone music and plucky, minimal sound collages. Jazz music becomes funnier too :smiley:


  • Norns
  • Softcut
  • External audio input (or audio from Tape)
  • MIDI input (optional)


E1: choose cloud
K2: make it rain
K3: make it windy
E2: dry/wet
E3: cloud altitude

While a rain drop falls, it accumulates sound. As it hits the ground it sets the audio free, while it runs slowly into the earth. The higher the clouds the longer the rain drop falls. Wind may blow the clouds up or down.

Release History & Download

v0.0.5 - initial release
v0.0.6 - max delay time increased to 4 secs, freezing bug should be fixed (whoops)
v0.0.7 - fixed the edge case(?) of rain button mashing, which would also freeze the script. rain button mashing is now a feature and can be used to make more than one cloud rain at a time :stuck_out_tongue:
v0.0.8 - the rain won’t stop on its own anymore :umbrella:
v1.0.0 pan fix

gutHub zip download


in Maiden:

;install https://github.com/TuesdayNightMachines/nmRain/

It is what it is :sweat_smile: Let me know if you find any use for it or if you have ideas for improvements or feature additions.


I don’t have norns (yet) but just want to give a hearty thumbs up for the choice of descriptors. Bravo.


Awesome! Have you considered adding an option to use samples? :nerd_face:

Can’t wait to try it but I don’t have anything to plug in at the moment :v:

1 Like

How do you mean exactly? Loading a sample into each cloud and playing it back as the rain drop hits the ground?


Nope, just to load a sample from params as an input sound. For example Barcode has this option, it is nice to play your collection of samples through a script :star_struck:


you should be able to play TAPE files through the script already :slight_smile: just make sure that the tape input is turned up in the parameters menu. i just gave it a spin here using a sample :cowboy_hat_face:


Thanks I didn’t know this :rofl:

Now I can also use other scripts that required input :open_mouth:


Looks fun! Will definitely be trying a tape of Showers script thru this :slight_smile:


Now we just need my rainstick script idea/dream to become a reality?

Edit: Here


Do you have a link to that idea?

1 Like

another AMAZING script @NightMachines !!!
holy fracken wow! :stuck_out_tongue:

i might have ran into a :bug: .
sometimes the clouds would stop raining.
the only way i could restart them was to hit K2 then K3 and then K2 again.
(at least that seemed to work)
norns #2 seemed to keep stopping nut norns #3 seemed to keep playing.
after quitting the script and launching it again they both started to exhibit the same behavior.

i ran maiden on norns #2 to see if i could catch anything but this is all it posted:


script clear

script load: /home/we/dust/code/nmRain/nmRain.lua


script clear

script run

reading PMAP /home/we/dust/data/nmRain/nmRain.pmap

m.read: /home/we/dust/data/nmRain/nmRain.pmap not read.

Engine.register_commands; count: 0

___ engine commands ___

___ polls ___









script init

was attempting to create a storm…


Thank you so much, @SPIKE! Loving your triple Norns setup!


Sorry about the bug. I had hoped to have eliminated them. I’ll check it out tonight!

In case anybody wants to know exactly what’s going on under the hood of the script:

  • Each cloud is a Softcut voice
  • The cloud altitude is the voice’s sample time, between 0.1 and 4.0 seconds at normal playback rate
  • While a raindrop falls, the incoming audio is recorded to the voice’s allocated buffer region
  • When it hits the ground, the buffer is simply played back, with (manually coded) volume fade in and out and a steadily decreasing playback rate for a pitch down effect
  • Also, as soon as a raindrop hits the ground, another randomly select idle cloud/voice starts the process again, chaining the delays
  • K3 makes it “windy”, i.e. the clouds will randomly move up or down, changing their voices’ sample times

So normally only one raindrop is falling at a time and there should always be an idle voice/cloud to start after it hits the ground. But apparently not … this could happen if you mash K2 quickly, starting the rain process multiple times. This would normally crash the script, when more than six voices want to record or play, so in order to avoid this, I implemented a check, that will turn the rain off, if no idle voices/clouds are available.

However, I assume that the K2 button wasn’t mashed quickly and rather that, due to variable sample/playback times in connection with the K3 randomization/wind feature, a situation could arise where all six voices are playing back. So this would turn off the rain then too.


v0.0.8 is out now and this should be fixed! So bring an umbrella, because the rain won’t stop anymore :cloud_with_rain:

(unless you make it stop by pressing K2 again)


i’ll run the update tonight!

also…if anyone is curious…
this is what the rain storm of nmRain with the help of @Justmat Showers turned into.
nmRain is on two aux sends. :stuck_out_tongue: