MPE Spreader
MIDI effect that promotes MIDI 1.0 to MIDI 2.0 and spreads notes across the channel address space, with per-note vibrato and brightness modes. A test vehicle for truce's MIDI 2.0 encode surface.
Source: examples/truce-example-mpe-spreader/.
#What it demonstrates
- MIDI 2.0 output opt-in (
midi2_output = trueintruce.toml): every 1.0 channel-voice message is re-emitted as its 2.0EventBody(NoteOn2,ControlChange2,PitchBend2,PolyPressure2,ChannelPressure2,ProgramChange2) - Value promotion via the
truce::core::midiupscale helpers (upscale_7_to_16,upscale_7_to_32,upscale_14_to_32) - MPE-style voice allocation: round-robin note fan across a configurable channel count
- Per-note expression output: a vibrato LFO emitted as 32-bit
PerNotePitchBend, and the mod wheel routed toPerNoteCC74 (brightness) on every held note - Recentering pitch bends on note-off and mode switches so no note is left detuned
#[derive(ParamEnum)]algorithm selector rendered as a dropdown in a built-inGridLayouteditor
#Parameters
| Name | Range | Unit | Description |
|---|---|---|---|
| Algorithm | Passthrough / Channel Fan / Per-Note Vibrato (2.0 only) / MPE Vibrato / Mod Brightness | -- | How notes are addressed and which expression is generated |
| Channels | 1 to 16 | -- | Fan width for channel round-robin modes |
| Vibrato Rate | 0.1 to 12 (log) | Hz | Vibrato LFO rate |
| Vibrato Depth | 0 to 2 | st | Vibrato depth in semitones |