Skip to content

Reference

SuperDirt

SuperDirt documentation is rather scarce and most of it needs to be inferred by looking at the source code. However, the behavior of most parameters is well known -- usually from experience -- by live coders. Moreover, SuperDirt can be customised freely to add custom effects and synthesizers. I'm working hard on gathering information about each and every parameter I can find :) Some of them are rather arcane. They are probably not meant to be used directly. Keep in mind that not all of them are useful and that you will likely find better options by building your own environment.

Sampling

Parameter Brief description Typical range
amp Sound volume (linear scaling) 0 -> x
gain Sound volume (exponential scaling) 0 -> 1
freq Pitch around given frequency 0 -> x
midinote Pitch around given MIDI note 0 - 127
note Pitch around given note ???
octave Pitch up or down depending on octave number 0 -> x
sound Implicit (first argument of D()) --------------
begin Start position of audio playback 0 -> 1  
end End position of audio playback 0 -> 1
speed Sample playback, impacts pitch. Negative will play reverse -x -> 0 -> x
accelerate Rising sample playback speed (pitch glissando) -x -> 0 -> x
cps  Implicit (cycles per second, inherited from Tidal) --------------
loop  ??? ???
delta Unused --------------
cut Cut other sounds playing on same orbit, start playing 0 or 1
legato Play sample for the given duration (without cutting others) 0 -> x
pan Pan sound from left to right speaker (by default) 0 -> 1
orbit Play sound/synth on the given audio effect bus (0 - 11) 0 - 11
latency Add a latency to audio playback (in seconds) 0 -> x
lag Similar to latency/offset 0 -> x
offset Similar to latency/lag 0 -> x

Audio effects

Space

Reverb
Parameter Brief description Typical range
room Size of the room 0 -> x
size Size of the reverb - keep below 1 (inf) 0 -> 1
dry Dry/Wet balance 0 -> 1
@swim
def test_fx(p=0.25):
    D('hh', amp=1,
            room='s($.S)',
            dry=0.1,
            size='s($)')
    a(test_fx, p=0.25)
Delay

The delay effect is initially built for Tidal, which is based on a cyclical time representation. However, it has been pre-configured here to work properly with Sardine.

Parameter Brief description Typical range
delay Wet/Dry 0 -> 1
delaytime Delay time 0 -> x
delayfeedback Amount of reinjection of dry signal - don't go over 1 0 -> .99
@swim
def test_fx(p=0.25):
    D('hh',
            speep='1|2|4',
            delay=1/2, delaytime=1/(2/3),
            delayfeedback='0.5+(r/4)',
            amp=1)
    a(test_fx, p=0.25)
Phaser

Not functioning as it should?

Parameter Brief description Typical range
phaserrate Speed of phaser (in hz) 0 -> x
phaserdepth Modulation amount 0 -> x
@swim
def test_fx(p=0.25):
    D('jvbass',
            midinote='C|Eb|G|Bb',
            phaserrate='1:10',
            phaserdepth='s($*2)', amp=1)
    a(test_fx, p=0.5)
Leslie

This is a simple emulation of a Leslie rotating speaker typically used in music for treating organ sounds, voices, and to add an eary tint to everything that goes through it. This is basically a way to play creatively with doppler effects.

Parameter Brief description Typical range
leslie Dry/Wet 0 -> x
lrate Rate 0 -> x
lsize Wooden cabinet size (in meters) 0 -> x
@swim
def test_fx(p=0.25):
    D('jvbass', amp=1, leslie=0.9,
            lrate=0.1, lsize='0.1+r*2')
    a(test_fx, p=0.25)
Tremolo

A simple tremolo effect.

Parameter Brief description Typical range
tremolorate Tremolo speed 0 -> x
tremolodepth Depth of tremolo 0 -> x
@swim
def test_fx(p=0.25, i=0):
    D('amencutup:[1:20]',
            tremolorate='16|32',
            tremolodepth='[0:1,0.25]',
            i=i)
    a(test_fx, p=0.5, i=i+1)
Granular weirdness

This is a weird granular effect probably intended to serve as a building block for some other effect but you can use it as is nonetheless. It will slice your audio sample into tiny fragments of it while applying some amount of pitch-shifting on every sample.

Parameter Brief description Typical range
psrate Pitch-shift rate 0 -> x
psdisp Pitch-shift dispersion 0 -> x
@swim
def test_fx(p=0.25, i=0):
    D('amencutup:[1:20]',
            psrate='2',
            psdisp='[0:1,0.5]',
            i=i)
    a(test_fx, p=0.5, i=i+1)

Filters

Parameter Brief description Typical range
cutoff Low-pass filter cutoff frequency (in hertz) 0 -> x us. >2Khz
hcutoff High-pass filter cutoff frequency (in hertz) 0 -> x us. < 500hz
bandf Bandpass filter cutoff frequency (in hertz) 0 -> x
resonance Filter resonance 0 -> 1
bandqf Bandpass resonance 0 -> x
@swim
def test_fx(p=0.25):
    D('jvbass',
            midinote='C.|C|Eb|G|Bb',
            cutoff='r*7000', resonance='r/2', amp=1)
    a(test_fx, p=0.5)

Distortion

Squiz

Will distort your signal, combination of multiple effects put together. It works better if you input multiples of two as parameters.

Parameter Brief description Typical range
squiz Amount 0, 2 -> x
@swim
def test_fx(p=0.25):
    D('tabla:r*200', cut=1,
            squiz='0|2|4|8',
            midinote='C|F|Bb|E5b', amp=1)
    a(test_fx, p=0.5)
Triode

Very gentle distortion. I actually have no idea about how the triode parameter works.

Parameter Brief description Typical range
triode Distortion amount 0 -> x
@swim
def test_fx(p=0.25):
    D('tabla:r*200', cut=1,
            triode='r', # comment me
            midinote='C|F|Bb|E5b', amp=1)
    a(test_fx, p=0.5)
Distort

Heavy distortion that will/can wildly change the spectrum of your sound.

Parameter Brief description Typical range
distort Distortion amount 0 -> x
@swim
def test_fx(p=0.25):
    D('sd:r*200', cut=1,
            distort='0|0.5',
            midinote='C|G', amp=1)
    a(test_fx, p=0.5)
Shaping

Shape is an amplifier that can enter distortion territory but with a gentle curve. It will naturally make your sound louder the more you ramp up the value.

Parameter Brief description Typical range
shape Amplification amount 0 -> x
@swim
def test_fx(p=0.25, i=0):
    D('amencutup:[1:20]', shape='[0:1,0.1]', i=i)
    a(test_fx, p=0.5, i=i+1)
Crush

A very agressive bit crushing effect. Works only when you input multiples of 2. 2 for extreme crushing, 32 for non-discernable.

Parameter Brief description Typical range
crush Crushing factor 0 -> x
@swim
def test_fx(p=0.25, i=0):
    D('bd, sn, hh, sn', crush=4, i=i)
    a(test_fx, p=0.5, i=i+1)
Ring Modulation

Can't make it work on the Sardine side.

Parameter Brief description Typical range
ring Ring modulation amount 0 -> x
ringf Ring modulation frequency 0 -> x
ringdf Modulation frequency slide 0 -> x

Sardine Library

Sardine is still in an early stage of development. The library is still in an unstable state. The reference will be included after the first stable release. Please refer to the Sardinopedia (code examples) or to the Tutorial section (long-form article) to learn more about Sardine and its usage.