Subsystem

Subsample MIDI map: processing

controller

Form
integer or defined_name or written_number
Limits
at least 0, at most 127

A MIDI controller number, or a name a definitions file gives one.

process_step

Form
one of those listed below or a block of keys

One processor: its name alone, for its defaults, or its name with its parameters.

Accepts one of:

repitch in process_step

Form
boolean or null or a block of keys
Example
{note: C3}

Shifts the sound to a note, from the pitch Subsample detected in it, without changing its length.

note in repitch

Form
integer or string
Limits
at least 0, at most 127
Examples
48, C3

The note to shift the sound to. Left out, the note played, so the sound follows the keyboard.

stretch_quantize in process_step

Form
boolean or null or a block of keys
Examples
{grid: 16, strength: 0.7}, {beats: 8, grid: 32}

Moves each hit onto a beat grid by time-stretching the audio between hits, without changing its pitch.

tempo in stretch_quantize

Form
number or cc_binding
Limits
above 0
Example
120

The tempo the beat grid is laid out at. Left out, the session tempo, which follows MIDI clock when Subsample is set to.

bpm in stretch_quantize

Form
number or cc_binding
Limits
above 0

The tempo the beat grid is laid out at. Left out, the session tempo, which follows MIDI clock when Subsample is set to.

grid in stretch_quantize

Form
integer or cc_binding
Limits
at least 1
Example
16

How many equal parts a whole note is divided into: 16 puts every hit on a sixteenth note. Left out, the quantise resolution Subsample is configured with.

beats in stretch_quantize

Form
number or cc_binding
Limits
above 0
Example
8

How many beats of the tempo the whole sound is stretched to fill, first moment to last, whatever speed it was played at. Left out, the length follows the sample: the sound is stretched by the difference between the tempo Subsample detected in it and the tempo here.

strength in stretch_quantize

Form
number or cc_binding
Default
1
Limits
at least 0, at most 1
Example
0.7

How far each hit moves toward the grid. At 1 every hit lands on the grid, and lower values move each one partway, for a looser feel.

amount in stretch_quantize

Form
number or cc_binding
Default
1
Limits
at least 0, at most 1

How far each hit moves toward the grid. At 1 every hit lands on the grid, and lower values move each one partway, for a looser feel.

segment in stretch_quantize

Form
one of those listed below or integer
Limits
at least 1
Example
3

Plays one hit of the quantised sound per note instead of the whole sound: the next in turn, one at random, or always the same one, counted from 1. Left out, every note plays the whole sound.

Accepts one of:

beat_quantize in process_step

Form
boolean or null or a block of keys

Moves each hit onto a beat grid by time-stretching the audio between hits, without changing its pitch.

tempo in beat_quantize

Form
number or cc_binding
Limits
above 0

The tempo the beat grid is laid out at. Left out, the session tempo, which follows MIDI clock when Subsample is set to.

bpm in beat_quantize

Form
number or cc_binding
Limits
above 0

The tempo the beat grid is laid out at. Left out, the session tempo, which follows MIDI clock when Subsample is set to.

grid in beat_quantize

Form
integer or cc_binding
Limits
at least 1

How many equal parts a whole note is divided into: 16 puts every hit on a sixteenth note. Left out, the quantise resolution Subsample is configured with.

beats in beat_quantize

Form
number or cc_binding
Limits
above 0

How many beats of the tempo the whole sound is stretched to fill, first moment to last, whatever speed it was played at. Left out, the length follows the sample: the sound is stretched by the difference between the tempo Subsample detected in it and the tempo here.

strength in beat_quantize

Form
number or cc_binding
Default
1
Limits
at least 0, at most 1

How far each hit moves toward the grid. At 1 every hit lands on the grid, and lower values move each one partway, for a looser feel.

amount in beat_quantize

Form
number or cc_binding
Default
1
Limits
at least 0, at most 1

How far each hit moves toward the grid. At 1 every hit lands on the grid, and lower values move each one partway, for a looser feel.

segment in beat_quantize

Form
one of those listed below or integer
Limits
at least 1

Plays one hit of the quantised sound per note instead of the whole sound: the next in turn, one at random, or always the same one, counted from 1. Left out, every note plays the whole sound.

Accepts one of:

pad_quantize in process_step

Form
boolean or null or a block of keys
Example
{tempo: 120, grid: 8}

Moves each hit onto a beat grid by inserting silence between hits, so the audio keeps its own speed and timbre.

tempo in pad_quantize

Form
number or cc_binding
Limits
above 0
Example
120

The tempo the beat grid is laid out at. Left out, the session tempo, which follows MIDI clock when Subsample is set to.

bpm in pad_quantize

Form
number or cc_binding
Limits
above 0

The tempo the beat grid is laid out at. Left out, the session tempo, which follows MIDI clock when Subsample is set to.

grid in pad_quantize

Form
integer or cc_binding
Limits
at least 1
Example
16

How many equal parts a whole note is divided into: 16 puts every hit on a sixteenth note. Left out, the quantise resolution Subsample is configured with.

strength in pad_quantize

Form
number or cc_binding
Default
1
Limits
at least 0, at most 1
Example
0.7

How far each hit moves toward the grid. At 1 every hit lands on the grid, and lower values move each one partway, for a looser feel.

amount in pad_quantize

Form
number or cc_binding
Default
1
Limits
at least 0, at most 1

How far each hit moves toward the grid. At 1 every hit lands on the grid, and lower values move each one partway, for a looser feel.

segment in pad_quantize

Form
one of those listed below or integer
Limits
at least 1
Example
3

Plays one hit of the quantised sound per note instead of the whole sound: the next in turn, one at random, or always the same one, counted from 1. Left out, every note plays the whole sound.

Accepts one of:

filter_low in process_step

Form
boolean or null or a block of keys
Example
{freq: 800, resonance: 6}

Rolls off the frequencies above the cutoff, so the sound darkens as the cutoff comes down.

freq in filter_low

Form
number or cc_binding
Default
16.0e+3
Limits
above 1
Example
800

The frequency above which the filter rolls off.

resonance in filter_low

Form
number or cc_binding
Default
0
Limits
at least 0, at most 24
Example
6

A peak at the cutoff. At 0 the filter is flat, and higher values make the cutoff ring more.

filter_high in process_step

Form
boolean or null or a block of keys
Example
{freq: 120}

Rolls off the frequencies below the cutoff, so the sound thins as the cutoff goes up.

freq in filter_high

Form
number or cc_binding
Default
80
Limits
above 1
Example
120

The frequency below which the filter rolls off.

resonance in filter_high

Form
number or cc_binding
Default
0
Limits
at least 0, at most 24
Example
6

A peak at the cutoff. At 0 the filter is flat, and higher values make the cutoff ring more.

filter_band in process_step

Form
boolean or null or a block of keys
Example
{freq: 1200, q: 4}

Keeps the frequencies around its centre and rolls off those above and below.

freq in filter_band

Form
number or cc_binding
Default
1000
Limits
above 1
Example
1200

The frequency at the centre of what the filter keeps.

q in filter_band

Form
number or cc_binding
Default
0.7
Limits
at least 0.1, at most 20
Example
4

How narrowly the filter keeps the frequencies around its centre. A lower Q keeps a wider range, and a higher Q a narrower one.

resonance in filter_band

Form
number or cc_binding
Default
0
Limits
at least 0, at most 24
Example
6

A peak at the centre. At 0 the filter is flat, and higher values make the centre ring more.

reverse in process_step

Form
boolean or null or a block of keys

Plays the sound backwards.

saturate in process_step

Form
boolean or null or a block of keys
Example
{drive: 4}

Rounds off the peaks with a soft curve for warmth, then restores the peak level, which also lifts the quieter parts.

drive in saturate

Form
number or cc_binding
Default
6
Limits
at least 0
Example
4

How hard the sound is pushed into the curve. At 0 the processor has no effect, and more drive gives more distortion.

amount in saturate

Form
number or cc_binding
Default
6
Limits
at least 0

How hard the sound is pushed into the curve. At 0 the processor has no effect, and more drive gives more distortion.

compress in process_step

Form
boolean or null or a block of keys
Example
{threshold: -20, ratio: 8, attack: 10}

Turns the sound down whenever it rises above the threshold, evening out its level. Left without settings, the threshold, attack and release adapt to each sample.

threshold in compress

Form
number or cc_binding
Example
-20

The level above which the compressor turns the sound down, below full scale. Every sample is normalised before it is processed, so a threshold is the same depth below the peak for every sample. Left out, it sits a little below the sample's peak, so the compressor always acts.

ratio in compress

Form
number or cc_binding
Default
4
Limits
at least 1
Example
8

How strongly the level is turned down above the threshold. At 1 there is no compression, and a higher ratio squashes harder.

attack in compress

Form
number or cc_binding
Limits
at least 0
Example
10

How quickly the compressor acts once the sound passes the threshold. A slower attack lets the front of a hit through, for more punch. Left out, it follows the sample: slower for a percussive sound, faster for a gradual one.

release in compress

Form
number or cc_binding
Limits
at least 0
Example
120

How quickly the compressor lets go once the sound falls back below the threshold. Left out, it follows the sample: shorter for a quick decay, longer for a sustained sound.

knee in compress

Form
number or cc_binding
Default
6
Limits
at least 0
Example
12

How gradually compression begins around the threshold. At 0 it begins abruptly, and a wider knee eases it in.

makeup in compress

Form
number or cc_binding
Default
0
Example
3

Gain added after compression, to make up the level it took away.

lookahead in compress

Form
number or cc_binding
Default
0
Limits
at least 0
Example
5

How far ahead the compressor looks, so it acts before a peak arrives. The rendered sound starts this much later and loses as much from its end. At 0 there is no look-ahead.

limit in process_step

Form
boolean or null or a block of keys
Example
{threshold: -0.5}

Holds the sound below a ceiling, catching every peak that would pass it.

threshold in limit

Form
number or cc_binding
Default
-1
Example
-0.5

The highest level the sound may reach, below full scale.

release in limit

Form
number or cc_binding
Default
50
Limits
at least 0
Example
120

How quickly the limiter lets go after a peak.

lookahead in limit

Form
number or cc_binding
Default
5
Limits
at least 0
Example
10

How far ahead the limiter looks, so it catches a peak before it passes the ceiling. The rendered sound starts this much later and loses as much from its end. At 0 there is no look-ahead.

hpss in process_step

Form
boolean or null or a block of keys
Example
{keep: percussive}

Separates the sound into its sustained, tonal part and its hits, and keeps one of them.

keep in hpss

Form
one of those listed below

Which part of the sound to keep.

Accepts one of:

hpss_harmonic in process_step

Form
boolean or null or a block of keys

Separates the sound into its sustained, tonal part and its hits, and keeps one of them.

keep in hpss_harmonic

Form
one of those listed below

Which part of the sound to keep.

Accepts one of:

hpss_percussive in process_step

Form
boolean or null or a block of keys

Separates the sound into its sustained, tonal part and its hits, and keeps one of them.

keep in hpss_percussive

Form
one of those listed below

Which part of the sound to keep.

Accepts one of:

gate in process_step

Form
boolean or null or a block of keys
Example
{threshold: -40, hold: 20}

Silences the sound whenever it falls below the threshold, cutting the noise between and after hits. Left without settings, every value adapts to each sample.

threshold in gate

Form
number or cc_binding
Example
-40

The level below which the gate closes, below full scale. Left out, it sits a little above the sample's noise floor.

attack in gate

Form
number or cc_binding
Limits
at least 0
Example
1

How quickly the gate opens once the sound rises past the threshold. Left out, it follows the sample: fast for a percussive sound, slower for a sustained one, which avoids a click.

release in gate

Form
number or cc_binding
Limits
at least 0
Example
80

How quickly the gate closes once the sound falls below the threshold. Left out, it follows the sample: short for a percussive sound, long for a sustained one.

hold in gate

Form
number or cc_binding
Limits
at least 0
Example
20

How long the gate stays open after the sound falls below the threshold, so a decaying tail does not chatter. Left out, it follows the sample's decay.

lookahead in gate

Form
number or cc_binding
Limits
at least 0
Example
2

How far ahead the gate looks, so it opens before a hit arrives. The rendered sound starts this much later and loses as much from its end. Left out, it follows the sample: a little for a percussive sound, none for a sustained one.

distort in process_step

Form
boolean or null or a block of keys
Examples
{mode: fold, drive: 12}, {mode: bit_crush, bit_depth: 4, mix: 0.5}

Pushes the sound into a waveshaper, then restores its peak level. Left without settings, the drive and the tone adapt to each sample: a peaky sound is driven less, and a bright one is darkened more.

mode in distort

Form
one of those listed below
Default
hard_clip

The shape the waveshaper gives the sound.

Accepts one of:

drive in distort

Form
number or cc_binding
Example
12

Gain before the waveshaper: more drive, more distortion. Left out, it follows the sample's crest factor, so a peaky sound is driven less.

tone in distort

Form
number or cc_binding
Limits
at least 0, at most 1
Example
0.4

A low-pass filter after the waveshaper, which tames the harmonics it adds. At 1 the sound passes unfiltered, and lower values darken it. Left out, it follows the sample's brightness.

mix in distort

Form
number or cc_binding
Default
1
Limits
at least 0, at most 1
Example
0.5

The balance between the processed sound and the original. At 1 only the processed sound plays, and at 0 the processor has no effect.

bit_depth in distort

Form
integer or cc_binding
Default
8
Limits
at least 1, at most 16
Example
4

How many bits bit_crush keeps. Fewer bits sound coarser and grittier.

downsample_factor in distort

Form
integer or cc_binding
Default
4
Limits
at least 2, at most 64
Example
8

How many frames each kept frame fills in downsample mode. A higher factor gives a lower effective sample rate.

bit_depth in process_step

Form
boolean or null or integer or a block of keys
Limits
at least 1, at most 16
Examples
8, {bits: 8, dither: triangular}

Requantises the sound to fewer bits, for the grit of a vintage sampler's converter. It adds no drive, filtering or change of level.

bits in bit_depth

Form
integer or cc_binding
Default
12
Limits
at least 1, at most 16
Example
8

How many bits the sound is stored in. Fewer bits sound coarser and grittier.

dither in bit_depth

Form
boolean or one of those listed below
Default
none

Noise added before the sound is requantised, which trades the grit in quiet passages for a steady hiss, over silence too. true is triangular, and false is none.

Accepts one of:

radio in process_step

Form
boolean or null or a block of keys
Example
{mode: ssb, tune: 150, signal: 0.3}

Sends the sound over a radio link and receives it again: modulated, weakened by noise and fading on the way, and demodulated, rightly or deliberately wrongly.

mode in radio

Form
one of those listed below
Default
am

How the sound is sent.

Accepts one of:

demod in radio

Form
one of those listed below
Default
matched

How the sound is received, which may be deliberately wrong for how it was sent.

Accepts one of:

tune in radio

Form
number or cc_binding
Default
0
Example
150

How far the receiver is tuned off the station. A mistuned SSB voice sounds high or low and garbled.

signal in radio

Form
number or cc_binding
Default
0
Limits
at least 0, at most 1
Example
0.3

How weak the station is: more hiss, clicks on FM, and the receiver's gain swelling as the signal fades. At 0 the signal is strong.

static in radio

Form
number or cc_binding
Default
0
Limits
at least 0, at most 1
Example
0.5

How much atmospheric crackle breaks in. At 0 there is none.

fade in radio

Form
number or cc_binding
Default
0
Limits
at least 0, at most 1
Example
0.6

How deeply the signal swims in and out, as a distant shortwave station does. At 0 it holds steady.

bandwidth in radio

Form
number or cc_binding
Limits
above 0
Example
2500

How wide a range of audio frequencies the radio path passes. A narrower bandwidth sounds more muffled. Left out, each transmission uses its own.

stereo in radio

Form
one of those listed below
Default
mono

Whether the sound is received once, or once for each audio channel.

Accepts one of:

mix in radio

Form
number or cc_binding
Default
1
Limits
at least 0, at most 1
Example
0.5

The balance between the processed sound and the original. At 1 only the processed sound plays, and at 0 the processor has no effect.

freqshift in process_step

Form
boolean or null or number or a block of keys
Examples
1000, {shift_hz: 50, mix: 0.5}

Adds the same number of hertz to every partial, which breaks the ratios between harmonics: a small shift detunes and phases, and a large one sounds clangorous and metallic. It is not a pitch shift.

shift_hz in freqshift

Form
number or cc_binding
Default
0
Example
50

How far every partial moves. A negative shift moves them down.

mix in freqshift

Form
number or cc_binding
Default
1
Limits
at least 0, at most 1
Example
0.5

The balance between the processed sound and the original. At 1 only the processed sound plays, and at 0 the processor has no effect.

wobble in process_step

Form
boolean or null or number or a block of keys
Limits
at least 0
Examples
6, {depth: 6, rate: 0.8}

A slow, continuous drift of the tuning, like an unsteady oscillator.

depth in wobble

Form
number or cc_binding
Default
5
Limits
at least 0
Example
6

How far the tuning drifts either side of its centre.

rate in wobble

Form
number or cc_binding
Default
0.3
Limits
above 0
Example
0.8

How fast the tuning drifts back and forth.

base in wobble

Form
number or cc_binding
Default
0
Example
10

A constant shift that the drift rides on.

mix in wobble

Form
number or cc_binding
Default
1
Limits
at least 0, at most 1
Example
0.5

The balance between the processed sound and the original. At 1 only the processed sound plays, and at 0 the processor has no effect.

reshape in process_step

Form
boolean or null or a block of keys
Example
{attack: 5, release: 100}

Reshapes how the sound's level moves over time: tighten a loose kick, cut a reverb tail short, or give a soft onset more punch. Left without settings, it tightens the tail to suit the sample.

attack in reshape

Form
number or cc_binding
Limits
at least 0
Example
5

How long the sound takes to reach its peak. Left out, the sample's own attack is kept.

hold in reshape

Form
number or cc_binding
Default
0
Limits
at least 0
Example
20

How long the sound stays at its peak before it decays.

decay in reshape

Form
number or cc_binding
Limits
at least 0
Example
150

How long the sound takes to fall from its peak to the sustain level. Left out, the sample's own decay is kept.

sustain in reshape

Form
number or cc_binding
Default
1
Limits
at least 0, at most 1
Example
0.5

The level the sound settles at after its decay, as a share of its peak. At 1 it stays at the peak.

release in reshape

Form
number or cc_binding
Limits
at least 0
Example
100

How long the sound takes to fade out at its end. Left out, it follows the sample's decay, which tightens the tail.

transient in process_step

Form
boolean or null or a block of keys
Example
{gain: 6}

Turns the hits in the sound up or down against its sustained part, then restores the peak level.

gain in transient

Form
number or cc_binding
Example
6

How far the hits are turned up, or down where the gain is negative. Left out, it follows the sample's crest factor, so a peaky sound is tamed and a dull one enhanced.

amount in transient

Form
number or cc_binding

How far the hits are turned up, or down where the gain is negative. Left out, it follows the sample's crest factor, so a peaky sound is tamed and a dull one enhanced.

vocoder in process_step

Form
boolean or null or a block of keys
Examples
{carrier: reference}, {carrier: carriers/vowel-ah.wav, bands: 16, depth: 0.8}

Imposes the sound's changing spectrum on a carrier, so the carrier takes on the sound's rhythm and articulation.

carrier in vocoder

Form
one of those listed below or string
Limits
at least 1 character
Example
carriers/vowel-ah.wav

The sound the vocoder shapes: reference, or the path to an audio file.

Accepts one of:

bands in vocoder

Form
integer or cc_binding
Default
24
Limits
at least 1
Example
16

How many spectral bands the vocoder divides the sound into. Fewer sound more robotic, and more sound more natural.

depth in vocoder

Form
number or cc_binding
Default
1
Limits
at least 0, at most 1
Example
0.8

The balance between the vocoded sound and the original. At 1 only the vocoded sound plays, and at 0 the vocoder has no effect.

formant_shift in vocoder

Form
integer or cc_binding
Default
0
Example
-5

Moves the carrier's spectral bands up or down against the sound's own, which changes the apparent size of a voice.

cc_binding

Form
a block of keys
Examples
{cc: 74}, {cc: 74, channel: 2, min: 200, max: 8000, default: 1000}

A MIDI controller in place of a fixed value, so a knob or a fader sets it. A value outside what the parameter allows is refused when the map loads, and so is a binding on a parameter that takes a word.

cc in cc_binding

Form
controller
Required
yes
Examples
74, my.sampler_release

The MIDI controller that sets the value.

channel in cc_binding

Form
channel
Example
2

The only MIDI channel the controller is read on. Left out, every MIDI channel.

min in cc_binding

Form
number
Example
200

The value at the bottom of the knob's travel. Left out, the bottom of the parameter's own range. A min above max turns the knob round.

max in cc_binding

Form
number
Example
8000

The value at the top of the knob's travel. Left out, the top of the parameter's own range.

default in cc_binding

Form
number
Example
1000

The value until the controller first moves. Left out, the value the parameter has without the knob, or the middle of the knob's travel where that value lies outside it.