-
Notifications
You must be signed in to change notification settings - Fork 262
FluidFeatures
This is a list of MIDI events that fluidsynth handles by default. That "handling" is either given by
- a decisive explanation in the SoundFont spec, or
- a (vague) description of the General MIDI standard.
Thus you cannot expect that fluidsynth behaves in a certain way (which you e.g. know from other synths) just because you send some CCs.
Note: In order to control even more aspects of the sound synthesis (e.g. ADSR, low pass filter cutoff & resonance, reverb
& chorus amount) SoundFont modulators must be used! Either define them in the SoundFont file itself (as ought to be by the spec) or use fluidsynth's API for manipulating default modulators (see fluid_synth_add_default_mod()
and fluid_synth_remove_default_mod()
resp.).
✔️ Implemented according to MIDI or SoundFont spec and usable by default
✅ Partially or customly implemented and usable by default
❌ Not handled by default, but usable via custom SoundFont modulators
MIDI Message | Implementation Status |
---|---|
NOTE_OFF | ✔️ |
NOTE_ON | ✔️ |
CONTROL_CHANGE | ✅ See related table below. |
MIDI_SET_TEMPO | ✔️ |
PROGRAM_CHANGE | ✔️ |
CHANNEL_PRESSURE | ✔️ SF2 default modulator |
KEY_PRESSURE | ✔️ |
PITCH_BEND | ✔️ SF2 default modulator |
MIDI_SYSTEM_RESET | ✔️ |
MIDI CC | Implementation Status |
---|---|
(000) Bank Select | ✔️ Interpretation of MSB and LSB depends on synth.midi-bank-select
|
(001) Modulation Wheel | ✔️ SF2 default modulator |
(002) Breath Controller | |
(004) Foot Controller | ❌ |
(005) Portamento Time | ✔️ MSB and LSB (14-bit value!), see PolyMono documentation |
(006) Data Entry | ✔️ MSB and LSB (14-bit value!). |
(007) Channel Volume | ✔️ SF2 default modulator |
(008) Balance | ✅ non-standard SF2 modulator |
(010) Pan | ✔️ SF2 default modulator |
(011) Expression | ✔️ SF2 default modulator |
(064) Sustain Pedal | ✔️ See Sostenuto documentation |
(065) Portamento Switch | ✔️ See PolyMono documentation |
(066) Sostenuto Pedal | ✔️ See Sostenuto documentation |
(068) Legato Switch | ✔️ See PolyMono documentation |
(072) Sound Controller 3 (default: Release Time) | ❌ |
(073) Sound Controller 4 (default: Attack Time) | ❌ |
(074) Sound Controller 5 (default: Brightness) | ❌ |
(084) Portamento Control (PTC) | ✔️ See PolyMono documentation |
(091) Effects 1 Depth (Reverb Send Level) | ✔️ SF2 default modulator |
(092) Effects 2 Depth (Tremolo Depth) | ❌ |
(093) Effects 3 Depth (Chorus Send Level) | ✔️ SF2 default modulator |
(094) Effects 4 Depth (Celeste (Detune) Depth) | ❌ |
(095) Effects 5 Depth (Phaser Depth) | ❌ |
(098) NRPN LSB | ✔️ See related table below |
(099) NRPN MSB | ✔️ See related table below |
(100) RPN LSB | ✅ See related table below |
(101) RPN MSB | ✅ See related table below |
(120) All Sound Off | ✔️ |
(121) Reset All Controllers | ✔️ |
(121) Local Control | ✔️ Ignored, because not applicable |
(123) All Notes Off | ✔️ |
(124) Omni Mode Off | ✔️ See PolyMono documentation |
(125) Omni Mode On | ✔️ See PolyMono documentation |
(126) Mono Mode | ✔️ See PolyMono documentation |
(127) Poly Mode | ✔️ See PolyMono documentation |
RPN CC | Implementation Status |
---|---|
(000) RPN_PITCH_BEND_RANGE | ✔️ SF2 default modulator |
(001) RPN_CHANNEL_FINE_TUNE | ✔️ |
(002) RPN_CHANNEL_COARSE_TUNE | ✔️ |
(003) Tuning Program Select | ✔️ |
(004) Tuning Bank Select | ✔️ |
(005) Modulation Depth Range | ❌ Not yet implemented |
All SF2 generators can be altered with NRPN Control Change messages. See section 8.1.2 in the spec.