Haematite
Haematite is a SoundFont MIDI synthesizer library written entirely in Crystal. This is a port of the excellent MeltySynth by Sinshu, expanded with new features. There is also my equivalent library for Common Lisp, CL-MeltySynth.
Documentation for the library can be found here.
Example videos
These were all played using midi123, my command-line MIDI player that uses Haematite.
Sonic the Hedgehog;’s Green Hill Zone by Masato Nakamura Warcraft 2’s “Human 2” by Glenn Stafford Sonic the Hedgehog’s “Spring Yard Zone” by Masato Nakamura Rise of The Triad’s “Smoke and Mirros” by Lee Jackson Mega Man 2’s “Airman” by Takashi Tateishi
Features
- Wave synthesis and Sound
- 64-bit internal audio engine
- High quality interpolation
- Loads SoundFont files
- Waveform and Envelope generators
- Multiple lowpass filter choices for the voices
- Vibrato and Modulation LFOs
- MIDI processing
- Note on/off
- Bank/patch selection with optional remapping (remaps unknown presets to bank 0/128)
- Modulation
- Volume control and Panning
- Expression
- Hold pedal
- Pitch bend
- Tuning
- NRPN support
- Support for MIDI controllers 71 and 74
- Effects
- Multiple reverb choices, including a port of Zita-Rev1, with controllable parameters
- Chorus effect inspired by an 80s synth with model number ending in “-60”
- Stereo enhancer effect
- Reverb, Chorus, and Stereo Enhancer can all be enabled/disabled individually
- Filters on the voices can be changed to non-standard models
- Filters on the channels are selectable
- Other things
- Standard MIDI file support
- RIFF-based MIDI file support (RMI, only the MIDI data is loaded)
- Loop extension support
- Performance optimizations