Lisp 'made with alien technology' logo CL-MeltySynth is a MIDI SoundFont synthesizer with minimal dependencies written entirely in Common Lisp. It can be used to provide MIDI playback in any Common Lisp project with minimal dependencies.

Also included is midi123, a command line MIDI player and MIDI->WAV converter that serves as a non-trivial example program. An AppImage of the lastest release of midi123 for Linux can be downloaded here.

Releases can be found on the Releases wiki page.

CL-MeltySynth is a port of the excellent MeltySynth by Sinshu from C# to pure Common Lisp.

Example videos:

Some example usages for midi123:

# 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 a MIDI file to a WAV using a SoundFont.
$ midi123 --render -s "Arachno SoundFont.sf2" "15 - Spray.mid"

# Play a MIDI file using a SoundFont, and stop after it finishes.
$ midi123 -s TimGM6mb.sf2 "24 - I Choose the Stairs.mid"

# Show the help information.
$ midi123 --help

# Show version information
$ midi123 --version

An overview of how to use the library can be found here. The full API reference can be found here.

Wanna support me? Buy me a coffee on Ko-Fi
Buy Me a Coffee at ko-fi.com


You can find a general roadmap of planned features here in the wiki.

Building and Development

You can clone this repository using Fossil:
fossil clone https://chiselapp.com/user/MistressRemilia/repository/CL-MeltySynth/

This requires a recent version of SBCL (it has been tested with 2.2.2, 2.2.3, and 2.2.4). Please see the Building article in the wiki for information on loading the library, building midi123, debug builds, and running tests. Additional example programs can be found in the examples directory.

Style info

I use a slightly different style for my code.

How do I contribute?

  1. Go to https://chiselapp.com/user/MistressRemilia/repository/CL-MeltySynth/ and clone the Fossil repository.
  2. Create a new branch for your feature.
  3. Push locally to the new branch.
  4. Create a bundle with Fossil that contains your changes.
  5. Get in contact with me.


Links and Licenses

CL-MeltySynth itself is mostly under the GNU Affero General Public License version 3, except for the port of Zita-Rev1, which is under the GNU General Public License version 3.