Skip to content

Effects Inserts

Effects inserts are the creative-FX processors you load into mixer channel-strip and bus slots (and realtime engine inserts): reverbs, modulation effects, and delays. They are built through the same insert factory that the Mixing Engine uses for every channel-strip insert.

Inserts are not mastering processors

This page catalogs mixer/engine inserts. The named Mastering Processors registry — compressors, EQ, saturation, stereo, repair, and the loudness/maximizer stages — is a separate topic with its own scope. The two overlap only where noted: a few FX inserts are also exposed as one-shot mastering processors. If you are looking for the mastering registry, start on that page instead.

An insert sits in the channel path, so everything downstream — the fader, the sends, the bus — sees its output. That position is what separates an insert from a send, and it is the first thing to be sure of before reading the catalog below.

MIXER · SENDSIDLE
Pre-fader vs post-fader sends — drag the fader

One channel feeds two sends and the main output. Pull the channel fader down: the POST-fader send and the MAIN output follow it, because they are tapped after the fader; the PRE-fader send is tapped before it and stays put. Press play to hear it — the dry tone (post-fader) fades out while the pre-fader send (a stand-in for a reverb/aux return) keeps sounding even with the fader all the way down. That is why a vocal reverb fed pre-fader does not disappear when you ride the vocal down — the classic routing surprise.

Channel fader
0 dB

Discovering the insert set

Mixer scene inserts use the same processor factory as mastering inserts, but the valid insert set is slightly broader than masteringProcessorNames(). Four runtime APIs describe what is available and how to configure it:

APIReturns
masteringInsertNames()The full list of valid insert ids
masteringInsertParamNames(name)The construction keys one insert accepts (band/sub-band processors list their indexed band{i}.* keys; an unknown name returns an empty array)
masteringInsertParamInfo(name)The realtime-automatable subset: each parameter's JSON key, numeric automation id, and realtime-safety flag
masteringProcessorCatalog()Machine-readable entries (kind, realtimeInsertable, stereoOnly, latencySamples, tailSamples, channelPolicy) for picker/filter UIs. The representative 48 kHz / 512-sample probe reports latency and audible decay tail (both 0 for offline processors); query the live processor for exact configuration-dependent latency. Hosts can filter capabilities without hard-coding processor IDs.

The Python equivalents are mastering_insert_param_names(name), mastering_insert_param_info(name), and mastering_processor_catalog().

Keys outside an insert's list are ignored by the processor and reported through Mixer.sceneWarnings() when a scene carrying them loads.

Creative-FX insert catalog

In addition to the mastering solo processors, builds with creative FX enabled expose reverb, modulation, and delay insert IDs:

Insert IDMeaning
effects.reverb.plateAlias for the Dattorro plate-style reverb
effects.reverb.dattorroDattorro reverb
effects.reverb.fdnFeedback delay network reverb
effects.reverb.velvetVelvet-noise style reverb
effects.reverb.convolutionConvolution reverb; can use an impulse response in native insert creation paths
effects.reverb.roomGeometric room reverb synthesized from room parameters
effects.acoustic.roomMorphRoom-character morph toward a target geometric room
effects.modulation.ensembleSolina-style BBD string-machine ensemble
effects.modulation.chorusStereo chorus
effects.modulation.flangerFlanger
effects.modulation.phaserPhaser
effects.modulation.wahTempo-style swept wah filter
effects.modulation.autoWahEnvelope-following auto-wah filter
effects.modulation.rotaryRotary-speaker style pitch/tremolo motion
effects.modulation.ringModulatorRing modulator
effects.modulation.pitchShifterSimple pitch shifter
effects.delay.stereoStereo delay

Build-flag gating

These insert IDs are available only in builds configured with the CMake option BUILD_FX (which derives the internal SONARE_HAVE_FX define). The geometric room inserts (effects.reverb.room, effects.acoustic.roomMorph) also require BUILD_ACOUSTIC_SIM. In a build without an option, the corresponding IDs simply do not appear in masteringInsertNames().

There are a few practical details to know:

DetailMeaning
effects.reverb.plate and effects.reverb.dattorroTwo names for the same Dattorro processor
Reverb paramsdecaySec, decay, damping / hfDamping, dryWet, preDelayMs, reverbTimeS, densityHz, enableShelf (which apply depend on the algorithm). effects.reverb.convolution clamps decaySec to its synthesized-tail ceiling of 12 seconds at construction time. The Dattorro/plate insert also accepts modRateHz (figure-8 tank LFO — low-frequency oscillator — rate in Hz, default 0.5) and modDepthSamples (modulation depth in samples at the reverb's reference rate, default 6.0) for its chorused tail.
effects.modulation.chorus paramsrateHz, depthMs, centerDelayMs, dryWet
effects.modulation.flanger paramsrateHz, depthMs, centerDelayMs, feedback, dryWet
effects.modulation.phaser paramsrateHz, minHz, maxHz, stages, dryWet
effects.modulation.ensemble paramsrateSlowHz, rateFastHz, depthSlowMs, depthFastMs, centerDelayMs, toneHz, dryWet
effects.modulation.wah paramsrateHz, minHz, maxHz, resonance, dryWet
effects.modulation.autoWah paramssensitivity, minHz, maxHz, resonance, attackMs, releaseMs, dryWet
effects.modulation.rotary paramsrateHz, depthMs, tremolo, stereoSpread, dryWet
effects.modulation.ringModulator paramscarrierHz, dryWet
effects.modulation.pitchShifter paramssemitones, dryWet
effects.delay.stereo paramsdelayTimeLMs, delayTimeRMs, feedback, pingPong, dryWet
effects.reverb.convolutionNeeds an impulse response (IR — a recording of how a real space responds to a single short burst) supplied through native insert construction
Convolution insert without an IREffectively behaves as a passthrough
What are these reverb algorithms?

They are different ways to synthesize a reverb tail. Pick by the character you want, not by correctness — all are valid.

  • Plate / Dattorro — a smooth, dense, classic-studio sound. The Dattorro topology is a widely used plate-style design; plate is an alias for it.
  • FDN (feedback delay network) — a flexible algorithmic reverb built from interconnected delay lines, easy to tune from small rooms to large halls.
  • Velvet-noise — uses sparse random impulses to build an efficient, natural-sounding tail at low CPU cost.
  • Convolution — reproduces a real space by convolving the signal with a measured impulse response of that room.
What is effects.modulation.ensemble?

A Solina-style BBD string-machine ensemble — the lush, chorused tone of vintage string synths. It runs three delay taps per channel, swept simultaneously by a slow and a fast 3-phase LFO bank, so the modulation is dense rather than a single chorus wobble. A BBD bucket-bandwidth lowpass darkens the wet path, emulating the analog bucket-brigade delay lines. The right-channel LFO polarity is inverted, which spreads a mono source into a wide stereo image. It is exposed through the insert factory and its parameters are automatable through set_parameter on every binding.

Inserts that are also one-shot mastering processors

Use these in Mixing Scene JSON insert.processor fields. In the shipped FX-enabled WASM build, some of them are also one-shot mastering processors: effects.reverb.plate, effects.reverb.dattorro, effects.reverb.fdn, effects.reverb.velvet, effects.reverb.convolution, effects.modulation.chorus, effects.modulation.flanger, effects.modulation.phaser, and effects.delay.stereo are returned by masteringProcessorNames() and run through the one-shot apply path. The geometry-driven inserts and the newer modulation inserts — effects.reverb.room, effects.acoustic.roomMorph, effects.modulation.ensemble, effects.modulation.wah, effects.modulation.autoWah, effects.modulation.rotary, effects.modulation.ringModulator, and effects.modulation.pitchShifter — are insert-only and do not appear in masteringProcessorNames(); reach them through masteringInsertNames() and scene inserts.