midi123
midi123 is a command line MIDI player and MIDI->WAV converter that uses my Haematite and RemiAudio libraries for its sound engine. It is written entirely in the Crystal programming language.
Source Code Repository Releases, including Linux x86-64 AppImage downloads
Example videos
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
Example Usage
# Play a MIDI file using a SoundFont, and stop after it finishes. $ midi123 -s TimGM6mb.sf2 "24 - I Choose the Stairs.mid" # Play a MIDI file using a SoundFont, and loop at the end. $ midi123 --loop -s sc-55.sf2 "11 - Goin' Down the Fast Way.mid" # Render multiple MIDI files to WAVs in parallel. $ midi123 --render -s "Arachno SoundFont.sf2" "15 - Spray.mid" "07 - How'd I Do.mid" # Show the help information. $ midi123 --help # Show version information $ midi123 --version
Notable Features
- [x] Supports both MIDI and RMI files
- [x] Multiple MIDIs can be specified and they will play one after the other
- [x] Loop support
- [x] Rendering to either WAV or Au format.
- [x] Rendering multiple MIDI files to WAV files in parallel without excess memory usage
- [x] Support for multiple bit depths and sample rates, and both integer and floating point WAVs
- [x] Parametric EQ with an arbitrary number of bands
- [x] Multiple reverb models to choose from
- [x] Multiple filter models to choose from for both the voices, and the channels.
- [x] Optional stereo enhancement effect
- [x] Optional soft clipping
- [x] Control over the reverb and chorus effects
- [x] VU meters
- [x] Keyboard control support
- [x] Configuration file support