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
- 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.
Download the file
midica.jarfrom the latest Midica release.
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
In the import section of the main window (upper right corner), click the
select filebutton. This opens a file chooser window.
- In the file chooser window, select a tab according to the programming language or file format you want to use.
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
If the file can be loaded correctly, hit the button
start playerin the bottom left corner of the main window.
You can change the file in the editor/program of your choice, while playing. Then press
F5or click the
Reparsebutton to reload the changed file.
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.)
- 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)
- 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:
- Chapter 1: Basics
- Chapter 2: Improving
- Chapter 3: Functions
- Chapter 4: Blocks
- Chapter 5: Tweaking
- Chapter 6: Patterns
- Chapter 7: Effects
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.
The following tasks can be executed with Midica:
- Produce MIDI files using a programming language (MidicaPL, ALDA, ABC)
- Import MIDI sequences from different file types
- Export MIDI files from a sequence to different file types
- Play MIDI sequences using a feature-rich player
- Use it as a Karaoke player
- Load soundbanks and use it for MIDI playback
- Test soundbanks using a soundcheck module.
- Analyze soundbank contents
- Analyze MIDI sequences
- Decompile MIDI to MidicaPL or ALDA