A Java-based interpreter for music programming languages (MidicaPL, ALDA, ABC) that converts source code to MIDI and includes a player, analyzer, and karaoke mode.
Midica is an interpreter for music programming languages that converts source code written in MidicaPL, ALDA, or ABC into MIDI sequences. It solves the problem of programmatically generating and manipulating music by providing a structured language with programming constructs, alongside tools for playback, analysis, and format conversion.
Musicians, composers, and developers interested in algorithmic music generation, music education, or needing a versatile MIDI Swiss Army knife for playback, conversion, and karaoke.
Developers choose Midica because it combines a full-featured music programming language with a comprehensive GUI and CLI toolkit for MIDI processing, eliminating the need for multiple disparate tools.
A Music programming language. Translates source code into MIDI. Includes a player. Supports MIDI-Karaoke. Includes a MIDI analyzer.
Midica supports loading and playing a wide array of formats including MIDI, MidicaPL, ALDA, ABC, LilyPond, and MusicXML, as detailed in the 'Features' section, making it a versatile toolkit.
The built-in MidicaPL language includes variables, functions, loops, and conditions, enabling algorithmic composition, as shown in examples like the guitar picking pattern with chords and patterns.
Features a karaoke mode with timed, colored lyric display and a configurable MIDI player with channel controls, demonstrated in screenshots and the player overview.
Allows loading and testing Soundfonts (SF2) or DLS files from local files or URLs, with options for playback and audio export, as described in the Soundbanks section.
For formats like ALDA, ABC, and LilyPond, Midica requires separate installations (e.g., ALDA, abcMIDI), complicating setup, as noted in the 'Get started' guide.
Some export options, such as to ALDA or MidicaPL files, are labeled 'experimental' in the CLI help, indicating potential instability or incomplete functionality.
As a Java application, it necessitates JRE 1.7 or higher, which may add installation steps and performance overhead compared to native tools.
Collaborative Programmable Music
A music programming language for musicians. :notes:
Esoteric Programming Language
ChucK Music Programming Language
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.