Install it, read every parameter, and find the answer before you ask.
Every product has its manual, the common questions have answers, and the glossary defines the words once. If it is not here, the contact page is one click on.
The Hub is the installer, and it comes with any licence. The measured build, Modulr 0.1.0, has loaded in Ableton Live 12.4.6.
Modulr Hub installs the suite, verifies each bundle, holds the licence files, updates and rolls back, and syncs presets. It is an application, not a plug-in.
ProposedThe Hub writes the VST3 and the Audio Unit v2 component into the folders the host scans. Each bundle is verified before the Hub says it is installed.
ProposedAbleton Live 12.4.6 has loaded both formats of Modulr 0.1.0: they play and take the host’s transport and MIDI. Saving a set and reopening it was not done.
MeasuredA signed licence file under 4 KiB, read at load. Without one, the next DSP object is what changes; nothing saved is touched.
Proposeda host round trip, a program list, IMidiMapping, a latency restart
Cost:shipped; loaded in Live 12.4.6
clump ids, the aumf type, a render path without locks
Cost:shipped; loaded in Live 12.4.6
a WebView2 spike first, one week; the Origin form differs
Cost:8 to 12 weeks
no per-note field; a probe mode that exits 0 only if every check passes
Cost:3 to 4 weeks
the sandbox against the loopback is the decisive unknown
Cost:6 to 10 weeks
the Avid agreement has to be read first
Cost:10 to 16 weeks, plus a licence
whether a universal binary is wanted at all is open
Cost:1 to 2 weeks
a wry view in an X11 window; it follows Windows
Cost:6 to 10 weeks
Ableton Live 12.4.6, on macOS arm64, with the VST3 and the Audio Unit v2. Both formats load, play, and take the host’s transport and MIDI; a resize and an undoable gesture were seen in the VST3 only. Saving a set and reopening it was not done. The book says “loaded in Live 12.4.6” and never “supported by it”.
The synth’s rows were measured on Modulr 0.1.0; every other manual is the specification’s parameter table for a product that is on sale.
One monophonic modular synthesiser, in eight modules and thirty-one parameters, with ten cables in its opening patch and eight factory patches.
The panel order is SEQ, VCO, LFO, VCF, ENV, VCA, DLY and OUT. The evaluation order is different: SEQ, LFO, ENV, VCO, VCF, VCA, DLY and OUT. A cable that runs against the evaluation order costs one sample, and the book states that rule rather than hiding it.
Modulr 1.0 adds thirty-three parameters to the thirty-one that ship: sixteen voices, a noise source, eight macros, a step division, a swing, and an oversample switch on the output. One voice today, last note wins, legato. The two output channels carry the same signal; the book calls that a mono bus and never calls it stereo.
| Key | Range | Default |
|---|---|---|
| seq.bpm | 60 to 180 BPM | 120 BPM |
| vco.tune | 28 Hz to 440 Hz | 110 Hz |
| vcf.cut | 40 Hz to 12.00 kHz | 221 Hz |
| vcf.res | 0.0 to 24.0 dB | 9.6 dB |
| env.a | 2 ms to 2.00 s | 4 ms |
| env.r | 10 ms to 4.00 s | 110 ms |
| dly.time | 20 ms to 1.20 s | 374 ms |
| out.vol | 0% to 100% | 60% |
| Jacks | Names |
|---|---|
| In | vco.voct, vco.fm, vcf.in, vcf.cv, env.gate, vca.in, vca.cv, dly.in, out.l, out.r |
| Out | seq.pitch, seq.gate, vco.sin, vco.saw, vco.sqr, lfo.sin, lfo.tri, lfo.sqr, vcf.out, env.env, env.inv, vca.out, dly.out |
Pentatonic Drift is the opening patch. Mono Lead (MIDI) and Glass Bells are named in the book. The parity rig names eight: default, acid, delay, filter, lfo, highpass, fm, tone.
Sources: NI Reaktor 6 product page, read 17 October 2026. FabFilter’s shared conventions, read 17 October 2026.
Eight bands of eight shapes, dynamic bells and shelves, and a processing mode whose linear path reports its own latency exactly.
On a Bell or Shelf band, Gain is the target: the gain reached when the detector sits 6 dB or more over the threshold. Dyn is the dynamic share of that move, so a −6.0 dB band at Dyn 100 % rests flat at 0.0 dB, and at 60 % it rests at −2.4 dB.
Zero is the default: the bands run as minimum-phase biquad sections and report 0 samples of latency. It is not free of delay — a minimum-phase section has a group delay that peaks at a bell’s centre, 5.8 samples for a +6 dB, Q 3 bell at 6.2 kHz, and 228 samples for a +12 dB, Q 1 bell at 100 Hz. Natural follows the analogue prototype within 1.0 dB up to 20 kHz for a +12 dB, Q 1 bell at 16 kHz. Linear reports 2,048 samples.
| Key | Range | Default |
|---|---|---|
| eq.phase | Zero, Natural, Linear | Zero |
| eq.channel | Stereo, Mid, Side | Stereo |
| eq.slope | 12, 24, 48, 96 dB per octave | 24 dB per octave |
| eq.band<N>.type | Bell, Low Cut, High Cut, Low Shelf, High Shelf, Notch, Band Pass, All Pass | Bell |
| eq.band<N>.freq | 20 Hz to 20 kHz | 1.00 kHz |
| eq.band<N>.gain | −18.0 to +18.0 dB | 0.0 dB |
| eq.band<N>.q | Q 0.10 to Q 18.00 | Q 1.00 |
| eq.band<N>.dyn | 0% to 100% | 0% |
| eq.band<N>.threshold | −60.0 to 0.0 dB | −24.0 dB |
| eq.band<N>.attack | 0.1 ms to 1 s | 10 ms |
| eq.band<N>.release | 10 ms to 3 s | 250 ms |
| eq.cv<N>.amount | −100% to +100% | 0% |
| eq.out.gain | −18.0 to +18.0 dB | 0.0 dB |
| eq.mix | 0% to 100% | 100% |
| Jacks | Names |
|---|---|
| In | eq.in, eq.sc, eq.cv1, eq.cv2 |
| Out | eq.out, eq.gr |
Bus Tilt, Mud Cut, Box Cut, Air Shelf, De-Esser, Ring Tame, Master Phase, Side Lift.
Sources: FabFilter Pro-Q 4 and Slate Digital Infinity EQ 2 product and help pages, read 17 October 2026.
A compressor for a bus, a drum room or a voice, whose gain reduction is a signal you can patch.
Six styles, each a named set of rows: Clean, Punch, Glue, Vocal, Drum and Bus. The chain is the book’s four jobs in order — a detector turns a signal into a level, a gain law turns the level into a gain, ballistics smooth the gain, and an optional look-ahead makes the gain arrive before the audio.
What Modulr 0.1.0 ships is the fixed master compressor and the tanh soft limiter at the end of the bus: −24 dB, a 30 dB knee, 12:1, 3 ms and 250 ms, fixed, with no parameter and no bypass. The book pins its make-up rule and its static points, so the fixed curve is a measured fact rather than a description.
| Key | Range | Default |
|---|---|---|
| comp.style | Clean, Punch, Glue, Vocal, Drum, Bus | Clean |
| comp.topology | Fwd, Fbk | Fwd |
| comp.detect | Peak, RMS | Peak |
| comp.threshold | −60.0 to 0.0 dB | −18.0 dB |
| comp.ratio | 1.0:1 to 20.0:1 | 2.0:1 |
| comp.knee | 0.0 to 36.0 dB | 6.0 dB |
| comp.attack | 0.1 to 250.0 ms | 10.0 ms |
| comp.release | 10.0 ms to 2.50 s | 120.0 ms |
| comp.makeup | −12.0 to +24.0 dB | 0.0 dB |
| comp.mix | 0% to 200% | 100% |
| comp.lookahead | 0.0 to 20.0 ms | 0.0 ms |
| comp.oversample | Off, 2×, 4×, 8× | Off |
| comp.cv1.amount | −100% to +100% | 0% |
| Jacks | Names |
|---|---|
| In | comp.in, comp.sc, comp.cv1 |
| Out | comp.out, comp.gr |
Drum glue: 8:1, a 24 dB knee, RMS detection, −18 dB. Vocal: 3:1, −12 dB. Punch: 4:1, 0 dB, 3 ms, 80 ms, peak. Bus: 2:1, 12 dB, 20 ms, 300 ms, peak.
Sources: FabFilter Pro-C 3 and Slate Digital FG-Stress product pages, read 17 October 2026.
Four of those compressors between three crossover frequencies, 20 Hz to 20 kHz.
Three crossovers split the spectrum into four bands. The slope is 12, 24 or 48 dB per octave per side; the phase mode is minimum or linear. On the Mastering split — 120 Hz, 1.20 kHz and 6 kHz at 24 dB per octave — a linear crossover costs 919 samples, and at 20 Hz it costs 10,559.
The gain reduction published on mb.gr is the deepest of the four reductions, 0 to 1 V for 0 to 18 dB. A cable from a later slot to an earlier one costs one sample, and the book says so where the vendor pages say nothing at all.
| Key | Range | Default |
|---|---|---|
| mb.slope | 12, 24, 48 dB per octave | 24 dB per octave |
| mb.phase | Min, Lin | Min |
| mb.xover<N>.freq | 20 Hz to 20 kHz | 120 Hz, 1.20 kHz, 6.00 kHz |
| mb.band<N>.threshold | −60.0 to 0.0 dB | −18.0 dB |
| mb.band<N>.ratio | 1.0:1 to 20.0:1 | 2.0:1 |
| mb.band<N>.knee | 0.0 to 36.0 dB | 6.0 dB |
| mb.band<N>.attack | 0.1 to 250.0 ms | 10.0 ms |
| mb.band<N>.release | 10.0 ms to 2.50 s | 120.0 ms |
| mb.band<N>.makeup | −12.0 to +24.0 dB | 0.0 dB |
| mb.mix | 0% to 200% | 100% |
| mb.oversample | Off, 2×, 4×, 8× | Off |
| mb.cv<N>.amount | −100% to +100% | 0% |
| Jacks | Names |
|---|---|
| In | mb.in, mb.sc, mb.cv1, mb.cv2 |
| Out | mb.out, mb.gr |
The Mastering split is a preset of the book: 120 Hz, 1.20 kHz and 6 kHz at 24 dB per octave, four Linkwitz-Riley responses at 24 dB per octave.
Sources: FabFilter Pro-MB product and help pages, read 17 October 2026.
One law in three styles, a true-peak ceiling, and the four loudness numbers the field meters.
CLEAN, DENSE and PUNCH are three styles of one law, and the book is careful about the order: three styles until each law is measured. The ceiling is a true peak, held within 0.05 dB of the setting, and the look-ahead runs 0 to 5 ms with 1.5 ms as the default.
The loudness read-out is the same four values the leaders publish: momentary, short-term, integrated and range, with targets at −9, −14 and −23 LUFS. At the Streaming −14 preset the meter reads −14.9 LUFS integrated, −23.8 short-term, −1.0 dBTP true peak and 6.3 LU of range.
| Key | Range | Default |
|---|---|---|
| lim.style | CLEAN, DENSE, PUNCH | CLEAN |
| lim.oversample | Off, 2×, 4×, 8× | 4× |
| lim.target | −9, −14, −23 LUFS | −14 LUFS |
| lim.link | LINK, L, R | LINK |
| lim.gain | −12.0 to +24.0 dB | 0.0 dB |
| lim.ceiling | −30.0 to 0.0 dBTP | −1.0 dBTP |
| lim.release | 1.0 ms to 1.00 s | 80.0 ms |
| lim.hold | 0.0 to 50.0 ms | 5.0 ms |
| lim.lookahead | 0.0 to 5.0 ms | 1.5 ms |
| Jacks | Names |
|---|---|
| In | lim.in, lim.sc |
| Out | lim.out, lim.gr |
Streaming −14, EBU −23, Club −9, Mastering gentle, Spare headroom, Drum bus.
Sources: FabFilter Pro-L 2 product and help pages, read 17 October 2026.
Three modes, each a specified curve, and a spec sheet because no page read publishes one.
Tape, Console and Tube. The console curve sits at +6.0 dB of drive beside a 220 Hz sine at −6.0 dBFS before it, and after it. The tube mode has its second harmonic at −23.0 dB with the bias at +30 %. The noise floor is below −140 dBFS and the aliasing is below −100 dB at 4×.
The tape tier carries the four knobs a tape machine actually has: 15 to 30 ips at 23, a bias at ±100 %, a hiss at 0 %, and a wow at 0 %. The seeded noise is −58 dBFS at 100 % and the wow depth is 0.20 ms at 100 %.
| Key | Range | Default |
|---|---|---|
| sat.mode | Tape, Console, Tube | Console |
| sat.drive | 0.0 to +36.0 dB | +6.0 dB |
| sat.tone | −100% to +100% | 0% (FLAT) |
| sat.mix | 0% to 100% | 100% |
| sat.output | −18.0 to +18.0 dB | 0.0 dB |
| sat.oversample | Off, 2×, 4×, 8× | 4× |
| sat.xover | Off, LR12, LR24, LR48 | Off |
| sat.band | 1 Low, 2 Mid, 3 High | 2 Mid |
| sat.band.freq | 400 Hz to 12.0 kHz | 6.00 kHz |
| sat.band<N>.drive | 0.0 to +36.0 dB | +6.0 dB |
| sat.tape.speed | 15 to 30 ips | 23 ips |
| sat.tape.bias | −100% to +100% | 0% |
| sat.tape.hiss | 0% to 100% | 0% |
| sat.tape.wow | 0% to 100% | 0% |
| sat.tube.bias | −100% to +100% | +30% |
| Jacks | Names |
|---|---|
| In | sat.in, sat.cv1 |
| Out | sat.out, sat.noise |
Console 06, Console 12, Console 18, Tape A, Tape B, Tube A, Band High.
Sources: FabFilter Saturn 2 and the Slate Virtual Tape Machines, Virtual Console Collection and Fresh Air pages, read 17 October 2026.
Plate, Room and Hall — three settings of one network — with a continuous size and six bands that shape the decay.
The six decay-rate bands each hold a change of ±6.0 dB, scaled by a factor between ×0.25 and ×4.00. At the defaults the bands sit at 100 Hz, 250 Hz, 630 Hz, 1.60 kHz, 4.00 kHz and 10.00 kHz, with +1.0, +0.5, 0.0, −1.0, −2.5 and −4.0 dB of change.
The T60 runs from 2.75 s at the bottom of the band to 1.04 s at 16 kHz. The tail is the pre-delay plus the longest T60 — 2.78 s at the defaults, 133,251 samples at 48 kHz — and 48.25 s at the most. The latency is 0 samples, and the size slews at 0.01 samples a sample.
| Key | Range | Default |
|---|---|---|
| verb.mode | Plate, Room, Hall | Hall |
| verb.size | 0% to 100% | 45% |
| verb.decay | 0.20 to 12.00 s | 2.20 s |
| verb.predelay | 0.0 to 250.0 ms | 24.0 ms |
| verb.damp | 0% to 100% | 55% |
| verb.width | 0% to 150% | 100% |
| verb.mix | 0% to 100% | 30% |
| verb.duck | 0% to 100% | 0% |
| verb.freeze | off, on | off |
| verb.rate<N>.freq | 40 Hz to 20.00 kHz | 100 Hz, 250 Hz, 630 Hz, 1.60 kHz, 4.00 kHz, 10.00 kHz |
| verb.rate<N>.gain | −6.0 to +6.0 dB | +1.0, +0.5, 0.0, −1.0, −2.5, −4.0 dB |
| verb.cv1.amount | −100% to +100% | 0% |
| Jacks | Names |
|---|---|
| In | verb.in, verb.sc, verb.cv1 |
| Out | verb.out, verb.env |
Medium hall is factory preset 02 and the default state: DECAY 2.20 s, six decay-rate bands, a 24 ms pre-delay.
Sources: FabFilter Pro-R 2 and Native Instruments Raum product pages, read 17 October 2026.
Six taps, a drive and two filters in the loop, and a time change that is either tape-like or free of pitch.
The stereo line is 2.00 s. Each of the six taps is a ratio of TIME, from ×0.125 to ×4.00, and each has a level. The default is 375.0 ms — an eighth note dotted at 120 BPM — with the feedback at 50 %, a 120 Hz high-pass and a 5.20 kHz low-pass in the loop.
Tape glides at most 0.25 s a second and bends the pitch by −498 to +386 cents; Digi crosses over in 20 ms and leaves the pitch alone. The tail is 4.875 s at the defaults and 272 s at 95 % feedback with the time at 2.0 s. The latency is 0 samples.
| Key | Range | Default |
|---|---|---|
| delay.routing | Stereo, Ping-pong, Spread | Stereo |
| delay.glide | Tape, Digi | Digi |
| delay.time | 1.0 ms to 2.00 s | 375.0 ms |
| delay.sync | Free, 1/4, 1/8, 1/8D, 1/16, 1/16D, 1/32 | 1/8D |
| delay.fb | 0% to 95% | 50% |
| delay.mix | 0% to 100% | 30% |
| delay.spread | 0% to 100% | 70% |
| delay.tap<N>.ratio | ×0.125 to ×4.00 | ×0.25, ×0.50, ×1.00, ×1.50, ×2.00, ×3.00 |
| delay.tap<N>.level | 0% to 100% | 60%, 85%, 70%, 45%, 30%, 20% |
| delay.drive.amount | 0% to 100% | 20% |
| delay.tone.lp | 200 Hz to 20.00 kHz | 5.20 kHz |
| delay.tone.hp | 20 Hz to 1.00 kHz | 120 Hz |
| delay.mod.depth | 0% to 100% | 12% |
| delay.mod.rate | 0.05 to 10.00 Hz | 0.35 Hz |
| Jacks | Names |
|---|---|
| In | delay.in, delay.sc, delay.cv1, delay.fb.rtn |
| Out | delay.out, delay.fb.snd |
Dotted eighth is factory preset 01: 375.0 ms at an eighth note dotted and 120 BPM, feedback 50 %, six taps, loop filters at 120 Hz and 5.20 kHz.
Sources: FabFilter Timeless 3 and Native Instruments Replika XT product pages, read 17 October 2026.
Up to sixteen slots, any output jack cabled to any input jack, and one reported latency for the whole chain.
A module’s keys are the product’s keys led by its slot id — s2.eq.band1.gain — and a cable endpoint is a module and a jack, s1:comp.gr. The plan compiles into a flat list sorted by destination, six bytes a cable, 512 at most, 3,072 bytes.
The master ends every cable path with a guard, not a limiter: rack.gain as a 20 ms ramp, then a soft limiter scaled to rack.ceiling. It holds a sample peak, and it adds no latency. The Rack reports one latency, the longest path, in whole samples. On the Vocal bus preset that is 117, because the limiter is in the chain.
| Key | Range | Default |
|---|---|---|
| rack.gain | −30.0 to +12.0 dB | 0.0 dB |
| rack.ceiling | −30.0 to 0.0 dB | 0.0 dB |
| rack.bypass | off, on | off |
| macro.m<N> | 0% to 100% | 0% |
| Jacks | Names |
|---|---|
| In | rack.in |
| Out | rack.out, macro.m1 to macro.m8, rack.gr |
Four factory racks: Vocal bus, Synth bus, Parallel crush, and Loop through the equaliser.
Sources: Slate Digital Virtual Mix Rack 3.0 and Native Instruments Guitar Rig 7 Pro product pages, read 17 October 2026.
One list of the suite: install it, verify it, update it, hold the licences, sync the presets.
A library row is in one of four states, each one LED and one action: installed, update available, updating, and available. The check for updates runs at launch and at most once in 24 hours, never from a plug-in, and Auto-update is off, so an update installs on a click.
A licence is a signed JSON file read at load, capped at 4 KiB and verified with a key built into the plug-in. A lapse never alters a saved project, a preset or audio that is playing; it changes only the next DSP object. An unlicensed instrument renders silence and an unlicensed effect passes its input through.
This product has no parameter rows of its own. It is an application: it installs, verifies, updates, holds the licences, syncs the presets and carries the controller profiles.
The sync panel mirrors the preset folder with a folder the user chooses. A file changed on both sides is kept twice, the second with a .conflict suffix, and a deleted file moves to .trash for 30 days. Nothing is overwritten.
Sources: Native Instruments Native Access 2 and Slate Digital Complete Access product pages, read 17 October 2026.
VST3 and Audio Unit v2 on macOS arm64 ship. Ableton Live 12.4.6 and the in-repo probe are the only hosts that have loaded Modulr 0.1.0, the build measured so far. Windows VST3, CLAP, AUv3, AAX, macOS x86_64 and Linux are each Proposed or Open with a cost in engineer-weeks.
MeasuredZero reports 0 samples and Natural 0; Linear reports 2,048. Zero is not free of delay: a minimum-phase section has a group delay that peaks at a bell’s centre, 5.8 samples for a +6 dB, Q 3 bell at 6.2 kHz.
ProposedEvery edit is one reversible row in a per-instance journal: a knob drag, a cable edit and a preset load each. The journal keeps 4,000 commands, then collapses to one snapshot that cannot be undone, and it is not saved with the project.
MeasuredEvery file a suite product writes is JSON, never binary. The synth’s eight factory patches are one file of 7,864 bytes. The schema stamp and the migration chain are Proposed; on Modulr 0.1.0 neither file has a version field.
MeasuredIn Modulr Rack, any output jack cables to any input jack across up to sixteen slots: a compressor’s gain reduction can pull a band of the equaliser. The Rack is on sale; the cabling is as the book specifies it.
ProposedYes, three: $9.99 a month for the plug-ins and the synth, $15.99 for Legendary, the catalogue, and $29.99 for everything, Roadie included. A plug-in is $20 bought once, a synth $25, Roadie $49, and everything $450. The book rejected subscription-only, not a plan beside one-time licences: a lapse never alters a saved project, a preset or audio that is playing, it changes only the next DSP object. The shop is open.
ProposedNo page read publishes a figure for one instance, and the suite states a per-instance budget to be measured by the rig. For Modulr 0.1.0 only the file sizes were measured: 4.66 MB a format.
EstimateOne JSON file per preset, in a documented folder, with a schema stamp and a migration chain. The Hub syncs them. Modulr 0.1.0 ships eight factory patches; the equaliser’s preset list is Bus Tilt, Mud Cut, Box Cut, Air Shelf, De-Esser, Ring Tame, Master Phase and Side Lift.
ProposedA dark room, a rack, cream faceplates, one orange accent and six cable colours. Nothing is glossy, and nothing is lit except an LED, a pointer and the trace on a display.
| Control | Today | The gesture | The suite adds |
|---|---|---|---|
| Knob | 62 px big, 38 px small, 34 px step | vertical drag of 220 px, Shift for fine; double-click resets to the default | focus rings, keys, typed entry |
| Jack | 26 px | press and drag to another jack; a plugged input lifts its newest cable | a lift and a drop, by keyboard |
| Cable | the colour slot cycles through six | next colour slot, one hop; sag 0.3 of the span | a cable is the plug and the cue on it |
| Segmented switch | one click, one value | the active segment is inverted | a dark tone and a button |
| Scope | 152 × 90 CSS px, 600 samples | one canvas | traces, fills and axes |
| Meter | none today | 8 × 3 px segments, 2 px apart | lit, overload and peak-hold segments |
| Read-out | the name and the value on hover and on drag | held 900 ms after the gesture ends | the one place a value is edited |
| Panel | 500 px tall | the heading, the caption, the width, the gap, the dark tone | cream or dark per faceplate |
Every product reaches the host, the store and the screen through the same seven layers, and plugs in at one seam: a Product value and a DSP trait.
The book’s plan for building the suite, kept for the record: each milestone ends when its invariants pass, and the platform rows add up to 17 to 26 engineer-weeks. Every product is now on sale, on the owner’s word of 24 October 2026; AUv3, Linux and AAX stay unscheduled.
No new product. Modulr 0.1.x another product can install; Developer ID signed and notarised; state schema 1 with a migration; source under version control with a CI job; a probe rig that measures CPU, memory, open and frame time. The VST3 SDK route settled.
11 to 18 working days
Modulr EQ in Zero, Natural and Linear modes. One component library — knob, jack, panel, switch, ladder, well — shared by the synth and the equaliser. The analyser feed, auval and user presets.
6 to 9 days
Modulr Comp, Modulr MB and Modulr Limit. The oversampler at 79, 27 and 19 taps, true-peak and LUFS meters, gain-reduction and loudness streams. Windows VST3 if the spike held.
Windows VST3 8 to 12 weeks
Modulr Rack with 16 slots, a third product kind and latency alignment, and Modulr Hub with the installer, licence files, rollback, preset sync and controller profiles. MIDI learn through the journal.
7 to 11 days
Modulr Sat, Modulr Verb, Modulr Delay and Modulr 1.0 with voices, noise, macros and oversampling. CLAP and macOS x86_64.
CLAP 3 to 4 weeks; x86_64 1 to 2
| Measure | In the book |
|---|---|
| Parameters | 305 31 measured on Modulr 0.1.0, 274 as the book specifies; 220 continuous, 55 choice, 30 toggle |
| Products | 10 all on sale |
| Jacks | 23 on Modulr 0.1.0 and 46 across the suite, counting the Rack’s own |
| Invariants | 31 nine hold, eight hold in part, four fail, ten have no test |
| Bar rows | 95 146 verdicts; 25 of them Exceed |
| Bundle | 4.66 MB a format 9.32 MB the pair for the synth; 5.5 and 10.9 for the Rack |
| Tests | 119 across the workspace 62 test functions in the crate, 61 run by default |
| Product | Kind | The field it is measured against | Params | Status | Ch |
|---|---|---|---|---|---|
| Modulr | Modular synth, instrument | NI Reaktor 6 (Blocks) | 31; 64 in 1.0 | On sale | Ch 3, 11 |
| Modulr EQ | Dynamic, linear-phase, mid/side equaliser | FabFilter Pro-Q 4; Slate Infinity EQ 2 | 90 | On sale | Ch 12 |
| Modulr Comp | Multi-style compressor | FabFilter Pro-C 3; Slate FG-Stress | 15 | On sale | Ch 13 |
| Modulr MB | Multiband dynamics | FabFilter Pro-MB | 36 | On sale | Ch 13 |
| Modulr Limit | True-peak limiter, loudness metering | FabFilter Pro-L 2 | 10 | On sale | Ch 14 |
| Modulr Sat | Tape, console and multiband saturation | FabFilter Saturn 2; Slate VTM, VCC, Fresh Air | 26 | On sale | Ch 15 |
| Modulr Verb | Reverb with decay-rate EQ | FabFilter Pro-R 2; NI Raum | 24 | On sale | Ch 16 |
| Modulr Delay | Modulated, patchable delay | FabFilter Timeless 3; NI Replika XT | 29 | On sale | Ch 16 |
| Modulr Rack | The container: every product as a module | Slate Virtual Mix Rack 3.0; NI Guitar Rig 7 Pro, Reaktor 6, the Komplete Kontrol chain | 11 | On sale | Ch 17 |
| Modulr Hub | Installer, licensing, presets, updates | NI Native Access 2; Slate Complete Access | none | On sale | Ch 24 |
| Decision | What it commits the suite to | In the book, October 2026 |
|---|---|---|
| D-1 | One framework Every product is a Product: a Dsp, a ParamSpec table, jacks, presets, an editor size and Ignis views; no JUCE | Holds: two products |
| D-2 | The store is the truth Parameters, cables and preset state live in the loom-core store; an edit is a Loom command | Holds |
| D-3 | Everything is patchable Each product exposes jacks; cables run per sample in a declared evaluation order | Partly: Modulr only |
| D-4 | Audio-thread discipline No allocation, lock, system call or log on the audio thread; latency and tail reported exactly | Partly: both format layers lock; latency a constant 0 |
| D-5 | The editor is Alloy A wry/WebKit view and Ignis components built through eleven gates; no connection but the Loom socket | Holds |
| D-6 | The wire stays hardened ws.rs as it is; a new plugin.* command is added to Appendix B and nowhere else | Holds: 16 of 16 README claims |
| D-7 | Tested the Modulr way Golden tables, rendered presets, a parity rig, the probe and auval; else a null test or a measured spec sheet | Partly: Modulr only |
| D-8 | One control vocabulary Knob, jack, panel, switch, scope and meters on one token set: a skin, never a toolkit | Partly: seven components, no meters |
| D-9 | Open state Presets and project state are JSON with a schema stamp, readable without the plug-in, never binary | Partly: JSON, no version |
| D-10 | Formats are promises VST3 and Audio Unit v2 on macOS ship; every other format is Proposed or Open with a stated cost | Holds; Live save and reopen not done |
| D-11 | Budgets, not adjectives Five numbers a product: CPU, frame time, open time, bundle size, memory | Partly: only file sizes measured |
| D-12 | Honest competition Bar tables cite the vendor’s page, tagged Reported; an Exceed rests on a framework difference | Partly: two bars have no source |
| Bar | Where the field is (Reported) | Where Modulr is | Decision |
|---|---|---|---|
| Display-driven editing | Pro-Q 4: bands created and reshaped on the display; EQ Sketch; Spectrum Grab | every display gesture must become a command in the Loom store | D-2, D-5 |
| Analyser quality | Pro-Q 4: pre, post and external spectra; 1,024 to 8,192 points; freeze; collision marking | one spectrum, 256 points from a 4,096-point FFT; the range, tilt and hold are open | D-5, D-7 |
| Oversampling and linear phase | Pro-Q 4: Zero Latency, Natural Phase and Linear Phase in five resolutions, 3,072 to 66,560 samples | Off, 2×, 4× or 8×, and the latency reported exactly | D-4, D-10 |
| Preset ecosystems | FabFilter: a browser with tags, favourites and search; .ffp files | one JSON file per preset, versioned and migrated | D-9 |
| Controller integration | NKS: eight knobs taking the key parameters when a preset loads; a display | an open JSON profile per product, learn, three takeover modes | D-2, D-6 |
| CPU | no page read publishes a figure for one instance | a stated per-instance budget, measured by the rig | D-11 |
| Command | What it carries | Direction |
|---|---|---|
| plugin.instances | every live instance, with its format and host | read |
| plugin.hello | the twenty-key snapshot: state, param specs, jacks, presets, history, transport, meter, step, editor size | read |
| plugin.param-set | one plain value, clamped; a value equal at f32 precision changes nothing | write |
| plugin.param-begin / plugin.param-end | the gesture bracket round a drag | write |
| plugin.cable-connect / plugin.cable-disconnect | one reversible cable row, with a colour slot | write |
| plugin.preset-load | one reversible row; the name is the identity | write |
| plugin.undo / plugin.redo | the store’s stack | write |
| plugin.journal | the command log, newest first; 50 rows by default, 200 at most | read |
| plugin.state | the whole state, the history and the source, after every change | event |
| plugin.meter | the largest sample of the last block, in and out | event, every 33 ms |
| plugin.transport | tempo, playing, position, sample rate, beat | event, every 33 ms |
| plugin.scope | 600 values, rounded to 1e-4 | event, every 33 ms |
| Member | Type | Rule |
|---|---|---|
| format | modulr.state | the stamp; without it the document is schema 0, which is read for life |
| schema | an integer | counts breaking changes only |
| kind | state, preset, bank, rack | a state restores as state.replace and needs its preset |
| product | a slug | the Product.id, checked only when the format is present |
| params | a key to a number | the product’s plain values; sparse reads, dense writes |
| cables | from, to and a colour slot | one f32 per sample per cable |
| presets / slots | a bank’s entries; a rack’s slots | a slot’s doc is its product’s body with its own schema |
| Role | Face | Size | Tracking |
|---|---|---|---|
| Wordmark modulr | Archivo | 30 px, 800 | −0.03 em, lower |
| Panel title | Archivo | 26 px, 800 | −0.02 em, as typed |
| Panel caption | IBM Plex Mono | 9 px, 400 | .14 em, upper |
| Knob label: big, small, step | IBM Plex Mono | 10, 9, 10 px, 600 | .12 em, upper |
| Jack label | IBM Plex Mono | 9 px, 600 | .12 em, upper |
| Switch segment; RUN button | IBM Plex Mono | 10 px, 600 | .12 em; .14 em, as typed |
| Read-out well | IBM Plex Mono | 12 px, 400 | .06 em, as typed |
| Status pill | IBM Plex Mono | 11 px, 600 | .14 em, upper |
| State | Today | The suite’s rule |
|---|---|---|
| Rest | the knob shows the read-out; the cursor changes; no colour change | shipped |
| Hover | the read-out shows the knob’s name and value; the cursor changes | partly shipped |
| Drag | the read-out holds the name and the value for 900 ms after the gesture ends; a pulled cable is drawn to the pointer with its free end | shipped |
| Focus | none | one ring round the control and its label, 2 px wide and 2 px clear; ink on a cream plate, text-bright on a dark one |
| Disabled | undo and redo at .35, the default cursor | any control at .35, not hoverable, not focusable |
| Patched | a plug in the cable’s colour sits over the jack | unchanged; a patched CV input leaves its knob alone and the plug is the cue |
| Bypassed | none; a bypass flag exists, with no crossfade | the bypass button engaged, the display at .35, the controls live |
| Token | Value | Role |
|---|---|---|
| --mr-bg | #121110 | the room |
| --mr-rack | #1c1b19 | the rack |
| --mr-rack-edge | #2a2825 | rack outline, header rule, readout border |
| --mr-face | #e6e1d3 | the cream faceplate |
| --mr-ink | #1a1917 | ink on cream |
| --mr-ink-soft | #6b675e | the faceplate subtitle |
| --mr-divider | #c9c3b2 | the faceplate hairline |
| --mr-screw | #b5ae9c | the screw |
| --mr-text | #e6e1d3 | text on the dark page |
| --mr-muted | #8d877a | muted text on the dark page |
| --mr-accent | #ff6a2b | the one accent: live, selected, held peak |
| --mr-accent-hot | #f2c14e | hover and links |
| --mr-knob-hi / --mr-knob-lo | #45423c / #161513 | the knob body |
| --mr-jack-hole / --mr-jack-ring | #0b0a09 / #8d877a | the jack |
| --mr-display | #0b0a09 | the display well |
| --mr-scope-grid | #24221f | the display grid |
A knob drag, a cable edit and a preset load are one reversible journal row each, and every editor action is a plugin.* command, so a script reads the same log.
The honest limit: The journal keeps 4,000 commands and then collapses to one snapshot that cannot be undone; it lives in memory and is not saved with the project.
Modulr Rack holds the synth and the seven effects in up to 16 slots, and any output jack can be cabled to any input jack. On the Vocal bus preset, 4.8 dB of reduction moves band 1 from −6.0 dB to −8.4 dB while the stored knob stays at −6.0 dB.
The honest limit: The 4.8 dB example is the book’s worked figure, not a measurement on a shipped build. Whether a control cable should be aligned to the audio it modulates is an open question.
Every file a suite product writes is JSON with an integer schema stamp, readable without the plug-in, migrated forward and never binary. Modulr’s factory patches are one file of 7,864 bytes for the eight.
The honest limit: Open state is a difference only once it carries a version. On Modulr 0.1.0 neither file has a version field or a migration, and a key the reader drops leaves no trace.
Every figure on this site is from “Modulr — the audio suite: design and architecture specification”, October 2026, and carries that book’s tag: Measured, Proposed, Estimate, Reported or Open question. The one exception is the prices: they are the owner’s, set on 24 October 2026, and neither book names one.