midi2abc takes a MIDI format file and converts it to
something as close as possible to abc text format. The user then has to add
text fields not present in the MIDI header and possibly tidy up the abc note
output.
The output of midi2abc is printed to the screen. To save it to a
file, use the redirection operator, (e.g. midi2abc -f file.mid >
file.abc) or specify the output file using the -o option.
Use only one or none of the options -u -gu, -b and -Q. Midi2abc
normally converts the MIDI time units into quantum units normally
corresponding to the abc 1/16th note or 1/32nd note. If none of these is
present, the program will use the PPQN information in the MIDI header to
compute the suitable conversion factor. For most MIDI files on the web, it
is recommended to rely on the MIDI header information and not use any of the
options other than the formatting options.
The program will extract the time signature information from the
MIDI file if it is present. Otherwise it will assume 4/4 or you could
specify it with -m. option.
If the tune has an anacrusis, you can use either the -ga or -xa
option to estimate the its length. Alternatively, you can specify its value
using the -a option. The anacrusis is specified in half unit lengths, where
the unit length is defined by the L: field. For example if L: 1/8, then a
quarter note would be indicated by the value 4, (4 1/16 units).
- -a acbeats
- where acbeats specifies the anacrusis in half unit lengths.
- -xa
- extract the anacrusis from file by finding the first strong note
- -ga
- guess the anacrusis by minimizing the number of ties across bars
- -m time
signature
- time signature
- -b bars
- number of bars wanted in output
- -Q tempo
- tempo in quarter-notes per minute
- -u pulses
- Allows you to specify directly the number of midi pulses per abc time
unit.
- -ppu parts per abc unit
length
- Normally, the smallest note unit that midi2abc can extract is half the L:
unit length.This is called the quantum unit. Thus for L: 1/8, midi2abc can
extract 1/16 notes but not 1/32 notes. You can change this by specifying
-ppu 4 for example. The number of parts should be a power of 2.
- -aul denominator of abc unit
length
- Normally midi2abc chooses a unit length of 1/8 or 1/16 depending upon the
time signature. For time signatures smaller than 3/4 the L: 1/16 is used
and for larger time signatures L: 1/8 is used. You can specify the unit
length to be used using this parameter. Thus -aul 32 will cause midi2abc
to use a unit length of 1/32 nd note.
- -gu
- Tells midi2abc to estimate the number of midi pulses per abc time unit
from the note duration or spacing in the MIDI file.
- -gk
- Tells midi2abc to guess the key signature by minimizing the number of
accidentals even if the key signature is already specified in the MIDI
file. By default the key signature is the one specified in the MIDI file.
If it is not specified, then the program guesses the key signature by
minimizing accidentals.
- -k key
- key signature: -6 to 6 sharps.
- -c channel
- select only this midi channel.
- -f infile
- input file in midi format
- -o output
file
- specifies the output abc file name.
- -s
- do not discard very short notes.
- -sr quantum
units
- do not notate a short rest smaller than the specified size after a note.
If the size (in quantum units) is zero, nothing is done. For larger
values, the rest is absorbed into the preceding note. In other words, the
preceding note is lengthened to include that rest.
- -sum
- print a short summary of the input midi file.
- -nb
- do not look for broken rhythms
- -nt
- do not look for triplets
- -obpl
- Print only one bar per line instead of 4. For complex music this improves
the readability and avoids some problems with some abc to postscript
converters. This option is deprecated.
- -nogr
- (No note grouping.) Inserts a space between all notes. It makes a less
pretty postscript file but it is easier to edit.
- -bpl
nbars
- Print nbars of music on every line followed by a backslash.
- -bps
nbars
- When nbars have been printed (including those lines joined by a backslash
continuation) go to a new line (with no backslash).
- -splitbars
- This parameter changes the way midi2abc prints chords composed of notes of
unequal length (polyphonic chords). Normally, midi2abc joins the longer
notes to the notes in the following chord using ties. A more readable
output, can be obtained if the measure is split into separate parts using
the '&' feature in abc notation. The algorithm for dividing the notes
in a polyphonic chord to separate voices (label_splits in midi2abc.c)
needs some improvement. I welcome any assistance.
- -splitvoices
- This parameter like above handles polyphonic chords by splitting an entire
voice into multi voices.
- -midigram
- When this option appears, all other options are ignored and no abc file is
produced. Instead a list of all notes in the MIDI file are printed in a
fixed format. Each line represents a pair of MIDI note on/off event. The
line contains the on/off time of the note, its track number, channel
number, midi pitch and midi velocity. The last record indicates the
duration of the MIDI file in MIDI pulse units. The output is designed to
go into a graphical user interface which will produce a graphical
representation (piano roll).
- -mftext
- When this option appears, all other options are ignored and no abc file is
produced. Instead a list of all the MIDI commands are printed. The output
is designed to go into a graphical user interface provided by
runabc.tcl.
- -mftextpulses
- Same as -mftext except the time units is in midi pulses.
- -title
string
- Replaces the default title field following T: with the given string.
- -origin
string
- Adds an O: field with the given string.
- -stats
- Extracts the characteristics of the given midi file. They include ntrks -
the number of tracks, ppqn - pulses per quarter note, timesig - time
signature, keysig - key signature, program - mapping between channel
number and midi program, npulses - length of the midi file in pulses,
tempocmd - number of times the tempo has been specified, pitchbends -
number of pitchbends, pitchbendin - number of pitchbends in each of the
channels, programcmd - number of times the midi program has been revised,
progs and progsact - the programs used and the number of pulses these
programs used, drums - the drum numbers that were used, drumhits - the
number of times each of those drums were hit, pitches - the number of
times the 11 pitch classes (C C# etc...) were activated and a few other
complex variables. These characteristics are used in other applications
such as midiexplorer. More details are available in the file
midi2abc-stats.txt included in the doc/ folder of the abcmidi distribution
package.
* The key is chosen so as to minimize the number of accidentals.
Alternatively, the user can specify the key numerically (a positive number
is the number of sharps, a negative number is minus the number of
flats).
* Note length can be set by specifying the total number of bars or
the tempo of the piece. Alternatively the note length can be read from the
file. However, by default it is deduced in a heuristic manner from the
inter-note distances. This means that you do not have to use the MIDI clock
as a metronome when playing in a tune from a keyboard.
* Barlines are automatically inserted. The user specifies the
number of measures in the anacrusis before the first barline and the time
signature.
* The program can guess how the length of the anacrusis, either by
looking for the first strong note or minimizing the number of notes split by
a tie across a barline.
* Where a note extends beyond a bar break, it is split into two
tied notes.
* The output has 4 bars per line.
* Enough accidental signs are put in the music to ensure that no
pitch errors occur if a barline is added or deleted.
* The program attempts to group notes sensibly in each bar.
* Triplets and broken rhythm (a>b) are supported.
* Chords are identified.
* Text information from the original MIDI file is included as
comments.
* The -c option can be used to select only 1 MIDI channel. Events
on other channels are ignored.
midi2abc does not ...
* Supply tune title, composer or any other field apart from X: ,
K:, Q:, M: and L: - these must be added by hand afterwards, though they may
have been included in the text of the MIDI file.
* Support duplets, quadruplets, other esoteric features.
* Support mid-tune key or time signature changes.
* Deduce repeats. The output is just the notes in the input
file.
* Recover an abc tune as supplied to abc2midi. However, if you
want to do this, "midi2abc -xa -f file.mid" comes close.
Copyright 1999 James Allwright
midi2abc does not work correctly if lyrics are embedded in the
same track as the notes. If you are producing the MIDI file using abc2midi,
use the -STFW option to ensure that the lyrics are put in a separate
track.
midi2abc is supplied "as is" without any warranty. It is
free software and can be used, copied, modified and distributed without fee
under the terms of the GNU General Public License.