https://github.com/tomejanzen/textmiditools
Interconvert MIDI, SMUS and text files; generate random non-AI music automatically
https://github.com/tomejanzen/textmiditools
midi midi-files midi-parser music music-composition portable random smus
Last synced: 6 days ago
JSON representation
Interconvert MIDI, SMUS and text files; generate random non-AI music automatically
- Host: GitHub
- URL: https://github.com/tomejanzen/textmiditools
- Owner: tomejanzen
- License: gpl-3.0
- Created: 2021-08-12T17:59:40.000Z (almost 5 years ago)
- Default Branch: main
- Last Pushed: 2026-07-02T03:04:47.000Z (20 days ago)
- Last Synced: 2026-07-02T05:04:23.764Z (19 days ago)
- Topics: midi, midi-files, midi-parser, music, music-composition, portable, random, smus
- Language: C++
- Homepage:
- Size: 19.8 MB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README
- Changelog: ChangeLog
- License: COPYING
- Code of conduct: CODE_OF_CONDUCT.md
- Authors: AUTHORS
Awesome Lists containing this project
README
======================================================================
TextMIDITools -- MIDI file converters and computer-generated music.
Thomas E. Janzen
======================================================================
What is this?
======================================================================
General Information
TextMIDITools is a collection of four programs for converting MIDI and SMUS
files in and out of text format, and for automatic generation of music.
The converters are:
textmidi - convert a text representation of a MIDI file into a binary
standard MIDI file.
miditext - convert a binary standard MIDI file into a text representation.
smustextmidi - convert a Simple Musical Score file into a text
representation in textmidi language.
textmidicgm - Generate music in textmidi text file format, using a
model of musical form based on slowly-changing sinusoids
that control the means and ranges of pitch, dynamics,
duration, and the complement (number of instruments
playing).
textmidicgm is a rewrite of AlgoRhythms, an open-source computer-music
generator by Thomas E. Janzen for the Commodore Amiga first
seen publically in 1990.
smustextmidi is a rewrite of smusmidi, an open-source convertor
from Simple Musical Scores, first seen in 1992 from Thomas E. Janzen.
textmidi and miditext are rewrites in C++20 of programs developed for
private use from 1999 to 2003 and enhanced later by Thomas E. Janzen.
======================================================================
Features
======================================================================
* textmidi
+ Defines a text language that represents standard MIDI files for
musical use. It permits the specification of anything a musical
MIDI file (from the MIDI Specification 1.1) can include.
+ Defines a "LAZY" or "BRIEF" mode that makes it quicker to type in
long conventional instrumental scores, such as those from
Johann Sebastian Bach.
+ Use with text tools and a macro processor such as m4 can enrich
the language.
* miditext
+ Converts a standard MIDI file for musical purposes into a text
representation in textmidi language. The text can be hand-edited,
or automatically processed.
* smustextmidi
+ Converts an SMUS (Simple Musical Score) file, defined by Electronic
Arts in the mid-1980's, into a text representation of a MIDI file
in textmidi language, using LAZY mode for the note events.
* textmidicgm
+ Generates random musical pieces in terms of MIDI key numbers, velocities,
and durations, using a model of musical form the describes slow
sinusoids that modulate the mean and range for pitch, dynamics, and
durations, as well as the complement (number of voices).
+ The XML form input file is hand-editable.
+ textmidicgm can generate a random XML form file, making it altogether
unnecessary to think about what music you are writing.
======================================================================
Where to get a copy
======================================================================
The latest release of TextMIDITools are available at:
github.
======================================================================
How to install
======================================================================
Refer INSTALL file in the distribution, but try this:
aclocal
autoconf
automake --add-missing
./configure
make
sudo make install