MIDI2ABC(1)                  General Commands Manual                 MIDI2ABC(1)

       midi2abc - program to convert MIDI format files to abc notation

       midi2abc -f infile [-xa] [-ga] [-a acbeats] [-m time signature] [-ppu
       parts per unit] [-aul denominator of unit length] [-gu] [-b bars] [-Q
       tempo] [-u pulses] [-k key] [-c channel] [-obpl] [-bpl bars] [-bps bars]
       [-o filename] [-s] [-sr units] [-sum] [-nb] [-nt] [-splitbars]
       [-splitvoices] [-midigram] [-mftext] [-mftextpulses] [-nogr] [-title
       string] [-origin string]

       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

       -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).

              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.

              This parameter like above handles polyphonic chords by splitting
              an entire voice into multi voices.

              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

              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.

              Same as -mftext except the time units is in midi pulses.

       -title string
              Replaces the default title field following T: with the given

       -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

       * 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

       * 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

       * 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.

       abc2ps(1), abc2midi(1), abc2abc(1)

       James Allwright <J.R.Allwright@westminster.ac.uk>

       Seymour Shlien <fy733@ncf.ca>

       This man page describes midi2abc version 2.91 from March 09 2008.

       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.

                                 1 January 2017                      MIDI2ABC(1)