MusicBrainopen hardware · est. NL

Component

Elements modal voice

v0.5.111

Oscillators & voicesMutable InstrumentsPhysical modelStereo

Modal synthesis as on Mutable Elements: an exciter (bow, blow, strike) sets a resonator ringing.

Software v0.5.111

Board overview

Overview

Modal synthesis as on Mutable Elements: an exciter (bow, blow, strike) sets a resonator ringing.

Elements is a complete voice in one module: an exciter sets a resonator ringing. The exciter can bow, blow and strike at the same time (three level knobs, freely mixed), each with its own character: Flow shapes the breath from a soft breeze to turbulence, Mallet goes from a soft hammer to a hard stick, and three Timbre knobs set how bright each one is. Contour shapes the excitation from short and percussive to a slow swell.

The resonator decides what is struck: Geometry moves from a string via plates and tubes to bells, Brightness and Damping set how it rings and dies away, Position where it is played, and Space adds stereo width and reverb. Play it from a keyboard with V/Oct and Gate; velocity on Strength makes every note as loud and bright as you hit it. PLAY strikes without a gate. Each Ext In takes your own sound as the breath or the strike.

Controls

ControlRangeDefaultWhat it does
Contour0 … 11Contour: the shape of the excitation, from short and percussive to a long swell.
Bow0 … 10How much bow: a sustained, scratchy excitation.
Blow0 … 10How much breath: air and noise through the resonator.
Strike0 … 10.8How much strike: a tap or a hit.
PlayStrikes the voice without a gate (held = gate high).
Flow0 … 10.5Flow: the character of the breath, from a soft breeze to turbulent.
Mallet0 … 10.5Mallet: what you strike with, from a soft mallet to a hard stick and sampled clicks.
Bow Timbre0 … 10.5Tone of the bow: dark to bright.
Blow Timbre0 … 10.5Tone of the breath: dark to bright.
Strike Timbre0 … 10.5Tone of the strike: dull to bright.
Coarse-36 … 36 semi0Tuning in semitones, on top of V/Oct.
Fine-100 … 100 ct0Fine tuning in cents.
FM0 … 10.5Attenuverter of the FM input: middle = off; fully open, one unit of CV is one octave.
Geometry0 … 10.2Shape of the resonator: from string via plate and tube to bell.
Brightness0 … 10.5How many high overtones the resonator lets ring.
Damping0 … 10.25How quickly the sound dies away.
Position0 … 10.3Where you strike or bow: the middle sounds hollower.
Space0 … 10.5Stereo width and reverb.
Bow Timbre CV-1 … 10Attenuverter for the Bow Timbre CV input: middle = off, left inverts.
Flow CV-1 … 10Attenuverter for the Flow CV input: middle = off, left inverts.
Blow Timbre CV-1 … 10Attenuverter for the Blow Timbre CV input: middle = off, left inverts.
Mallet CV-1 … 10Attenuverter for the Mallet CV input: middle = off, left inverts.
Strike Timbre CV-1 … 10Attenuverter for the Strike Timbre CV input: middle = off, left inverts.
Damping CV-1 … 10Attenuverter for the Damping CV input: middle = off, left inverts.
Geometry CV-1 … 10Attenuverter for the Geometry CV input: middle = off, left inverts.
Position CV-1 … 10Attenuverter for the Position CV input: middle = off, left inverts.
Brightness CV-1 … 10Attenuverter for the Brightness CV input: middle = off, left inverts.
Space CV-1 … 10Attenuverter for the Space CV input: middle = off, left inverts.
Signat0 … 10The exciter's 'signature' parameter, not on the original panel.
ModFrq0 … 10.5Speed of the internal resonator modulation.
ModOff0 … 10.1Depth of the internal resonator modulation.
Level0 … 10.8Output level.

Ports

PortDirectionSignalWhat it carries
TimbincvCV for Bow Timbre, scaled by its attenuverter.
FlowincvCV for Flow, scaled by its attenuverter.
TimbincvCV for Blow Timbre, scaled by its attenuverter.
MallincvCV for Mallet, scaled by its attenuverter.
TimbincvCV for Strike Timbre, scaled by its attenuverter.
DampincvCV for Damping, scaled by its attenuverter.
GeomincvCV for Geometry, scaled by its attenuverter.
PosincvCV for Position, scaled by its attenuverter.
BrgtincvCV for Brightness, scaled by its attenuverter.
SpaceincvCV for Space, scaled by its attenuverter.
V/OctincvPitch, 1 V per octave.
FMincvFrequency modulation, scaled by the FM knob.
GateingateStarts and holds the excitation.
StrengthincvHow hard each note is played (velocity).
Ext IninaudioYour own sound as the breath (replaces the internal noise).
Ext IninaudioYour own sound as the strike.
Out LoutaudioLeft output.
Out RoutaudioRight output.

How it works

The panel follows the original: exciter on the left, resonator on the right, and the dotted lines that tie Contour to Bow and Blow, and Flow, Mallet, Geometry and Brightness to their CV inputs. Below are ten CV inputs, each with an attenuverter: the value is the knob plus attenuverter × CV, limited as on the original (BIND in Émilie Gillet's cv_scaler.cc). FM is the attenuverter of the FM input: in the middle it does nothing, fully open one unit of CV moves the pitch by an octave.

Inside is the original modal synthesis code: a bank of resonant filters (or a string model) driven by the exciter, then a reverb. It runs at 32 kHz and is resampled to the Brain's 44.1 kHz. The browser simulator runs the same C++ code compiled to WebAssembly.

Runs on

  • Teensy 4.1 (the MusicBrain Brain).
  • The browser: the editor's simulator runs the same C++ code as WebAssembly, so what you hear while patching is what the Brain plays.

Try it

In the editor's example set: 💎 Elements (modaal), 🎚️ Elements + Vari-mu.

Editor: https://editor.musicbrain.nl

Sources & licences

  • Based on Mutable Instruments Elements by Émilie Gillet, open source under the MIT licence (vendored in firmware/lib/mi-elements). This is a software port, not the Mutable Instruments hardware.
  • The CV and attenuverter handling follows the original cv_scaler.cc (shared table in mmb_dsp/elements_cv.h). The MusicBrain wrapper is MIT licensed as well.

Versions

  • 0.5.111: panel laid out like the original (34 HP), ten CV inputs with attenuverters, FM input, both Ext In inputs and the PLAY button on the panel; FM became the attenuverter of the FM input.
  • First version (June 2026): a five-voice standalone Teensy build first, then Elements as a module in the Brain, with continuous Bow/Blow/Strike levels.