midis2jam2 is a remaster of MIDIJam, a MIDI file visualizer made by Scott Haag, last updated in 2007.


midis2jam2 provides a faithful recreation, staying true to the original look and feel, as closely as possible. The models and textures used in midis2jam2 are the original assets from MIDIJam, designed by MIDIJam’s creator Scott Haag. midis2jam2 will complete the GM-1 implementation, allowing every MIDI instrument to be visualized.

Future versions may add extended features, such as custom graphics, real-time MIDI visualization, and others.


Easy mode

Simply download the latest version and run the file for your system. Follow the on-screen instructions for installing midis2jam2.

Hard mode

If you want to experience the latest midis2jam2 updates in between releases, you can download a CI build. Note: these builds are unstable, and I won’t provide any support for them (although, you should submit issues for pertinent bugs).

Getting the binary

You can either use a prebuilt binary or build from source.

Using a prebuilt binary

To begin, download a build from the builds page. Move midis2jam2-xxxxxxxx.jar to a new folder (the Xs are a placeholder here; when you download the jar, this is the beginning of the commit hash).

Building from source

To build midis2jam2, run

$ git clone https://github.com/wyskoj/midis2jam2
$ cd midis2jam2
$ ./gradlew shadowjar

The jar file appears in build/libs. Copy it to a new folder.

You will need at least Java 15 in order for a successful build.


To run midis2jam2, simply execute the jar file:

$ java -jar midis2jam2.jar

You can optionally specify the relative or absolute path to a MIDI file; midis2jam2 will load and play the file using the default synthesizer Gervill:

$ java -jar midis2jam2.jar path/to/midifile.mid

FAQ & Troubleshooting

The program closed, but all the notes are sustaining.

Press the MIDI panic button on your synthesizer to stop the sound.

The audio is out of sync with the video.

This can arise if your MIDI synthesizer is known to have a delay or buffer. Adjust the buffer on your device to reduce it as much as possible.

In some rare cases, the audio may be misaligned because the program took too long to load, and therefore did not have enough time to catch up before the MIDI began playback. Most of the time, this only occurs on first launch.

If it continues to be a problem, add some silence to the beginning of the MIDI file.

I think something is broken.

Check the issues page and make sure there isn’t already a relevant issue open. If there isn’t, create an issue and use the bug report template.

How do I change the soundfont?

midis2jam2 does not handle the playback of MIDI files; it is offloaded to either an external synth or the internal Java MIDI synth Gervill.

For Windows, I recommend VirtualMIDISynth. It allows you to specify the soundfont you would like to use. It will appear in midis2jam2 as VirtualMIDISynth #1.

Why doesn’t instrument X appear?

It’s likely I haven’t implemented it yet. Check this page for more information.

MidiUnavailableException: There is not enough memory available for this task…​

This can happen if you attempt to use ghost/phantom MIDI ports that appear visible on your machine. Try restarting your computer or reconnecting your MIDI devices.


Fork and make a pull request to directly make changes. Open an issue to request features and report bugs. Please ensure you use a template, or ensure you write good issues.