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