A shepard tone generator


One of the first Eurorack modules I owned was the Make Noise Telharmonic. I loved messing around with the Spiratone mode on that module, but sadly I sold the module and replaced it with Just Friends. Now Just Friends has Spiratone too, with a little help from Crow and Norns!

This script has a simple SuperCollider engine that can be used without Crow or Just Friends.


  • norns
  • crow/just friends with i2c connection (optional)
  • grid (optional)


E2 selects the param id to edit
E3 changes the value of the selected param

Visualizer Params

pitch_min = minimum pitch in semitones (0 to 127)
pitch_max = maximum pitch in semitones (0 to 127)
num_voices = number of voices to use when generating a tone (1 to 40, just friends only uses the first 6)
voice_spread = number of semitones between voices (0 to 127)
voice_detune = additional spread between voices in cents (0 to 100)
time_interval = milliseconds between updates (13 to 1000, anything less than 13 seems to cause i2c issues)
gliss = toggle between glissando and pattern mode
pitch_interval = number of cents to increment each voice by on each update (-100 to 100)
amp_curve = function used to determine voice amplitude (linear, raised cosine, or gaussian)
gaussian_width = width of the gaussian amplitude curve in semitones (0 to 127)
drone = disable envelope generator on internal engine
decay = envelope decay time for internal engine

Voices are generated dynamically from a single offset. All voices wrap around the min/max pitch, so changing min_pitch, max_pitch, num_voices and voice_spread can create some weird patterns.

Glissando Mode

The tone is incremented by pitch_interval cents every time_interval milliseconds.

Pattern Mode

The tone is incremented by the current pattern step offset in semitones every time_interval milliseconds. The pattern step is incremented by one on each update and wraps at the end of the sequence.

Each step in the pattern can increment the sequence by +/- 0-12 semitones. A step can also contain a rest, preventing the tone from triggering.

Patterns can contain 1-64 steps.

Currently patterns can only be edited in the params menu or with a connected grid.

Grid Pattern Editor

Known Issues

  • Changing num_voices does not always disable voices on Just Friends


  • Sequence/pattern editor improvements
  • Clock sync
  • Split voices in stereo
  • Crow input/output mappings
  • Resonant bandpass engine for audio processing?


v1.0.0 - zip download



Updated with a grid sequencer prototype.

I’d love to hear your feedback on possible improvements to the UX! I don’t actually own a grid yet, (thanks to @okyeron for the TouchOSC grid script!) so I’m not sure if the led intensities make sense.

Updated with some more grid pattern editor refinements. See documentation above!