Rudiments: lofi percussion synth and sequencer for Norns


an 8 voice lofi percussion synthesizer and sequencer…


  • Norns/Fates


Important: After downloading and installing, you must run RESET or SLEEP before running.

Download the latest release and copy files to ~/dust/code/rudiments.


Launching randomizes all voices, and drops you into a euclidean sequencer (playfair). Controls are as follows:

E1 select
E2 density
E3 length
K2 reset phase
K3 start/stop

K1 = ALT
ALT-E1 = bpm
ALT+K3 = randomize all voices

Use the PARAMS menu to configure voices manually, set up clock/sync behavior, MIDI map, and manage voice presets.

Voice Architecture

  • OSC: triangle/pulse wave with frequency control
  • ENV: exponential percussive envelope with decay control
    • affects OSC pitch (with amount control) and amplitude simultaneously
  • LFO: triangle/pulse wave with frequency control, can run into audio levels
    • affects OSC pitch (with amount control)



Thanks to @tehn for writing playfair and @rbxbx for porting it to rudiments!


Some additional info…

The voice architecture was inspired by the Rakit Drum Synth, which was apparently inspired by the Boss PC-2/AMDEK PCK-100.

The sound is a little bleepy/lofi/weird :slight_smile: but I think can be fun for wonky IDM-y drums mixed with other sounds.

Edit: I also have very little idea what I’m doing in SuperCollider :wink: so I’m sure the code can be improved/optimized in some way.


Grid controls have been added. Emphasis is on ‘nudging’ the synth voice in a few ways & tapping in rhythms into the euclidean sequencer. Clear / reset sequence length provided to mute / roll before building up again. To get started, just tap on row 2. Taps in row 1 to clear.

New to Norns & Grid hacking so appreciate any feedback / suggestions. :slight_smile:


This is great, thanks. Are you planning to add the sequencer controls to the parameters menu so they can be mapped to MIDI CC?
Why does my osc1 LFO shape keep changing randomly?

The osc1 LFO shape change snuck in with my grid branch

you can revert it if you would like by setting

local accents = 0

Man, I’m really digging it.

Would love to have midi in so that it could be triggered by an external sequencer.


this is very cool, I really like the sounds it produces. definitely has its own character.

two questions:

  1. I’m trying to sync with ableton link, but can’t make it work. live finds norns and says they’re synced. clock source is set to link in norns parameters, and to external in rudiments settings. any ideas?

  2. Is there are way to rotate channels in the euclidean sequencer?


Sorry can you please explain how to sync a norns with ableton link? I would really like to do that

i don’t think link support is implemented in rudiments at the moment. but for scripts that does it’s very simple: first make sure norns and the computer you’re running live on are connected on the same wifi network, then just go to norns - parameters - edit - CLOCK > and set it to link.
tried it with less concepts for instance, and it works perfectly.

Very very appreciated! Thank you!

Figured I’d chime in on this thread - to be honest I don’t really use this script a lot myself, so further feature development is unfortunately unlikely… :confused: If anyone wishes to take over development I’d be happy to hand it over though.

And FWIW on a related note, I’ve been playing around trying to replicate parts of DFAM in Supercollider, so hopefully there’s another percussion synthesizer for Norns on the way eventually…


simple and delicious, a key to great cooking
thanks for creating this
the Download latest release up there is the same as what we would get from maiden install - correct?

only thing id say is maybe missing a on off button for the grid (maybe bottom right?)
Have a nice weekend

so i really like rudiments, both the sequencer (essentially playfair) & the sound engine, and would love to use them in other contexts.

@cfd90 would you agree to merge an eventual PR for the script to also ship w/ nb support + with a nb voice version of the engine?

(nb is a lib / system that allows decoupling engines & scripts, allowing the engine to be used in any nb compatible sequencer script)

i’d typically love to use: