Dynamic — effect atlas¶
6 effects · 575 captures. Compressors and combined dynamics chains. The level-staircase probe gives the static input/output curve, the ratio and threshold, and attack and release from the overshoot and recovery at each step.
Part of the Motif ES effects teardown; the method and the cross-effect findings are in the main analysis (notebook).
How to read a card¶
Each effect gets one card, then a written breakdown.
- Header band. The effect's name, category, how many recordings exist, and a one-sentence summary written from the measurements.
- Tiles. The handful of numbers that matter most for this type of effect, at default settings. A dash means the value could not be measured, and the small caption says why.
- The knob console. One knob per control. Click a knob to select it and move the slider under the knobs to turn it. A knob's ring is its own travel, coloured stretch by stretch: green where turning it barely changes the sound, red where a small turn changes it a lot, grey where nothing measurable happens. A knob outlined in cyan was also recorded together with the selected one, and its ring changes as the slider moves; every other ring shows that knob with the rest at their defaults. Controls that showed no measurable change at all are listed under the console, not drawn.
- What each knob does. One bar per control, longest first. Bar length is the size of the change the knob makes, in multiples of the smallest change that matters in practice (1 dB of level, 20% of decay time, 10% of LFO rate…), on a log scale. Colour says what kind of change. ◆ marks readings taken with a test sound designed for that knob. Grey dots are knobs that did nothing with the other controls at default.
- Signature panel. The view that best explains this kind of effect: decay curves for a reverb, echo taps for a delay, the input/output curve for a compressor, harmonics against input level for a distortion, the LFO for a modulation effect.
- Knob × frequency. Each row is one knob at one tested setting; red means louder than default at that frequency, blue quieter. Modulation effects get a what the knobs touch matrix instead, because a running LFO has no single frequency response.
- Stereo. How the left and right inputs reach the outputs.
The breakdown under each card notes the structure the measurements reveal, flags caveats, and
names the tests in TESTS_NEEDED.md that would complete the picture. Below it, every knob is
charted with the range tested and what it does; hover a bar for the detail.
Show code
import warnings; warnings.filterwarnings("ignore")
import sys; sys.path.insert(0, "..")
import os; os.chdir("..") # the cache lives in the project root
import matplotlib.pyplot as plt
from IPython.display import HTML, Markdown, display
import load, knobs, cards, plots, iviz, gapfill, knobviz, vizstyle as V
V.setup()
from matplotlib_inline.backend_inline import set_matplotlib_formats
set_matplotlib_formats("svg") # figures embed as vector, not PNG
display(iviz.page_css())
df, curves = load.load()
noise = knobs.noise_table(df, curves)
g = gapfill.load()
def show(fig):
display(fig)
plt.close(fig)
def show_card(effect):
show(cards.effect_card(df, curves, effect, noise)[0])
def show_knobs(effect):
board = knobviz.console(df, curves, effect, noise)
if board is not None:
display(board)
_, main, rh = cards.merged_knobs(df, curves, effect, noise)
for h in iviz.knob_plots(effect, main, rh):
display(h)
def show_parts(parts):
for f, note in parts: # each chart, then its own explanation directly under it
f.show()
display(Markdown(note))
def show_gapfill(effect, stimuli=None, drives_only=False):
parts = iviz.gf_effect_parts(g, effect, stimuli, drives_only)
if parts:
display(Markdown(iviz.GF_INTRO))
show_parts(parts)
The family at a glance¶
Every effect in the category on the same few numbers, then all of them on one chart — drag the slider to bring one forward, hover for exact values.
Show code
knob_counts = {'Cmp+Dist+Dly': (11, 0), 'Cmp+Odrv+Dly': (11, 0), 'Compressor': (5, 0), 'MultiBand Comp 1': (5, 0), 'MultiBand Comp 2': (14, 0), 'Noise Gate': (2, 1)}
show(cards.family_overview(df, 'Dynamic', knob_counts, curves))
Show code
iviz.family_fig(df, curves, 'Dynamic').show()
Recap. Why: to compare the tone of every effect in the family on one chart. How to read it: each line is one effect's frequency response, centred on its own median; drag the slider to bring one forward, hover for exact values.
Technical explanation. Each effect's frequency response at the capture baseline — how much each frequency is boosted or cut on its way through — measured by log-sweep deconvolution, smoothed to 1/6 octave, averaged over repeat captures, and shifted to its own median so the chart compares tone shape, not loudness. Drag the slider to bring one effect forward. The chart below this text reads each curve off as three numbers: its peak, the range within 6 dB of the peak, and the span from peak to deepest cut.
Identical curves (under 0.5 dB apart), so the same processing at these settings — a shared tone stage, or, for an EQ left flat, no shaping beyond the capture chain: Compressor = Noise Gate. A presence peak between 2 and 8 kHz with a steep cut above it (a speaker-cabinet shape): Cmp+Dist+Dly, Cmp+Odrv+Dly. Not shown: level (each curve is centred on its own median), anything that changes over time.
Plain explanation: this is the effect's tone — which parts of the sound it makes louder or quieter. Curves that overlap exactly mean those effects do the same thing to your tone at these settings. A bump in the upper mids followed by a steep drop is what a guitar speaker does: it adds bite and removes harsh fizz. Cmp+Odrv+Dly rolls off the top end early, so it sounds darker.
In other words, the main points:
- Most shaping: Cmp+Odrv+Dly, 23 dB from peak to deepest cut.
- Same tone curve (within 0.5 dB): Compressor = Noise Gate.
- Speaker-cabinet shape (presence peak, steep cut above it): Cmp+Dist+Dly, Cmp+Odrv+Dly.
- Darkest (top end rolled off early): Cmp+Odrv+Dly.
Show code
iviz.tone_bands(df, curves, 'Dynamic')
Ratio, knee, attack, release and the gate, in physical units¶
Recap · Why: the staircase above uses one 440 Hz tone and its loudest step is 12 dB below these, so it could not reach the multiband compressors' knees or time attack and release directly. Three Gap Fill probes do: tone staircases up to −6 dBFS at 100 Hz, 1 kHz and 6 kHz; a tone that jumps 30 dB up and back; and a tone faded slowly through the Noise Gate.
How to read it: five charts follow, each with its own description directly under it.
Technical explanation. Compressor Ratio raw 0–7 reads 1, 1.5, 2, 3, 5, 7, 10 and 20.6 : 1 at 1 kHz, and within 0.5 of that at 100 Hz and 6 kHz: the same curve in all three bands. At defaults the knee sits near -42 dBFS at the probe and the −6 dBFS step is turned down 24 dB (the staircase above quotes its knee as recorded level, about 11 dB lower on the scale; the two agree within the 6 dB step size). Threshold moves the knee from -43 to -18 dBFS and switches compression off at raw 121; every setting up to raw 75 reads the same knee. Attack runs from 9 to 167 ms and Release from 40 to 916 ms (time to come within 1 dB of the settled level after a 30 dB step); at raw 15 it had not recovered one second later. MultiBand Comp 1 and 2 compress at 2.7:1 and 2.7:1 from about -21 and -19 dBFS at 1 kHz, 9 and 8 dB of reduction at −6 dBFS. The Noise Gate opens at -56 dBFS at raw 84 and -42 dBFS at raw 97 and closes within 0.5 dB of where it opened. At raw 72 and below its threshold lies under the ramp's −70 dBFS floor and cannot be read (T30). The knee is read where two fitted lines cross, from steps 6 dB apart.
Plain explanation: Ratio does what its label says, in eight fixed steps from no compression to near-limiting. Attack sets how much of a loud hit slips through before the compressor clamps down, from about 9 to 167 thousandths of a second; Release sets how long it takes to let go, from 40 thousandths of a second to nearly a full second. The multiband compressors only start working on loud signals, which is why the quieter test made them look inactive. The Noise Gate opens and closes at practically the same level.
In other words, the main points:
- Compressor Ratio is eight fixed steps: 1, 1.5, 2, 3, 5, 7, 10 and 20.6 : 1.
- Attack 9–167 ms, Release 40–916 ms, after a 30 dB step.
- Default knee near -42 dBFS; Threshold moves it up to -18 dBFS and off at maximum.
- MultiBand Comp 1 and 2: 2.7:1 and 2.7:1 from about -21 and -19 dBFS, reached for the first time by this probe.
- Noise Gate: opens at -56 dBFS at raw 84 and -42 dBFS at raw 97; under 0.5 dB between opening and closing.
Show code
show_parts(iviz.probe_parts(g, 'dynamics'))
What it shows. Ten tones from −60 to −6 dBFS through the Compressor, once for each of its eight Ratio settings.
How to read it. Input level runs left to right, output level upward. A steady 45° climb is no compression; the flatter a line runs above the bend, the higher the ratio.
What it found.
- The eight settings read 1, 1.5, 2, 3, 5, 7, 10 and 20.6 : 1, all bending near −42 dBFS.
What it shows. How long the Compressor takes to clamp down after a tone jumps 30 dB louder, at each Attack setting.
How to read it. Attack setting left to right, milliseconds upward (time to come within 1 dB of the settled level). Higher means more of a loud hit slips through.
What it found.
- 9 ms at the fastest setting to 167 ms at the slowest, rising smoothly.
What it shows. How long the gain takes to recover after the tone drops back by 30 dB, at each Release setting, for every effect with a compressor stage.
How to read it. Release setting left to right, milliseconds upward. Higher means the compressor holds on longer; hover a line for the effect and value.
What it found.
- The Compressor runs from 40 to 916 ms; at raw 15 it had not recovered a second later.
What it shows. The Noise Gate's gain as a 1 kHz tone fades slowly in (solid) and back out (dashed), for each Threshold setting the fade could reach.
How to read it. Input level left to right; 0 dB at the top is fully open. The steep cliff is the gate opening or closing.
What it found.
- It opens at −56 dBFS at raw 84 and −42 dBFS at raw 97, and closes within 0.5 dB of where it opened.
- Settings at raw 72 and below sit under the fade's −70 dBFS floor and cannot be read here (T30).
What it shows. The same ten tones through every dynamics effect at its default settings, with bypass dotted.
How to read it. A line that runs parallel to the dotted one is not compressing; where it bends flatter, compression has started.
What it found.
- MultiBand Comp 1 and 2 only bend near −21 and −19 dBFS (2.7:1 and 2.7:1), which is why quieter probes made them look inactive; the Compressor bends from about −42 dBFS.
Beyond level curves: speed, texture, family geometry and loudness¶
Recap · Why: an input/output curve in decibels says how much a compressor turns down, not how it moves, what it adds, or how the result sounds. This section re-reads the raw recordings for those three things: 467 timing captures (a tone that jumps 30 dB and drops back), 237 staircases (ten levels at three pitches) and 564 two-note ladders.
How to read it: eight groups of charts follow, each chart with its own description directly under it: speed of the gain, shape of the release, the gain's orbit, harmonics against level, intermodulation, all captures on eight axes, a map of similar behaviour, and loudness in phon and sone.
Technical explanation. Gain is the level of the 440 Hz component at the output (one-period sliding window, 2.3 ms resolution; four-period Hann window after the step down) less the probe level and the capture loop's own gain of −12.6 dB, and velocity is its Savitzky–Golay derivative. Compressor Attack 0–19 takes peak gain-reduction speed from 7.4 to 0.21 dB/ms and the 90% time from 4 to 139 ms; Release 0–14 takes peak recovery speed from 0.83 to 0.030 dB/ms (33 to 835 ms to 90%). The release is linear in dB after a hold: the first tenth of the recovery takes 1.9× its share of the time and the shape index is −0.03 (0 = constant dB/s, +0.16 = one-pole exponential). These times are to 90% of the gain change; the section above quotes time to within 1 dB of settled, so its figures differ. The Compressor's harmonics stay below 0.001% from −24 dBFS up; in Cmp+Dist+Dly total harmonic distortion passes 1% at −54 dBFS and holds 40% to −6 dBFS, almost entirely odd orders, because the compressor levels the signal ahead of a symmetric clipper. Loudness uses ISO 226:2003 with an assumed calibration of 83 dB SPL at −20 dBFS.
Plain explanation: A compressor is an automatic volume knob. These charts watch the knob turn: how hard it yanks down when a loud note arrives, how it eases back afterwards, and whether it adds any grit of its own. This one can pull the volume down in about 4 thousandths of a second or take 139; when the loud note ends it waits a moment, then turns back up at a steady pace. On its own it adds no grit at all; paired with a distortion it is gritty at every playing strength, soft or hard. The last charts translate decibels into how loud things actually sound.
In other words, the main points:
- Attack speed spans 35:1, from 7.4 to 0.21 dB/ms; the curve keeps one shape and only stretches.
- Release is a hold, then a constant-rate (linear-in-dB) recovery, not an exponential: shape index −0.03.
- Attack and Release are close to independent: across the whole Attack range the release's peak speed changes by 7%.
- The clean compressors add no measurable harmonics; the distortion chains hold about 40% THD from −54 dBFS upward, almost all of it odd harmonics.
- As heard, a 54 dB level range is 42× in loudness bypassed and 3.9× at the highest Ratio.
Show code
import kinetics, kviz
kin = kinetics.load()
Dynamic snap: the speed of gain reduction¶
Show code
show_parts(kviz.parts(kin, 'kinetics'))
What it shows. The speed of the Compressor's gain reduction, in decibels per millisecond, in the moments after a 440 Hz tone jumps from −40 to −10 dBFS. One ridge per Attack setting: the fastest at the front (cyan), the slowest at the back (amber).
How to read it. Time after the jump runs left to right on a log scale; the height of a ridge above its own baseline is how fast the gain is falling at that instant (the white bar at the right is the height scale). A tall, narrow spike at the left is a compressor that snaps shut; a low, wide swell further right is one that eases in. Hover any ridge for the exact speed.
What it found.
- At
Attack0 the gain is already falling at 7.4 dB/ms at the first readable instant and 90% of the 20 dB reduction is done in 4 ms. - At
Attack19 the peak speed is 0.21 dB/ms, 35 times slower, and it takes 139 ms. - The ridge never changes shape, only its scale: the same detector slowed down, not a different attack curve per setting.
- The first 1.2 ms cannot be resolved (one cycle of the test tone).
What it shows. The same view for the recovery: how fast the Compressor's gain climbs back after the tone drops from −10 to −40 dBFS, one ridge per Release setting.
How to read it. As above, with speed now meaning gain returning. A ridge that starts low, swells and then stops abruptly is a release that hesitates, then recovers at a steady rate and arrives all at once.
What it found.
- Recovery speed peaks at 0.83 dB/ms at
Release0 (33 ms to 90%) and falls to 0.030 dB/ms atRelease14 (835 ms). - At
Release15 the gain had not come 90% of the way back when the 1.3 s window ended. - Every ridge starts near zero and swells later: after the level drops the gain waits before it moves, so a short gap between notes passes before the compressor has let go.
- The first 6 ms are not shown: the loud tone is still ringing out of the signal path there and swamps the reading.
Release shape¶
Show code
show_parts(kviz.parts(kin, 'radar'))
What it shows. The recovery after a 30 dB drop, cut into five stages by how much of the gain has come back, and the time each stage takes compared with a release that recovers at a perfectly steady rate. Each outline is the median over all of an effect's Release settings.
How to read it. The dotted ring at 1× is a straight-line release. A spoke longer than the ring means the recovery lingers in that stage; shorter means it hurries. The dashed outline is the textbook exponential (opto-like) release, which hurries at first and lingers at the end.
What it found.
- Compressor waits before it moves (the first tenth takes 2.0× the straight-line time), then recovers a little faster than the line through the middle (0.74×); shape index −0.03.
- MultiBand Comp 1 waits before it moves (the first tenth takes 2.1× the straight-line time), then recovers a little faster than the line through the middle (0.91×); shape index −0.04.
- MultiBand Comp 2 (mid band) stays within 5% of the straight line after a short hesitation (1.26× on the first tenth); shape index −0.01.
- On the index, 0 is a straight line and +0.16 a one-pole exponential, so neither compressor has the fast-then-slow tail of an optical cell or an RC network: both release at a constant number of dB per second, the linear-in-dB recovery of a digital design, and the Compressor adds a hold before it starts.
- Cmp+Dist+Dly, Cmp+Odrv+Dly, Comp + Dist are read through a distortion stage that follows the compressor and flattens level changes, so their outlines describe what reaches the output, not the compressor alone: Cmp+Dist+Dly keeps a steady rate at first and lingers on the last stretch (1.7×); shape index +0.06; Cmp+Odrv+Dly keeps a steady rate at first and lingers on the last stretch (1.4×); shape index +0.04; Comp + Dist keeps a steady rate at first and lingers on the last stretch (1.4×); shape index +0.08.
Phase space: the gain's orbit¶
Show code
show_parts(kviz.parts(kin, 'phase'))
What it shows. The Compressor's gain plotted against how fast that gain is moving, over one cycle of the test tone getting 30 dB louder and then quiet again. Time is not an axis: it runs around each loop.
How to read it. Start at the right-hand white dot (quiet, gain at rest). When the tone jumps, the trace dives (gain falling fast) and travels left to the other white dot, the fully clamped gain, where it comes to rest on the centre line. When the tone drops, it rises a little above the line and drifts back to the start. Each loop is open at the top of its dive: the first 1.2 ms after the jump cannot be resolved. The vertical scale is stretched near zero so the slow return is visible beside the fast dive. A bypassed effect would be a single dot.
What it found.
- All seven loops share nearly the same upper edge: the release hardly depends on
Attack(its peak speed runs from 0.126 to 0.118 dB/ms across the whole range). - Only the lower edge moves, from a dive of 7.4 dB/ms at
Attack0 to 0.21 dB/ms atAttack19. - Every loop is smooth and closes on itself: one gain value, one speed, no wobble or overshoot in the control signal.
Saturation texture: the harmonic matrix¶
Show code
show_parts(kviz.parts(kin, 'harmonics'))
What it shows. The 2nd to 7th harmonics that Cmp+Dist+Dly adds to a pure tone, at ten input levels from −60 to −6 dBFS, default settings.
How to read it. Input level runs left to right, the harmonic number upward; the upper block is a 1 kHz note, the lower a 100 Hz note. Brighter amber is a louder harmonic and the number in each cell is its level in dB below the note itself. Hatched cells are within 10 dB of the noise measured between harmonics: nothing measurable there.
What it found.
- Total harmonic distortion passes 1% at −54 dBFS. At −6 dBFS the 3rd harmonic is strongest at −10 dB and distortion totals 40% on the 1 kHz note and 41% on the 100 Hz note; only odd harmonics (3rd, 5th, 7th) clear the noise at that level, the signature of a symmetric clipper.
- The columns barely change from −54 dBFS to −6 dBFS: the compressor ahead of the clipper feeds it the same level whatever comes in, so the distortion does not clean up when you play softly.
What it shows. The 2nd to 7th harmonics that Cmp+Odrv+Dly adds to a pure tone, at ten input levels from −60 to −6 dBFS, default settings.
How to read it. Input level runs left to right, the harmonic number upward; the upper block is a 1 kHz note, the lower a 100 Hz note. Brighter amber is a louder harmonic and the number in each cell is its level in dB below the note itself. Hatched cells are within 10 dB of the noise measured between harmonics: nothing measurable there.
What it found.
- Total harmonic distortion passes 1% at −54 dBFS. At −6 dBFS the 3rd harmonic is strongest at −11 dB and distortion totals 29% on the 1 kHz note and 41% on the 100 Hz note; only odd harmonics (3rd, 5th, 7th) clear the noise at that level, the signature of a symmetric clipper.
- The columns barely change from −54 dBFS to −6 dBFS: the compressor ahead of the clipper feeds it the same level whatever comes in, so the distortion does not clean up when you play softly.
What it shows. The 2nd to 7th harmonics that Compressor adds to a pure tone, at ten input levels from −60 to −6 dBFS, default settings.
How to read it. Input level runs left to right, the harmonic number upward; the upper block is a 1 kHz note, the lower a 100 Hz note. Brighter amber is a louder harmonic and the number in each cell is its level in dB below the note itself. Hatched cells are within 10 dB of the noise measured between harmonics: nothing measurable there.
What it found.
- From −24 dBFS upward total harmonic distortion stays below 0.017% in both blocks: this effect changes level without adding harmonics.
- Any dim cells at low input levels are the noise floor, as on the bypass matrix.
What it shows. The 2nd to 7th harmonics that MultiBand Comp 1 adds to a pure tone, at ten input levels from −60 to −6 dBFS, default settings.
How to read it. Input level runs left to right, the harmonic number upward; the upper block is a 1 kHz note, the lower a 100 Hz note. Brighter amber is a louder harmonic and the number in each cell is its level in dB below the note itself. Hatched cells are within 10 dB of the noise measured between harmonics: nothing measurable there.
What it found.
- Total harmonic distortion passes 1% at None dBFS. At −6 dBFS the 3rd harmonic is strongest at −50 dB and distortion totals 0% on the 1 kHz note and 0% on the 100 Hz note; only odd harmonics (3rd, 5th, 7th) clear the noise at that level, the signature of a symmetric clipper.
- The columns barely change from None dBFS to −6 dBFS.
What it shows. The 2nd to 7th harmonics that MultiBand Comp 2 adds to a pure tone, at ten input levels from −60 to −6 dBFS, default settings.
How to read it. Input level runs left to right, the harmonic number upward; the upper block is a 1 kHz note, the lower a 100 Hz note. Brighter amber is a louder harmonic and the number in each cell is its level in dB below the note itself. Hatched cells are within 10 dB of the noise measured between harmonics: nothing measurable there.
What it found.
- Total harmonic distortion passes 1% at None dBFS. At −6 dBFS the 3rd harmonic is strongest at −59 dB and distortion totals 0% on the 1 kHz note and 0% on the 100 Hz note; only odd harmonics (3rd, 5th, 7th) clear the noise at that level, the signature of a symmetric clipper.
- The columns barely change from None dBFS to −6 dBFS.
What it shows. The 2nd to 7th harmonics that the bypassed signal path adds to a pure tone, at ten input levels from −60 to −6 dBFS, default settings.
How to read it. Input level runs left to right, the harmonic number upward; the upper block is a 1 kHz note, the lower a 100 Hz note. Brighter amber is a louder harmonic and the number in each cell is its level in dB below the note itself. Hatched cells are within 10 dB of the noise measured between harmonics: nothing measurable there.
What it found.
- From −24 dBFS upward total harmonic distortion stays below 0.005% in both blocks: the capture chain itself adds nothing measurable, so every bright cell on the other matrices belongs to the effect.
- The few dim cells at low levels are the noise floor showing through a quiet note.
Intermodulation constellation¶
Show code
show_parts(kviz.parts(kin, 'imd'))
What it shows. Two notes, 220 Hz and 697 Hz, played together through Cmp+Dist+Dly at ten levels. Each dot is a tone the effect added that was not played: amber for sums and differences of the two notes (intermodulation), cyan for harmonics of one note alone. 54 possible products up to the 7th order are checked at every level.
How to read it. Frequency runs left to right, input level upward; a bigger, brighter dot is a louder product (hover for its level and the arithmetic that produces its frequency). The white diamonds are the two notes. Drag the slider to change Drive. Products within 6 dB of the noise beside them are left out.
What it found.
- At
Drive0 the effect adds 11 measurable products at most, the first handful appearing at −60 dBFS; atDrive127 there are 50 at −6 dBFS and already 42 at −60 dBFS. The amber dots between and below the notes are what makes a distorted chord sound muddy where a single distorted note sounds merely bright: they are not harmonically related to either note.
What it shows. Two notes, 220 Hz and 697 Hz, played together through Cmp+Odrv+Dly at ten levels. Each dot is a tone the effect added that was not played: amber for sums and differences of the two notes (intermodulation), cyan for harmonics of one note alone. 54 possible products up to the 7th order are checked at every level.
How to read it. Frequency runs left to right, input level upward; a bigger, brighter dot is a louder product (hover for its level and the arithmetic that produces its frequency). The white diamonds are the two notes. Drag the slider to change Drive. Products within 6 dB of the noise beside them are left out.
What it found.
- At
Drive0 the effect adds 17 measurable products at most, the first handful appearing at −60 dBFS; atDrive127 there are 48 at −6 dBFS and already 38 at −60 dBFS. The amber dots between and below the notes are what makes a distorted chord sound muddy where a single distorted note sounds merely bright: they are not harmonically related to either note.
Family geometry: every capture on eight axes¶
Show code
show_parts(kviz.parts(kin, 'parallel'))
What it shows. All 319 timing captures of the dynamics family (each a different effect or control setting) as one line apiece, crossing eight measurements that a level curve cannot show: how long the gain takes to clamp and how fast it moves at its quickest, how much of a sudden hit gets through in the first millisecond, how long and in what shape the gain recovers, how far the gain moves for a 30 dB jump, and the distortion (at −10 dBFS) and idle noise that come with it.
How to read it. Each vertical rule is one measurement with its own scale (lowest value at the bottom, highest at the top, both printed). Follow a line left to right to read one capture; lines that travel together are settings that behave alike. Click a name in the legend to hide or isolate an effect; hover a point for the setting and the value. A line that breaks has no reading on that axis, usually because a distortion stage after the compressor pins the output level and hides the attack.
What it found.
- Two populations separate cleanly on the right-hand axes.
- Compressor, MultiBand Comp 1, MultiBand Comp 2 sit below 0.46% distortion with idle noise from −99 to −89 dBFS; Cmp+Dist+Dly, Cmp+Odrv+Dly, Comp + Dist sit at 39–41% with noise −73 to −65 dBFS, 24 dB noisier on average, and remove almost the whole 30 dB step because their clipper, not their compressor, sets the output level.
- On the left, the Compressor fans out along attack time and clamp speed in step (slower attack, lower speed), while most MultiBand Comp 2 lines lie on top of each other: its low and high band controls do not touch a 440 Hz tone.
Family geometry: the behaviour map¶
Show code
show_parts(kviz.parts(kin, 'galaxy'))
What it shows. A map of all 319 timing captures. Each capture's two gain curves (clamping down, then letting go; 280 points) are compared with every other capture's, and the two directions along which the curves differ most become the map's axes (principal component analysis). No effect names or settings go into the calculation.
How to read it. One dot per capture, coloured by effect, larger for higher settings of the control being stepped; a thin line joins the settings of one control in order, so each control draws a path. Distance is difference in behaviour: dots on top of each other responded identically. The axes are in dB of curve difference and have no other meaning.
What it found.
- The first two components carry 99% of all the variation, so the flat map loses little.
- Three islands form: the Compressor, MultiBand Comp 2, and the three distortion chains together, which the map cannot tell apart because their clipper pins the output whatever the compressor ahead of it does.
- Within an island each control draws its own arm: the Compressor's
AttackandReleasepaths leave the same point (the default) in different directions, 118 and 104 dB long. - The tight clump in MultiBand Comp 2 is every low-band and high-band setting landing on the same spot.
Loudness as heard: phon and sone¶
Show code
show_parts(kviz.parts(kin, 'loudness'))
What it shows. The Compressor's eight Ratio settings again, but with the output expressed as loudness in sones instead of decibels. Make-up gain is removed (every curve is matched to bypass at the quietest step) so the curves show squashing alone. Loudness needs a playback level, which a recording does not have: these charts assume monitors set so a −20 dBFS tone plays at 83 dB SPL (the film and broadcast reference). Phon values use the ISO 226:2003 equal-loudness contours for pure tones; sones double for every 10 phon.
How to read it. Input level left to right; loudness upward on a doubling scale, so one gridline up sounds twice as loud. The dotted line is the untouched signal. The lower a curve ends, the less loud the loud notes are allowed to get.
What it found.
- Bypassed, the loudest step sounds 42 times as loud as the quietest.
- At
Ratio7 (21:1) it sounds only 3.9 times as loud: the 54 dB between the softest and loudest note has become a loudness difference a listener would call roughly 4-fold.Ratio1 (1.5:1) leaves 18×.Ratio3 (3.0:1) leaves 8×.Ratio5 (7.0:1) leaves 5×.
What it shows. The loudness range between a soft note (−42 dBFS) and a loud one (−6 dBFS) at three pitches, bypassed and through each compressor at its default settings, in phon (10 phon is a doubling of loudness).
How to read it. Taller bars mean more of the difference between soft and loud survives. Compare each coloured bar with the grey bypass bar of the same pitch.
What it found.
- The same 36 dB step is not the same size to the ear at every pitch: bypassed it spans 51 phon at 100 Hz but 36 at 1 kHz and 35 at 6 kHz, because loudness grows faster with level in the bass (a quiet bass note falls toward inaudibility sooner than a quiet mid note).
- The Compressor leaves 17, 12 and 12 phon in the three bands, so it removes 34 phon of bass range against 24 at 1 kHz: the same ratio is heard as a stronger squeeze on low notes.
- The multiband compressors remove different amounts per band by design.
What it shows. What a listener hears after a loud note stops and a quiet one continues: the quiet note's loudness, as a percentage of what it would be with no compressor action, against time, for six Release settings.
How to read it. Time after the loud note runs left to right (log scale). A curve low on the chart means the quiet note is still being held down; where it crosses the dotted line the note is back to half its normal loudness.
What it found.
- Immediately after the loud note the quiet one is at 24% of its normal loudness (the compressor is still holding 20 dB of gain reduction).
- At
Release0 it is half as loud again after 20 ms; atRelease15 that takes 1241 ms. - Because loudness follows level on a compressed scale, the last few dB of recovery are barely audible: the ear hears the release as finished well before the meter does.
Step size, the multiband bands and the gate¶
Three things the single 30 dB step on one tone could not show, from captures made for the purpose: how attack and release change with the size of the jump, what MultiBand Comp 2's low and high bands do on tones of their own, and how fast the Noise Gate opens and shuts.
Show code
show_parts(kviz.followup_parts(g))
What it shows. How long the Compressor takes to clamp down when a tone jumps up by 6, 12, 18, 24, 30 and 34 dB from the same quiet level, at its fastest, default and slowest Attack.
How to read it. The size of the jump runs left to right, the time upward. A flat line would be an attack that takes the same time however hard it is hit.
What it found.
- The attack is not a fixed time: at the default setting it takes 14 ms for a 6 dB jump and 34 ms for a 34 dB one.
- A harder hit takes longer to bring under control, which is what a detector with a fixed time constant does when it has further to travel.
- Times here are to within 1 dB of the settled level, read from a 7 ms level window.
What it shows. The same six jumps on the way back down: how long the gain takes to recover after each.
How to read it. As above. A straight rising line means the recovery time is proportional to how far the gain was turned down.
What it found.
- Recovery takes 84 ms after the smallest jump and 259 ms after the largest at the default setting, rising in step with the amount of gain reduction (6 to 25 dB): a wait of about 37 ms, then about 109 dB of recovery per second whatever the depth.
- That is the hold followed by a constant-rate release found from the single 30 dB step above, now confirmed across six depths.
Attackshifts the whole line up by the time the slower attack adds.
What it shows. MultiBand Comp 2's Attack for each of its three bands, timed on a tone that sits inside that band (100 Hz, 440 Hz, 6 kHz) jumping 30 dB.
How to read it. The setting runs left to right, the time to clamp down upward; one line per band.
What it found.
- With a tone of its own each band answers its control: the high band runs from 18 to 379 ms and the low band from 36 to 283 ms.
- On the single 440 Hz tone used before, the low and high controls did nothing, because that tone only reaches the mid band.
- The 100 Hz reading uses a 20 ms level window (two cycles), so low-band times under about 20 ms cannot be told apart.
What it shows. The same for Release: time for each band's gain to recover after its tone drops 30 dB.
How to read it. As above. A gap in a line is a setting where the recovery was too fast or too small to time.
What it found.
- The high band recovers in 16 to 903 ms across its range.
- The low band reads 82 to 185 ms, with far less spread than the other two.
- Where a line turns back down at the longest settings, the gain had not finished recovering when the 1.5 s segment ended, so those points understate the time.
What it shows. The compressor stage of the three distortion chains, timed on a 30 dB level step with Drive turned to its minimum, at each Attack setting. The dotted line is the stand-alone Compressor.
How to read it. The setting runs left to right, the time upward. With the drive at its default the clipper pins the output level and none of this is visible; at minimum drive the compressor's own action comes through.
What it found.
- Cmp+Dist+Dly 14 to 143 ms; Cmp+Odrv+Dly 14 to 143 ms; Comp + Dist 16 to 167 ms.
- At minimum drive the chains still remove about 20 dB of the 30 dB step.
- These takes were recorded 1.8 dB hotter than the stand-alone Compressor's, which shifts where the threshold is crossed slightly but not the timing.
What it shows. The compressor stage of the three distortion chains, timed on a 30 dB level step with Drive turned to its minimum, at each Release setting. The dotted line is the stand-alone Compressor.
How to read it. The setting runs left to right, the time upward. With the drive at its default the clipper pins the output level and none of this is visible; at minimum drive the compressor's own action comes through.
What it found.
- Cmp+Dist+Dly 29 to 795 ms; Cmp+Odrv+Dly 29 to 794 ms; Comp + Dist 46 to 918 ms.
- The chains' compressors follow the same law as the stand-alone Compressor, setting for setting, so it is the same stage placed ahead of a clipper.
- These takes were recorded 1.8 dB hotter than the stand-alone Compressor's, which shifts where the threshold is crossed slightly but not the timing.
What it shows. How long the Noise Gate's output takes to come up once it starts to open, when a tone jumps from −60 to −20 dBFS, at each Attack setting. Threshold is at its highest (raw 97) so the quiet tone is below it.
How to read it. The setting runs left to right, the opening time upward (from 20 dB below the open level to 1 dB below it).
What it found.
- Opening takes 5.5 ms at
Attack0 and 83 ms atAttack19. - The delay before it starts to open cannot be read: the recording has no time reference (test T2).
- The shortest readable time is about 4 ms, the width of the level window.
What it shows. What the gate does after the tone drops back to −60 dBFS, at each Release setting: how long it stays open before it starts to close, and how long the closing takes.
How to read it. The setting runs left to right, milliseconds upward. The amber line is the wait, the cyan line the closing itself (from 10% to 90% of the way down).
What it found.
Releasemostly sets a wait, not a fade: the gate stays open for 20 ms atRelease0 and 611 ms atRelease14, then shuts in 12 to 58 ms.- Shut, it turns the tone down by at least 31 dB; the true figure may be larger, because the closed level is at the recording's noise floor.
- At
Release15 and above it had not started to close 1.3 s after the tone dropped.
Cmp+Dist+Dly¶
Show code
show_card('Cmp+Dist+Dly')
Cmp+Dist+Dly: what the measurements say¶
Recap. A dynamics processor with 12 tested controls, 11 of which measurably change the sound. Beyond mix and level, the biggest lever is Delay Time: gain compression across the input range -55.8 → -19.0 dB. Measured with 123 captures: 64 on the main sweep + tone probe (one control at a time), 27 on matched probes (harmonicTwoTone ×17, steppedTransients ×7, dynamicsStaircase ×3), 32 two-control pairs.
Technical explanation. At default settings: output -23.9 dBFS RMS (crest 7.6 dB); stereo width 0.02, L/R correlation +1.00; spectral tilt -0.27 dB/octave; 96% of the impulse response's energy in its first 5 ms; harmonics H2 -40 dB, H3 -9 dB re the linear response.
Structure:
- staircase output (dBFS) for inputs -59→-32.4, -53→-32.2, -47→-32.2, -41→-32.1, -35→-32.1, -29→-32.1
- hard-knee fit: ratio —:1, threshold — dB, fit error 0.05 dB RMS
- same input on the way down vs up: -0.0 dB (gain still recovering if negative)
Two-control pairs captured: Comp Attack×Comp Release, Delay Mix×Comp Release, Delay Mix×Drive, Delay Time×Comp Release, Delay Time×Delay Feedback Level, Delay Time×Delay Mix, Delay Time×Drive, Drive×Comp Release (interaction analysis in the main notebook).
Caveats:
- some long settings decay more slowly than the recording allows; their T30 is a lower bound
- at least one setting mutes the output; those captures are excluded from spectral analysis
Plain explanation: The control to reach for first is Delay Time: gain compression across the input range -55.8 → -19.0 dB. After that, Delay Mix, Drive and Comp Release make the next biggest differences. Dist Output Level and DryWet set how much of the effect you hear and how loud it is. At default the output is close to mono.
In other words, the main points:
- 11 of 12 tested controls measurably change the sound.
- Biggest lever beyond mix and level: Delay Time, 36.7× the smallest change that matters (gain compression across the input range -55.8 → -19.0 dB).
- At default: stereo width 0.02, output -23.9 dBFS RMS.
- Main caveat: some long settings decay more slowly than the recording allows; their T30 is a lower bound.
- Still to measure: T1, T3, T4 (see
TESTS_NEEDED.md).
Show code
show_knobs('Cmp+Dist+Dly')
Gap Fill: each control in physical units¶
Every control stepped on a probe matched to what it does (17 steps for time and rate controls, 9 for the rest), read as the physical quantity it sets: how far a delay tap moves, level or treble lost per repeat, LFO rate and pitch swing, gate length, THD, intermodulation, compressor ratio, knee, attack and release, and where a gate opens and closes. Times are read inside one capture (channel against channel) because Gap Fill runs fully wet and file starts wander by about ±50 ms.
Show code
show_gapfill('Cmp+Dist+Dly')
How to read these charts. Each chart is one control. Left to right is the control's raw value as sent to the Motif (low to high setting); the height of the line is the physical quantity that control sets, measured from the recording. The title names the control, then the test signal used.
Comp-Attack · dynamicsTiming. Played: a 440 Hz tone that jumps 30 dB louder and back. The line is ms attack: how long the compressor takes to clamp down after the tone jumps louder; here it barely moves (about 0 throughout).
Comp-Ratio · bandStaircase. Played: tones stepped from −60 to −6 dBFS at 100 Hz, 1 kHz and 6 kHz. The line is ratio: the compression ratio above the knee: a ratio of 4 turns a 4 dB rise into a 1 dB rise; here it barely moves (about 100 throughout).
Comp-Release · dynamicsTiming. Played: a 440 Hz tone that jumps 30 dB louder and back. The line is ms release: how long the compressor takes to let go after the tone drops; here it goes from 17.9 at raw 0 to 780 at raw 15.
Comp-Threshold · bandStaircase. Played: tones stepped from −60 to −6 dBFS at 100 Hz, 1 kHz and 6 kHz. The line is dBFS knee at 1 kHz: the input level where compression starts; here it barely moves (about -55.5 throughout).
Delay-Feedback-Level · sweepTail. Played: a sweep followed by silence. The line is dB per repeat: how much quieter each repeat is than the one before; closer to 0 means more repeats; here it goes from -0.0209 at raw 0 to -0.026 at raw 127, dipping to -16.9.
Delay-Time · sweepTail. Played: a sweep followed by silence. The line is s T30: the reverb decay time (extrapolated to 60 dB of decay); here it goes from 3.64 at raw 0 to 7.2 at raw 16383, dipping to 2.94.
Drive · transferSine. Played: a 100 Hz sine at −6 dBFS. The line is dB THD: total harmonic distortion: how loud the added overtones are against the note itself. −40 dB is clean, 0 dB would be overtones as loud as the note; higher on the chart means more distortion; here it goes from -74.2 at raw 0 to -7.36 at raw 127.
Drive · twoToneLadder. Played: two notes together (220 and 697 Hz), stepped from very quiet to loud. The line is dB intermodulation: how loud the extra tones created between two notes are against the notes themselves, which is what makes chords sound harsh; higher means harsher; here it goes from -42.5 at raw 0 to -10.5 at raw 127, dipping to -45.8.
Low-Gain · bandStaircase. Played: tones stepped from −60 to −6 dBFS at 100 Hz, 1 kHz and 6 kHz. The line is dBFS out for −6 dBFS in, 100 Hz: the output level for the loudest step, which shows a gain control's effect; here it goes from -36.8 at raw 0 to -14.6 at raw 76.
Mid-Gain · bandStaircase. Played: tones stepped from −60 to −6 dBFS at 100 Hz, 1 kHz and 6 kHz. The line is dBFS out for −6 dBFS in, 1 kHz: the output level for the loudest step, which shows a gain control's effect; here it goes from -30.6 at raw 0 to -20.8 at raw 76.
Cmp+Odrv+Dly¶
Show code
show_card('Cmp+Odrv+Dly')
Cmp+Odrv+Dly: what the measurements say¶
Recap. A dynamics processor with 12 tested controls, 11 of which measurably change the sound. Beyond mix and level, the biggest lever is Delay Time: echo tail T30 0.02 → 26.02 s. Measured with 125 captures: 64 on the main sweep + tone probe (one control at a time), 29 on matched probes (impulseTail ×7, spectralSweep ×7, steppedTransients ×7, harmonicTwoTone ×5, dynamicsStaircase ×3), 32 two-control pairs.
Technical explanation. At default settings: output -24.3 dBFS RMS (crest 7.4 dB); stereo width 0.02, L/R correlation +1.00; spectral tilt -0.98 dB/octave; 99% of the impulse response's energy in its first 5 ms; harmonics H2 -51 dB, H3 -9 dB re the linear response.
Structure:
- staircase output (dBFS) for inputs -59→-32.7, -53→-32.4, -47→-32.3, -41→-32.3, -35→-32.3, -29→-32.2
- hard-knee fit: ratio —:1, threshold — dB, fit error 0.07 dB RMS
- same input on the way down vs up: -0.0 dB (gain still recovering if negative)
Two-control pairs captured: Comp Attack×Comp Release, Comp Threshold×Drive, Comp Threshold×Low Gain, Delay Time×Comp Threshold, Delay Time×Delay Feedback Level, Delay Time×Drive, Delay Time×Low Gain, Drive×Low Gain (interaction analysis in the main notebook).
Caveats:
- some long settings decay more slowly than the recording allows; their T30 is a lower bound
- at least one setting mutes the output; those captures are excluded from spectral analysis
Plain explanation: The control to reach for first is Delay Time: echo tail T30 0.02 → 26.02 s. After that, Comp Threshold, Drive and Low Gain make the next biggest differences. Dist Output Level and DryWet set how much of the effect you hear and how loud it is. At default the output is close to mono.
In other words, the main points:
- 11 of 12 tested controls measurably change the sound.
- Biggest lever beyond mix and level: Delay Time, 38.9× the smallest change that matters (echo tail T30 0.02 → 26.02 s).
- At default: stereo width 0.02, output -24.3 dBFS RMS.
- Main caveat: some long settings decay more slowly than the recording allows; their T30 is a lower bound.
- Still to measure: T1, T3, T4 (see
TESTS_NEEDED.md).
Show code
show_knobs('Cmp+Odrv+Dly')
Gap Fill: each control in physical units¶
Every control stepped on a probe matched to what it does (17 steps for time and rate controls, 9 for the rest), read as the physical quantity it sets: how far a delay tap moves, level or treble lost per repeat, LFO rate and pitch swing, gate length, THD, intermodulation, compressor ratio, knee, attack and release, and where a gate opens and closes. Times are read inside one capture (channel against channel) because Gap Fill runs fully wet and file starts wander by about ±50 ms.
Show code
show_gapfill('Cmp+Odrv+Dly')
How to read these charts. Each chart is one control. Left to right is the control's raw value as sent to the Motif (low to high setting); the height of the line is the physical quantity that control sets, measured from the recording. The title names the control, then the test signal used.
Comp-Attack · dynamicsTiming. Played: a 440 Hz tone that jumps 30 dB louder and back. The line is ms attack: how long the compressor takes to clamp down after the tone jumps louder; here it barely moves (about 0 throughout).
Comp-Ratio · bandStaircase. Played: tones stepped from −60 to −6 dBFS at 100 Hz, 1 kHz and 6 kHz. The line is ratio: the compression ratio above the knee: a ratio of 4 turns a 4 dB rise into a 1 dB rise; here it barely moves (about 100 throughout).
Comp-Release · dynamicsTiming. Played: a 440 Hz tone that jumps 30 dB louder and back. The line is ms release: how long the compressor takes to let go after the tone drops; here it goes from 18.6 at raw 0 to 818 at raw 15.
Comp-Threshold · bandStaircase. Played: tones stepped from −60 to −6 dBFS at 100 Hz, 1 kHz and 6 kHz. The line is dBFS knee at 1 kHz: the input level where compression starts; here it barely moves (about -55 throughout).
Delay-Feedback-Level · sweepTail. Played: a sweep followed by silence. The line is dB per repeat: how much quieter each repeat is than the one before; closer to 0 means more repeats; here it goes from -0.0827 at raw 0 to -0.0721 at raw 127, dipping to -14.6.
Delay-Time · sweepTail. Played: a sweep followed by silence. The line is s T30: the reverb decay time (extrapolated to 60 dB of decay); here it goes from 4.81 at raw 0 to 15.7 at raw 16383, dipping to 3.26.
Drive · transferSine. Played: a 100 Hz sine at −6 dBFS. The line is dB THD: total harmonic distortion: how loud the added overtones are against the note itself. −40 dB is clean, 0 dB would be overtones as loud as the note; higher on the chart means more distortion; here it goes from -73.6 at raw 0 to -7.38 at raw 127.
Drive · twoToneLadder. Played: two notes together (220 and 697 Hz), stepped from very quiet to loud. The line is dB intermodulation: how loud the extra tones created between two notes are against the notes themselves, which is what makes chords sound harsh; higher means harsher; here it goes from -43.4 at raw 0 to -10.5 at raw 127.
Low-Gain · bandStaircase. Played: tones stepped from −60 to −6 dBFS at 100 Hz, 1 kHz and 6 kHz. The line is dBFS out for −6 dBFS in, 100 Hz: the output level for the loudest step, which shows a gain control's effect; here it goes from -37.3 at raw 0 to -14.1 at raw 76.
Mid-Gain · bandStaircase. Played: tones stepped from −60 to −6 dBFS at 100 Hz, 1 kHz and 6 kHz. The line is dBFS out for −6 dBFS in, 1 kHz: the output level for the loudest step, which shows a gain control's effect; here it goes from -32.3 at raw 0 to -19.1 at raw 76.
Compressor¶
Show code
show_card('Compressor')
Compressor: what the measurements say¶
Recap. A dynamics processor with 5 tested controls, 5 of which measurably change the sound. Beyond mix and level, the biggest lever is Ratio: attack overshoot 2.2 → 17.1 dB. Measured with 64 captures: 29 on the main sweep + tone probe (one control at a time), 11 on matched probes (dynamicsStaircase ×11), 24 two-control pairs.
Technical explanation. At default settings: output -38.1 dBFS RMS (crest 27.7 dB); stereo width 0.43, L/R correlation +0.63; spectral tilt +0.09 dB/octave; 100% of the impulse response's energy in its first 5 ms; harmonics H2 -71 dB, H3 -63 dB re the linear response.
Structure:
- staircase output (dBFS) for inputs -59→-59.0, -53→-55.7, -47→-53.7, -41→-51.7, -35→-49.7, -29→-47.8
- hard-knee fit: ratio 3.03:1, threshold -57.0 dB, fit error 0.01 dB RMS
- same input on the way down vs up: -0.0 dB (gain still recovering if negative)
Two-control pairs captured: Attack×Release, Attack×Threshold, Ratio×Attack, Ratio×Release, Ratio×Threshold, Release×Threshold (interaction analysis in the main notebook).
Caveats:
- at least one setting mutes the output; those captures are excluded from spectral analysis
Plain explanation: The control to reach for first is Ratio: attack overshoot 2.2 → 17.1 dB. After that, Attack, Release and Threshold make the next biggest differences. Output Level sets how much of the effect you hear and how loud it is. At default it has a moderate stereo spread.
In other words, the main points:
- 5 of 5 tested controls measurably change the sound.
- Biggest lever beyond mix and level: Ratio, 10.0× the smallest change that matters (attack overshoot 2.2 → 17.1 dB).
- At default: stereo width 0.43, output -38.1 dBFS RMS.
- Main caveat: at least one setting mutes the output; those captures are excluded from spectral analysis.
- Still to measure: T1 (see
TESTS_NEEDED.md).
Show code
show_knobs('Compressor')
Gap Fill: each control in physical units¶
Every control stepped on a probe matched to what it does (17 steps for time and rate controls, 9 for the rest), read as the physical quantity it sets: how far a delay tap moves, level or treble lost per repeat, LFO rate and pitch swing, gate length, THD, intermodulation, compressor ratio, knee, attack and release, and where a gate opens and closes. Times are read inside one capture (channel against channel) because Gap Fill runs fully wet and file starts wander by about ±50 ms.
Show code
show_gapfill('Compressor')
How to read these charts. Each chart is one control. Left to right is the control's raw value as sent to the Motif (low to high setting); the height of the line is the physical quantity that control sets, measured from the recording. The title names the control, then the test signal used.
Attack · dynamicsTiming. Played: a 440 Hz tone that jumps 30 dB louder and back. The line is ms attack: how long the compressor takes to clamp down after the tone jumps louder; here it goes from 8.61 at raw 0 to 167 at raw 19.
Ratio · bandStaircase. Played: tones stepped from −60 to −6 dBFS at 100 Hz, 1 kHz and 6 kHz. The line is ratio: the compression ratio above the knee: a ratio of 4 turns a 4 dB rise into a 1 dB rise; here it goes from 1 at raw 0 to 20.6 at raw 7.
Release · dynamicsTiming. Played: a 440 Hz tone that jumps 30 dB louder and back. The line is ms release: how long the compressor takes to let go after the tone drops; here it goes from 40.3 at raw 0 to 916 at raw 14.
Threshold · bandStaircase. Played: tones stepped from −60 to −6 dBFS at 100 Hz, 1 kHz and 6 kHz. The line is dBFS knee at 1 kHz: the input level where compression starts; here it goes from -43 at raw 0 to -17.8 at raw 105.
MultiBand Comp 1¶
Show code
show_card('MultiBand Comp 1')
MultiBand Comp 1: what the measurements say¶
Recap. A dynamics processor with 5 tested controls, 5 of which measurably change the sound. Beyond mix and level, the biggest lever is High Gain Offset: release settle 9 → 976 ms. Measured with 73 captures: 34 on the main sweep + tone probe (one control at a time), 11 on matched probes (dynamicsStaircase ×11), 28 two-control pairs.
Technical explanation. At default settings: output -32.8 dBFS RMS (crest 14.4 dB); stereo width 0.40, L/R correlation +0.67; spectral tilt -1.37 dB/octave; 100% of the impulse response's energy in its first 5 ms; harmonics H2 -71 dB, H3 -48 dB re the linear response.
Structure:
- staircase output (dBFS) for inputs -59→-67.9, -53→-61.9, -47→-55.9, -41→-49.9, -35→-43.9, -29→-40.4
- hard-knee fit: ratio —:1, threshold -29.5 dB, fit error 0.01 dB RMS
- same input on the way down vs up: -0.0 dB (gain still recovering if negative)
Two-control pairs captured: High Gain Offset×Low Gain Offset, High Gain Offset×Mid Gain Offset, High Gain Offset×Type, Low Gain Offset×Mid Gain Offset, Low Gain Offset×Type, Mid Gain Offset×Type, Type×Threshold Offset (interaction analysis in the main notebook).
Plain explanation: The control to reach for first is High Gain Offset: release settle 9 → 976 ms. After that, Low Gain Offset, Mid Gain Offset and Type make the next biggest differences. At default it has a moderate stereo spread.
In other words, the main points:
- 5 of 5 tested controls measurably change the sound.
- Biggest lever beyond mix and level: High Gain Offset, 17.8× the smallest change that matters (release settle 9 → 976 ms).
- At default: stereo width 0.40, output -32.8 dBFS RMS.
- Still to measure: T1 (see
TESTS_NEEDED.md).
Show code
show_knobs('MultiBand Comp 1')
Gap Fill: each control in physical units¶
Every control stepped on a probe matched to what it does (17 steps for time and rate controls, 9 for the rest), read as the physical quantity it sets: how far a delay tap moves, level or treble lost per repeat, LFO rate and pitch swing, gate length, THD, intermodulation, compressor ratio, knee, attack and release, and where a gate opens and closes. Times are read inside one capture (channel against channel) because Gap Fill runs fully wet and file starts wander by about ±50 ms.
Show code
show_gapfill('MultiBand Comp 1')
How to read these charts. Each chart is one control. Left to right is the control's raw value as sent to the Motif (low to high setting); the height of the line is the physical quantity that control sets, measured from the recording. The title names the control, then the test signal used.
High-Gain-Offset · bandStaircase. Played: tones stepped from −60 to −6 dBFS at 100 Hz, 1 kHz and 6 kHz. The line is dBFS out for −6 dBFS in, 6 kHz: the output level for the loudest step, which shows a gain control's effect; here it goes from -33.7 at raw 0 to -17.8 at raw 127.
Low-Gain-Offset · bandStaircase. Played: tones stepped from −60 to −6 dBFS at 100 Hz, 1 kHz and 6 kHz. The line is dBFS out for −6 dBFS in, 100 Hz: the output level for the loudest step, which shows a gain control's effect; here it goes from -33 at raw 0 to -13.6 at raw 127.
Mid-Gain-Offset · bandStaircase. Played: tones stepped from −60 to −6 dBFS at 100 Hz, 1 kHz and 6 kHz. The line is dBFS out for −6 dBFS in, 1 kHz: the output level for the loudest step, which shows a gain control's effect; here it goes from -41.4 at raw 0 to -16.2 at raw 127.
Threshold-Offset · spectralSweep. Played: a sweep from 20 Hz to 20 kHz. The line is dB median gain: the overall level change across the spectrum; higher means louder; here it goes from -50.3 at raw 0 to -45.3 at raw 96.
Type · bandStaircase. Played: tones stepped from −60 to −6 dBFS at 100 Hz, 1 kHz and 6 kHz. The line is dB gain reduction at −6 dBFS, 1 kHz: how much the loudest step is turned down compared with a quiet one; here it goes from 9.24 at raw 0 to 5.36 at raw 12, peaking at 14.6, dipping to 0.384.
Type · dynamicsTiming. Played: a 440 Hz tone that jumps 30 dB louder and back. The line is dB squashed from a 30 dB step: how much of the 30 dB jump the effect removes; here it goes from 6.36 at raw 0 to 3.41 at raw 12, peaking at 12.6, dipping to 0.241.
MultiBand Comp 2¶
Show code
show_card('MultiBand Comp 2')
MultiBand Comp 2: what the measurements say¶
Recap. A dynamics processor with 16 tested controls, 14 of which measurably change the sound. Beyond mix and level, the biggest lever is Low Gain: raises everything below ~5.4 kHz by up to 30 dB. Measured with 152 captures: 90 on the main sweep + tone probe (one control at a time), 34 on matched probes (dynamicsStaircase ×31, rhythmicGrid ×3), 28 two-control pairs.
Technical explanation. At default settings: output -43.3 dBFS RMS (crest 14.4 dB); stereo width 0.39, L/R correlation +0.69; spectral tilt -0.50 dB/octave; 100% of the impulse response's energy in its first 5 ms; harmonics H2 -75 dB, H3 -57 dB re the linear response.
Structure:
- staircase output (dBFS) for inputs -59→-79.0, -53→-73.0, -47→-67.0, -41→-61.0, -35→-55.0, -29→-51.5
- hard-knee fit: ratio —:1, threshold -35.0 dB, fit error 0.01 dB RMS
- same input on the way down vs up: -0.0 dB (gain still recovering if negative)
Two-control pairs captured: High Gain×High Ratio, High Gain×Mid Gain, Low Attack×Low Release, Low Gain×High Gain, Low Gain×High Ratio, Low Gain×Mid Gain, Mid Gain×High Ratio (interaction analysis in the main notebook).
Plain explanation: The control to reach for first is Low Gain: raises everything below ~5.4 kHz by up to 30 dB. After that, Mid Gain, High Gain and High Ratio make the next biggest differences. At default it has a moderate stereo spread.
In other words, the main points:
- 14 of 16 tested controls measurably change the sound.
- Biggest lever beyond mix and level: Low Gain, 18.0× the smallest change that matters (raises everything below ~5.4 kHz by up to 30 dB).
- At default: stereo width 0.39, output -43.3 dBFS RMS.
- Still to measure: T1 (see
TESTS_NEEDED.md).
Show code
show_knobs('MultiBand Comp 2')
Gap Fill: each control in physical units¶
Every control stepped on a probe matched to what it does (17 steps for time and rate controls, 9 for the rest), read as the physical quantity it sets: how far a delay tap moves, level or treble lost per repeat, LFO rate and pitch swing, gate length, THD, intermodulation, compressor ratio, knee, attack and release, and where a gate opens and closes. Times are read inside one capture (channel against channel) because Gap Fill runs fully wet and file starts wander by about ±50 ms.
Show code
show_gapfill('MultiBand Comp 2')
How to read these charts. Each chart is one control. Left to right is the control's raw value as sent to the Motif (low to high setting); the height of the line is the physical quantity that control sets, measured from the recording. The title names the control, then the test signal used.
Divide-Frequency · bandStaircase. Played: tones stepped from −60 to −6 dBFS at 100 Hz, 1 kHz and 6 kHz. The line is dB gain reduction at −6 dBFS, 1 kHz: how much the loudest step is turned down compared with a quiet one; here it goes from 7.88 at raw 0 to 8.44 at raw 89, dipping to 7.78.
High-Attack · dynamicsTiming. Played: a 440 Hz tone that jumps 30 dB louder and back. The line is ms attack: how long the compressor takes to clamp down after the tone jumps louder; here it barely moves (about 32 throughout).
High-Gain · bandStaircase. Played: tones stepped from −60 to −6 dBFS at 100 Hz, 1 kHz and 6 kHz. The line is dBFS out for −6 dBFS in, 6 kHz: the output level for the loudest step, which shows a gain control's effect; here it goes from -44.2 at raw 0 to -14.9 at raw 55.
High-Ratio · bandStaircase. Played: tones stepped from −60 to −6 dBFS at 100 Hz, 1 kHz and 6 kHz. The line is ratio: the compression ratio above the knee: a ratio of 4 turns a 4 dB rise into a 1 dB rise; here it goes from 1 at raw 0 to 5.01 at raw 7.
High-Release · dynamicsTiming. Played: a 440 Hz tone that jumps 30 dB louder and back. The line is ms release: how long the compressor takes to let go after the tone drops; here it barely moves (about 122 throughout).
High-Threshold · bandStaircase. Played: tones stepped from −60 to −6 dBFS at 100 Hz, 1 kHz and 6 kHz. The line is dBFS knee at 6 kHz: the input level where compression starts; here it goes from -31.4 at raw 0 to -16.2 at raw 90.
Low-Attack · dynamicsTiming. Played: a 440 Hz tone that jumps 30 dB louder and back. The line is ms attack: how long the compressor takes to clamp down after the tone jumps louder; here it barely moves (about 32 throughout).
Low-Gain · bandStaircase. Played: tones stepped from −60 to −6 dBFS at 100 Hz, 1 kHz and 6 kHz. The line is dBFS out for −6 dBFS in, 100 Hz: the output level for the loudest step, which shows a gain control's effect; here it goes from -41.6 at raw 0 to -16.2 at raw 55.
Low-Ratio · bandStaircase. Played: tones stepped from −60 to −6 dBFS at 100 Hz, 1 kHz and 6 kHz. The line is ratio: the compression ratio above the knee: a ratio of 4 turns a 4 dB rise into a 1 dB rise; here it goes from 1.41 at raw 0 to 3.72 at raw 7.
Low-Release · dynamicsTiming. Played: a 440 Hz tone that jumps 30 dB louder and back. The line is ms release: how long the compressor takes to let go after the tone drops; here it barely moves (about 122 throughout).
Low-Threshold · bandStaircase. Played: tones stepped from −60 to −6 dBFS at 100 Hz, 1 kHz and 6 kHz. The line is dBFS knee at 100 Hz: the input level where compression starts; here it goes from -19.5 at raw 0 to -18.7 at raw 121.
Mid-Attack · dynamicsTiming. Played: a 440 Hz tone that jumps 30 dB louder and back. The line is ms attack: how long the compressor takes to clamp down after the tone jumps louder; here it goes from 7.73 at raw 0 to 348 at raw 29.
Mid-Gain · bandStaircase. Played: tones stepped from −60 to −6 dBFS at 100 Hz, 1 kHz and 6 kHz. The line is dBFS out for −6 dBFS in, 1 kHz: the output level for the loudest step, which shows a gain control's effect; here it goes from -45 at raw 0 to -15.3 at raw 55.
Mid-Ratio · bandStaircase. Played: tones stepped from −60 to −6 dBFS at 100 Hz, 1 kHz and 6 kHz. The line is ratio: the compression ratio above the knee: a ratio of 4 turns a 4 dB rise into a 1 dB rise; here it goes from 1.08 at raw 0 to 4.93 at raw 7.
Mid-Release · dynamicsTiming. Played: a 440 Hz tone that jumps 30 dB louder and back. The line is ms release: how long the compressor takes to let go after the tone drops; here it goes from 10 at raw 0 to 441 at raw 23, peaking at 932.
Mid-Threshold · bandStaircase. Played: tones stepped from −60 to −6 dBFS at 100 Hz, 1 kHz and 6 kHz. The line is dBFS knee at 1 kHz: the input level where compression starts; here it goes from -23 at raw 0 to -16.9 at raw 90.
Noise Gate¶
Show code
show_card('Noise Gate')
Noise Gate: what the measurements say¶
Recap. A dynamics processor with 4 tested controls, 2 of which measurably change the sound. Beyond mix and level, the biggest lever is Threshold: decay time 0.03 → 0.02 s. 1 does nothing with the others at default. Measured with 38 captures: 21 on the main sweep + tone probe (one control at a time), 9 on matched probes (silenceNoise ×9), 8 two-control pairs.
Technical explanation. At default settings: output -21.0 dBFS RMS (crest 11.9 dB); stereo width 0.33, L/R correlation +0.78; spectral tilt +0.15 dB/octave; 100% of the impulse response's energy in its first 5 ms; harmonics H2 -74 dB, H3 -45 dB re the linear response.
Two-control pairs captured: Attack×Release, Threshold×Attack (interaction analysis in the main notebook).
Caveats:
- at least one setting mutes the output; those captures are excluded from spectral analysis
Plain explanation: The control to reach for first is Threshold: decay time 0.03 → 0.02 s. Output Level sets how much of the effect you hear and how loud it is. Release made no measurable difference with the other controls at default. At default it has a moderate stereo spread.
In other words, the main points:
- 2 of 4 tested controls measurably change the sound; 1 does nothing with the others at default.
- Biggest lever beyond mix and level: Threshold, 1.7× the smallest change that matters (decay time 0.03 → 0.02 s).
- At default: stereo width 0.33, output -21.0 dBFS RMS.
- Main caveat: at least one setting mutes the output; those captures are excluded from spectral analysis.
- Still to measure: T1 (see
TESTS_NEEDED.md).
Show code
show_knobs('Noise Gate')
Gap Fill: each control in physical units¶
Every control stepped on a probe matched to what it does (17 steps for time and rate controls, 9 for the rest), read as the physical quantity it sets: how far a delay tap moves, level or treble lost per repeat, LFO rate and pitch swing, gate length, THD, intermodulation, compressor ratio, knee, attack and release, and where a gate opens and closes. Times are read inside one capture (channel against channel) because Gap Fill runs fully wet and file starts wander by about ±50 ms.
Show code
show_gapfill('Noise Gate')
How to read these charts. Each chart is one control. Left to right is the control's raw value as sent to the Motif (low to high setting); the height of the line is the physical quantity that control sets, measured from the recording. The title names the control, then the test signal used.
Threshold · gateRamp. Played: a 1 kHz tone faded slowly up and back down. The line is dBFS where the gate opens: the input level at which the gate opens as the tone fades in; here it goes from -69.7 at raw 72 to -42 at raw 97.
Revision 36 · 2026-10-15
Revision history
- Rev 36 · 2026-10-15: The Distortion drive ladders are re-recorded in the current setup (80 takes) and replace those of 2026-09-28, whose flat-topped waves came from the levels of the setup at the time, not from the effects: with the drive up, each distortion gives a square wave whose tops sag, and its Output Level only scales it.
- Rev 35 · 2026-10-12: The main page folds by topic and each family's detail page folds by effect: every section is closed until opened, with one control to open or close them all.
- Rev 34 · 2026-10-12: Every sheet: a play button steps through each control's settings; every recorded pair of controls drawn, with whether they simply add or one changes the other; EQ frequency and width controls drawn with their band at full boost. New detailed charts on every board: which controls depend on each other; the EQ bands moving; the ring modulator's pitch against its controls.
- Rev 33 · 2026-10-12: Every control on every effect's sheet: all its tested settings overlaid in one cell, and its measured law in physical units where a probe reads one. Misc board: the equalisers' bands at full cut and boost.
- Rev 32 · 2026-10-12: Headline findings set apart with larger titles; a note under the three whose graphic shows less than the headline says (Lo-Fi rate, delay feedback, repeats).
- Rev 31 · 2026-10-12: Main page: a graphic under each of the eight headline findings (the delay feedback one animated), each with a plain-terms line.
- Rev 30 · 2026-10-12: Main page opens with a chart of where every capture went and the central technique in pictures: the sweep, and the spikes the matched filter turns a recording of it into.
- Rev 29 · 2026-10-12: Misc board: the ring modulator's carrier pitch against OSC Freq Coarse and Fine, read from the sine takes.
- Rev 28 · 2026-10-11: Fifth capture batch in: the Reverb board gains the gap before the reverb starts against Initial Delay, the Chorus and Flanger boards gain the delay length against the delay knob.
- Rev 27 · 2026-10-11: Waves: a third page, what the instrument and effect waves measure: the note each one plays, where it starts repeating and how long the loop is, how long it rings, and the harmonics of each pitched wave.
- Rev 26 · 2026-10-11: Waves: the instrument and effect tiles now show the opening of the note (its first 8 cycles) instead of the whole take, so the individual waves can be seen.
- Rev 25 · 2026-10-11: Waves: a second page for the 955 instrument and effect waves, each drawn as the whole take of one note with one cycle of the sound under it where the wave holds a steady pitch.
- Rev 24 · 2026-10-08: Reverb knob pairs recorded (288 takes over the 12 distinct reverbs), so the reverb consoles' rings follow each other too; 799 knob pairs measured in all.
- Rev 23 · 2026-10-08: Every family page now opens with a comparison board (one row per effect, shared scales down each column) and control sheets with all tested settings side by side; each family's detailed charts are folded in beneath and the earlier pages are kept as detail pages.
- Rev 22 · 2026-10-08: Knob consoles: 2,120 new recordings of knob pairs, so within each effect's four strongest controls every knob's ring now follows every other (679 pairs measured, up from 155). A Waves page shows the 904 drum and percussion waves.
- Rev 21 · 2026-10-07: Delay page rebuilt the same way: every delay's echoes side by side, and each control's tested settings next to each other as echo patterns.
- Rev 20 · 2026-10-07: Reverb page rebuilt for comparison: one board with every distinct reverb as a row and every measure as a column on a shared scale, then each reverb's controls with all tested settings side by side. The detailed charts are folded in beneath; the earlier page is kept as the detail page. Knob consoles now use a slider for the selected knob, and controls with nothing measurable are listed, not drawn.
- Rev 19 · 2026-10-07: A knob console on every effect: each ring shows where along the knob's travel the sound changes, and turning a knob shows how the knobs captured together with it respond.
- Rev 18 · 2026-10-07: Reverb taken apart in time: how fast separate reflections merge into a wash; the tail's colour through time; how alike left and right are at each pitch and through the decay; how smooth each tail is against noise of the same tone; the Reverb Time control against Yamaha's table; and the twenty reverb names compared pair by pair.
- Rev 17 · 2026-10-07: Charts that only compared output level or gain are removed from every page except the compressors and gates, where level is what the effect does.
- Rev 16 · 2026-10-07: Capture set finished and audited (14,635 takes; the takes recorded through a reverb are all replaced). Corrections: Celeste 1's control shown as Delay is its Feedback Level, and Symphonic's shown as Feedback is its Delay Offset; two Symphonic controls that do not exist on the effect are removed. New charts in time and wave shape rather than level: Delay, where every echo lands as each time control is turned; Distortion, the wave that comes out as the drive rises; Lo-Fi, the output wave sample by sample at each Sampling Freq setting; Chorus and Flanger, the delay line followed as it sweeps; Phaser and Wah, where each notch or peak sits in Hz from moment to moment; Reverb, the separate early reflections in the first quarter second after one click; Modulation and Tech, each side turned up and down from moment to moment.
- Rev 15 · 2026-10-06: Pitch Change: a click train in, and when each click comes out.
- Rev 14 · 2026-10-06: Distortion: output and distortion against input level on a smooth ramp, harmonics against the pitch of the note, high-note harmonics folding back off 44.1 kHz (no oversampling), a bass note modulating a treble note, input-against-output loops, and the amp and cabinet filters' level and phase.
- Rev 13 · 2026-10-06: Lo-Fi on a smoothly rising tone: Word Length sets a clipping ceiling and adds no quantisation noise; the five Lo-Fi effects compared on the same ramp.
- Rev 12 · 2026-10-06: Lo-Fi: a rising note against everything that comes out with it, at each sampling-rate setting. Pitch Change: the cluster of lines a shifted note returns as, and the splice window read from it (about 35 ms and 28 ms).
- Rev 11 · 2026-10-06: The same routing fault is confirmed for the 1,835 re-takes of 2026-09-30/10-01 (the dry-plus-wet timing takes and the full-rate Lo-Fi takes). No published chart used them; they are withdrawn from the counts and are being re-recorded.
- Rev 10 · 2026-10-06: Correction: the all-effects comparison (section 17 of the main report), added earlier today, is withdrawn. Its 625 recordings were made with the Motif's System Reverb left in the signal path and are being re-recorded. New: compressor timing inside the distortion chains, wah filter sweeps, reverb decay per octave band.
- Rev 9 · 2026-10-06: Follow-up captures analysed: compressor attack and release against step size, MultiBand Comp 2 band by band, Noise Gate opening, hold and closing times, and distortion on level steps (no sag: the clippers act instant by instant). Release times now require the level to stay recovered for 50 ms, which fixes readings fooled by ringing or by a delay's echo. Capture counts include the overnight batches.
- Rev 8 · 2026-10-05: Beyond level curves: gain-reduction speed, release shape, phase-space orbits, harmonic matrices, intermodulation maps, parallel coordinates, a behaviour map and loudness in phon and sone on the Dynamic atlas; harmonic-against-drive matrices (Distortion), stereo LFO orbits (Chorus, Flanger, Phaser, Modulation), an echo map (Delay) and a decay-rate matrix (Reverb).
- Rev 7 · 2026-10-04: All figures vector and stacked one per row; control tables replaced by interactive charts; every section in four parts (recap, professional, plain, main points); capture counts include Gap Fill; six more Gap Fill probes analysed (dynamics timing, band staircase, gate ramp, two-tone ladder, tone triplet, pink pluck).
- Rev 6 · 2026-10-04: Complete 13-category analysis with detail ladders; all notebooks rebuilt with executed cells and interactive charts.
- Rev 5 · 2026-10-01: T28/T29 re-take analysis (dry/wet time references, Lo-Fi full-rate captures); Reverb detail ladders.
- Rev 4 · 2026-09-30: Reverb analysis from full 9,876 Gap Fill run; two-voice explanations added to main page sections 1–15.
- Rev 3 · 2026-09-29: Gap Fill captures: delay and feedback time laws, LFO maps, drive transfer curves, Lo-Fi rate, early reflections; Gate/Reverse Gate relabelled; interactive charts, atlas links, dark theme.
- Rev 2 · 2026-09-28: Gate Reverb time origin fixed; Auto Pan phase and Distortion harmonics computed from data.
- Rev 1 · 2026-09-27: First complete report: main analysis and 13 atlas notebooks.