FM0¶
FM0 is a 16-voice, four-operator FM synthesizer built into MAGDA. Every operator can phase-modulate any operator through a full 4x4 modulation matrix, including self-feedback on the diagonal. Each operator has its own ratio, level, and waveform, feeding a shared amplitude ADSR.
Modulation matrix¶
The 4x4 matrix routes operator outputs into operator phase inputs. Rows are sources, columns are destinations, so cell M2>1 is "operator 2 modulates operator 1". The diagonal cells (M1>1, M2>2, M3>3, M4>4) are self-feedback.
| Parameter | Range | Default | Description |
|---|---|---|---|
| M1>1 ... M4>4 | 0 to 8 | 0 (M2>1 = 2) | Modulation amount for each matrix cell |
A default patch has operator 2 modulating operator 1, the classic two-operator FM voice. Raise the diagonal for brighter, more aggressive timbres.
Operators¶
Each of the four operators has these controls.
| Parameter | Range | Default | Description |
|---|---|---|---|
| Ratio | 0.25 to 16 | 1 (Op2 = 2) | Frequency ratio, a multiple of the played note |
| Level | -60 to 6 dB | 0 (Op2-4 = -60) | Operator output level |
| Wave | Sine / Tri / Saw / Square / Noise | Sine | Operator waveform |
Each operator also has an Enable toggle (on by default; disabling stops it both sounding and modulating) and a Reset toggle that resets its phase on note-on.
Amp, voice, and velocity¶
| Parameter | Range | Default | Description |
|---|---|---|---|
| Amp Attack | 1 to 2000 ms | 5 | ADSR attack |
| Amp Decay | 1 to 2000 ms | 300 | ADSR decay |
| Amp Sustain | 0 to 1 | 0.5 | Sustain level |
| Amp Release | 1 to 4000 ms | 400 | ADSR release |
| Glide | 0 to 2000 ms | 0 | Portamento (mono only; poly forces 0) |
| Vel Amount | 0 to 1 | 1 | Velocity sensitivity depth |
Macros, modulation, and presets¶
FM0 sits in the standard device slot, so its parameters accept macros and modulators, and patches save and recall through the preset system.
AI sound design¶
Click the AI icon in the device header and describe the sound you want. The agent reads this device's own parameters and their real-world ranges, then writes values into them. See Per-Device AI Panel.