Welcome to the World of Takt!

Takt is a text-based music programming language designed by Satoshi Nishimura. It has the following features:

  • It allows a concise description of note and chord sequences like `c d [e g]’.
  • Expressive information such as dynamics or tempo rubato can be added to such note/chord sequences.
  • It provides rich programming features including object-oriented support with C-like syntax. Such features enable seamless fusion of note-by-note description and algorithmic composition.
  • Music transformation (such as transposition) can be applied to musical phrases described with the above means. Many predefined transformation modules are available; in addition; users can develop their own transformation modules with the language. Transformations can also be applied to standard MIDI files or events from a MIDI input device in a reactive way.

The distributed package contains an interpreter for Takt, a MIDI-file-to-Takt translator, and Emacs interfacing programs. The Takt interpreter (aka Takt REPL interpreter), the main part of this package, reads Takt program code from a console or a source file. Based on the code, the interpreter generates MIDI events, which are transmitted to MIDI output devices in real time or stored to a MIDI file. The MIDI-file-to-Takt translator enables users to view a MIDI file in the form of the language, which can be edited and converted to another MIDI file. The language-specific mode for Emacs enables note entry from a MIDI keyboard as well as playing a described score with a score-following cursor.

Supposed users of this software include but not limited to:

  • Music composers, students and educators who are interested in generated music
  • Researchers on music information science
  • Developers of MIDI-related software
  • Computer music hobbyists

Code Example


The Takt interpreter, the MIDI-file-to-Takt translator, and the Emacs interfacing programs are free software distributed under the GNU General Public License.  Library files written in Takt are released under the GNU Lesser General Public License.  See the copyright notice in each source file for more details.


For Windows (XP or later), Mac OS X, and Linux (w/ALSA) platforms, this software should work with full features.

For other platforms, direct MIDI input/output by the interpreter is not available at this point; however, the interpreter should still be usable as a file conversion tool by specifying a MIDI file for its output.


Satoshi Nishimura
University of Aizu, Japan