Build with this node

Start with a prompt in Studio, or copy it into your own coding agent.

Ask Studio

@maruaudio/dsp/voices/rings translates the Mutable Instruments Rings modal resonator: up to 60 modes per voice with the original parameter laws, an internal or external exciter, the Strummer and onset detector, odd and even pickups and the output soft limiter. Only the modal model is implemented; qualification stays with the module.

Parameters

setRingsParameter returns false, changing nothing, for an unknown index, a non-finite value, model 1 or 2, or a polyphony other than exactly 0, 1 or 2.

IndexRange as codedDefault
0 frequency12 to 72 semitones48
1 structure / 2 brightness / 3 damping / 4 position; 5 to 9 their CV amounts0 to 1; −1 to 10.25 / 0.5 / 0.3 / 0.8; 0
10 polyphony0, 1 or 2: 1, 2 or 4 voices with 60, 28 or 12 modes0
11 model0 modal only0

setRingsCv(state, index, value, present) writes seven CVs; an absent CV takes its normal (1/12 for frequency, else 0). setRingsConnection (19 to 23: IN, STRUM, pitch, odd, even) declares connections; an absent input uses the internal pulse.

Lifecycle

initRingsState(rate, polyphony) allocates fixed storage → prepareRingsState restores defaults in place → set parameters, CVs and connections → triggerRings(state, velocity, note?) (ignored while STRUM is connected) → tickRings(state, input, strum) once per frame returns the out pair (odd and even pickups at polyphony 0) → resetRingsState clears all histories and keeps the settings.

When to use it

A Rings modal resonator voice or effect, struck internally or excited by audio.

Limits

  • Stereo pair, one frame per tick; controls latch every 24 frames; other rates than 48 kHz rescale the limiter and onset filters.

Algorithm properties and proofs

No Lean 4 proof is mapped to this node.

Explore proofs alongside performance

Parameters

ParameterTypeSetter
Present present

Input jack presence selects external excitation; absent means internal exciter.

boolsetRingsInputPresent
Pitch semitones pitchSemitones

Convenience setter for a MIDI-style base pitch in semitones.

floatsetRingsPitch

Dependencies

None: this node imports no other node.

Dependents

No other node imports this one.

Used by

No plugin with a published composition uses this node yet.