MIDI & MPE
Timbre supports both standard MIDI and MIDI Polyphonic Expression (MPE). The per-chip-per-voice architecture makes MPE support natural rather than bolted on — each voice is already a physically independent signal path.
Standard MIDI
Section titled “Standard MIDI”In standard MIDI mode, Timbre operates as a 16-channel multi-timbral instrument:
- Note on/off triggers voice allocation and envelope gate
- Velocity maps to VCA initial gain and optionally to filter cutoff offset
- Channel aftertouch modulates a configurable target (filter cutoff, VCA, oscillation mode blend)
- CC messages control global and per-channel parameters
CC Mapping
Section titled “CC Mapping”| CC | Function | Range |
|---|---|---|
| 1 | Modulation wheel — LFO depth | 0–127 |
| 7 | Channel volume | 0–127 |
| 10 | Pan position | 0–127 (64 = center) |
| 71 | Resonance / Q | 0–127 |
| 74 | Filter cutoff | 0–127 |
| 91 | Reverb send (if external) | 0–127 |
These are the default mappings. The modulation routing matrix in the ESP32 firmware allows any CC to be mapped to any parameter on any voice.
MPE — MIDI Polyphonic Expression
Section titled “MPE — MIDI Polyphonic Expression”MPE assigns each note to its own MIDI channel, enabling per-note continuous control of multiple dimensions simultaneously. Timbre’s architecture — one physical chip per voice — maps perfectly to this model.
MPE Dimensions
Section titled “MPE Dimensions”| MPE Dimension | Physical Mapping | Why It Works |
|---|---|---|
| Per-note pitch bend | SC clock ratio offset per chip | Each chip has its own clock — pitch bend is just a ratio adjustment |
| Per-note pressure | VCA gain or filter cutoff per chip | Direct I2C write to the target chip’s parameter register |
| Per-note slide (CC74) | Oscillation mode morph | The most expressive mapping: slide between bandpass and relaxation oscillation continuously |
Slide as Timbre Morph
Section titled “Slide as Timbre Morph”The CC74 (slide) mapping deserves special attention. On most synthesizers, slide controls brightness — filter cutoff. On Timbre, slide controls the oscillation mode itself. Moving your finger along a Linnstrument or Roli surface doesn’t just make the note brighter — it changes the fundamental wave-generation mechanism of that specific voice.
At position 0, the voice runs in bandpass self-oscillation (clean, sinusoidal). At position 127, it runs in relaxation oscillation (aggressive, harmonically rich). Intermediate positions represent intermediate topologies — partially reconfigured analog blocks producing sounds that don’t correspond to any fixed oscillator type.
This is only possible because each voice is a discrete reconfigurable chip. There is no shared oscillator bank to negotiate with.
MPE itself has clear precedents — the Arturia PolyBrute 12, UDO Super 6, and ASM Hydrasynth all offer per-note polyphonic expression, and they do it well. What distinguishes Timbre is not MPE support but what MPE controls. Those instruments apply per-note expression within a shared patch architecture: every voice runs the same oscillator and filter topology, and MPE modulates parameters within that shared topology. The Xpander allowed different patches per voice but predated MPE by three decades and had no per-note continuous expression. Timbre combines both capabilities — per-note continuous expression applied to per-voice independent analog topology. Slide does not modulate a parameter of a fixed circuit; it reconfigures the circuit itself.
Voice Allocation
Section titled “Voice Allocation”The ESP32’s voice allocator supports several strategies:
| Strategy | Behavior | Use Case |
|---|---|---|
| Round-robin | Cycles through voices sequentially | Even wear, predictable behavior |
| Lowest-available | Uses the lowest-numbered free voice | Consistent voice-to-position mapping |
| Voice stealing | Steals the oldest or quietest voice when all are occupied | Dense playing, sustain pedal |
| Zone assignment | Pre-assigns voice ranges to keyboard zones | Split/layer configurations |
In MPE mode, the allocator respects MPE zone boundaries (lower zone, upper zone) and ensures that re-triggered notes on the same channel reuse the same voice chip, preserving the physical continuity of per-note expression.
Expressive Controller Compatibility
Section titled “Expressive Controller Compatibility”The MPE implementation targets compatibility with:
- Roli Seaboard — 5D touch surface (strike, press, glide, slide, lift)
- Haken Continuum / Osmose — continuous pitch and pressure
- Roger Linn Design Linnstrument — per-note X/Y/Z
- Sensel Morph — pressure-sensitive grid
These controllers generate MPE data natively. Timbre receives it and maps it to physical per-voice parameter changes — no interpolation, no voice-sharing compromises.