Midica is an interpreter for a Music Programming Language. It translates source code to MIDI.

But it can also be used as a MIDI player, MIDI compiler or decompiler, Karaoke player, MIDI file analyzer or a player for several more file formats.

Midica is an open source project written in Java and hosted on GitHub: https://github.com/truj/midica

The main purpose of the application is to develop music with a music programming language. But various other formats can also be loaded and played directly or converted to MIDI.

All supported music programming languages focus on music instead of sound generation. So the programmer is dealing with:

  • Notes and Octaves instead of frequencies
  • Note values or Rest values instead of milliseconds
  • Instrument names instead of mathematical sound synthesis functions

Quick Start

  1. Verify that the Java Runtime (JRE 1.7 or later) is installed. If not, download and install it from somewhere on the internet, e.g. from java.com.
  2. Download the file midica.jar from the latest Midica release.
  3. On the command line, start Midica with the following command:
    java -jar midica.jar
    Depending on your operating system, there is a chance that you can run Midica just by double-clicking midica.jar.
  4. In the import section of the main window (upper right corner), click the select file button. This opens a file chooser window.
  5. In the file chooser window, select a tab according to the programming language or file format you want to use.
  6. Choose the file and maybe also a charset and/or the command or full path to a different program (needed for some formats). Then hit the open button.
  7. If the file can be loaded correctly, hit the button start player in the bottom left corner of the main window.
  8. You can change the file in the editor/program of your choice, while playing. Then press F5 or click the Reparse button to reload the changed file.

Supported formats

Midica supports the following languages or file formats for input (import):

  • Music Programming Languages:
    • MidicaPL: This language is built directly into Midica. It supports functions, variables, musical patterns, control structures, constants and so on.
    • ALDA: A very compact language, more focused on musicians but less on programmers.
      (ALDA must be installed separately, if this language is used.)
    • ABC notation: A widely-used text-based music notation format.
      (abcMIDI must be installed separately, if this language is used.)
  • Other Formats:
    • MIDI: Support for MIDI and Soft Karaoke (.mid, .midi, .kar) is supported directly by Midica.
    • LilyPond: A LaTeX-like language, mainly used for Music Engraving.
      (LilyPond must be installed separately, if this language is used.)
    • MuseScore, GuitarPro, MusicXML, Capella, and several more formats.
      (MuseScore must be installed separately, if one of these formats is used.)

The following formats are supported for output (export):

  • Music Programming Languages:
    • MidicaPL (directly supported for export)
    • ALDA (directly supported for export)
    • ABC (abcMIDI must be installed separately)
  • Other Formats:
    • MIDI (directly supported for export)


You can choose between one of the supported Music Programming Languages.

The Preparation Page of the MidicaPL Tutorial introduces you to the general development process, no matter which language you choose.


The further chapters of the tutorial are only for the built-in language MidicaPL:


If you prefer to use ALDA, please consult the ALDA documentation.


In order to code in ABC please choose one of the ABC tutorials.


In the Screenshots page you can see screenshots of Midica, how it is used for different tasks.