CL-MeltySynth
CL-MeltySynth is a SoundFont MIDI synthesizer library written entirely in Common Lisp. This is a port of the excellent MeltySynth by Sinshu, expanded with new features. There is also my equivalent library for Crystal, Haematite
My midi123 was written in Common Lisp and used CL-MeltySynth in versions prior to v2.0.
Example Videos
Warcraft 2’s “Human 1” by Glenn Stafford Rise of The Triad’s “Spray” by Lee Jackson (CL-MeltySynth v2.0.0) Doom E1M1 “At Doom’s Gate” by Bobby Prince (CL-MeltySynth v1.0.0)
Features
- Wave synthesis and Sound
- [x] 64-bit internal audio engine
- [x] Choice of linear or cubic interpolation
- [x] Loads SoundFont files
- [x] Waveform and Envelope generators
- [x] Low-pass filter
- [x] Vibrato and Modulation LFOs
- MIDI processing
- [x] Note on/off
- [x] Bank/patch selection with optional remapping (remaps unknown presets to bank 0/128)
- [x] Modulation
- [x] Volume control and Panning
- [x] Expression
- [x] Hold pedal
- [x] Pitch bend
- [x] Tuning
- [x] NRPN support
- Effects
- [x] Multiple reverb choices, including a port of Zita-Rev1, with controllable parameters
- [x] Chorus effect
- [x] Stereo enhancer effect
- [x] Reverb, Chorus, and Stereo Enhancer can all be enabled/disabled individually
- Other things
- [x] Standard MIDI file support
- [x] RIFF-based MIDI file support (RMI, only the MIDI data is loaded)
- [x] Loop extension support
- [x] Performance optimizations