Expression Controller
The Expression Controller shapes how notes are played — their velocity, duration character, continuous controller data, micro-timing feel, and phrase-level breathing.Articulation Styles
| Style | What It Does | Multiplier Range |
|---|---|---|
| Full Length | No articulation processing. Notes play at their full generated duration. Suitable for drones and sustained textures. | 1.0 |
| Legato | Sustained, connected notes with slight duration reduction. Smooth, singing quality. | 0.80–0.95 |
| Staccato | Short, detached notes. Punchy, rhythmic character with clear separation between events. | 0.20–0.40 |
| Tenuto | Notes held for their full notated value. Weighted, deliberate phrasing. | 0.95–1.00 |
| Varying | Progressive shortening through each phrase — begins near legato (0.85) and shortens toward staccato (0.35) by phrase end. Creates a natural “running out of breath” contour. | 0.85→0.35 |
Velocity
| Parameter | ID | Range | Default | Description |
|---|---|---|---|---|
| Velocity Min | velocityMin | 1–127 | 60 | Minimum MIDI velocity |
| Velocity Max | velocityMax | 1–127 | 100 | Maximum MIDI velocity |
CC Controllers
PERF streams continuous controller data organized into five groups, each with its own update rate and envelope shape:Dynamics Group (~30 Hz)
| CC | Controller | Range |
|---|---|---|
| CC11 | Expression | 70–115 (default) |
| CC2 | Breath | 60–115 (default) |
Timbre Group (~20 Hz)
| CC | Controller | Range |
|---|---|---|
| CC74 | Brightness (filter cutoff) | Configurable |
| CC71 | Resonance | Configurable |
Vibrato Group
| CC | Controller | Description |
|---|---|---|
| Pitch Bend | Vibrato oscillation | Centered at 8192 |
| CC76 | Vibrato Rate | Configurable |
| CC77 | Vibrato Depth | Configurable |
Articulation Group (note-on only)
| CC | Controller | Description |
|---|---|---|
| CC73 | Attack Time | Set once per note |
| CC72 | Release Time | Set once per note |
Effects Group (~15 Hz)
| CC | Controller | Range |
|---|---|---|
| CC1 | Modulation | Configurable |
| CC21 | Flutter | Configurable |
Micro-Timing
| Parameter | ID | Options | Default | Description |
|---|---|---|---|---|
| Groove Feel | microTimingStyle | Strict / NOMN | Strict | Timing humanization |
- Strict — Events fire exactly at their computed PPQ positions. Metronomic precision.
- NOMN — Applies subtle micro-timing variation that responds to phrase position and event density. Not random jitter — contextual humanization that creates a natural, breathing feel.
Phrase Structure
Articulation and expression operate within a phrase structure system. Phrases cycle through lengths of 4, 6, 8, 5, and 7 notes. At each phrase boundary:- A breath is optionally inserted (default 0.15 seconds of silence)
- Articulation resets (for Varying mode)
- CC envelopes reset their phrase position modulation
Additional Expression Parameters
| Parameter | ID | Range | Default | Description |
|---|---|---|---|---|
| Articulation | articulationStyle | Full Length / Legato / Staccato / Tenuto / Varying | Full Length | Articulation style |
| Phrase Elasticity | couplingExponent | 0.0–3.0 | 0.0 | Dense passages → shorter notes (0 = off) |
| Phrase Density Anchor | couplingRef | 0.05–2.0 | 0.5 | Reference density for elasticity coupling |