Man Linux: Main Page and Category List


       abc2midi - converts abc file to MIDI file(s)


       abc2midi  infile  [refnum]  [-c]  [-v]  [-ver]  [-t]  [-n  limit] [-RS]
       [-quiet] [-Q tempo] [-NFNP] [-OCC] [-o outfile]


        The default action is to write a MIDI file for each abc tune
        with the filename <stem>N.mid, where <stem> is the filestem
        of the abc file and N is the tune reference number. If the -o
        option is used, only one file is written. This is the tune
        specified by the reference number or, if no reference number
        is given, the first tune in the file.


       refnum process the tune with reference number refnum

       -c     selects checking only

       -v     selects verbose option

       -ver   prints version number and exits

       -t     selects filenames derived from tune titles

       -RS    use 3:1 instead of 2:1 for broken rhythms

       -quiet Suppresses some commong warnings.

       -n  X  limits the length of the file name stem to X characters

       -Q  tempo
              sets the default tempo in quarter notes per minute if it was not
              specified in the abc header.

       -NFNP  Ignore any dynamic indications !f! !ff! etc.

       -OCC   Accept old chord convention (eg +D2G2+ instead of [DG]2).

       -o outfile
              write output to outfile


       *  Broken  rythms  (>,  <), chords, n-tuples, slurring, ties, staccatto
       notes, repeats, in-tune tempo/length/time  signature  changes  are  all

       *  R:hornpipe or r:hornpipe is recognized and note timings are adjusted
       to give a broken rhythm (ab is converted to a>b).

       * Most errors in the abc input will generate a suitable  error  message
       in the output and the converter keeps going.

       *  Comments  and  text  fields  in the abc source are converted to text
       events in the MIDI output

       *  If  guitar  chords  are  present,  they  are  used  to  generate  an
       accompaniment in the MIDI output.

       *  If  there  are  mis-matched  repeat  signs  in  the abc, the program
       attempts to fix them. However, it will not attempt this if a multi-part
       tune description has been used or if multiple voices are in use.

       *  Karaoke MIDI files can be generated by using the w: field to include

       * Nonnumeric voice id’s, eg. V: soprano, as proposed for  the  new  abc
       standard is accepted.

       *  Invisible  rests  specified  by x are treated the same way as normal
       rests (z).

       * Decorations may be indicated using  either  the  deprecated  notation
       (eg. !fermata!) or the standard version 2.0 notation (eg. +fermata+).


       * No field is inherited from above the X: field of the tune.


       * There are some extensions to the abc syntax of the form

       %%MIDI channel n

       These  control  channel  and program selection, transposing and various
       other features of abc2midi.

       Each of these should appear on a  line  by  itself.  All  of  them  are
       allowed  within  the  abc tune body. By using these in combination with
       the part notation, one can, for example, play a part transposed or in a
       different key.

       The  idea  behind this syntax is that other programs will treat it as a
       comment and ignore it.

       %%MIDI channel n

       selects melody channel n (in the range 1-16).

       %%MIDI program [c] n

       selects program n (in the range 1-128) on channel c. If c is not given,
       the program is selected on the current melody channel. Most modern tone
       generators  follow  the  General  MIDI  standard  which   defines   the
       instrument type for each program number.

       %%MIDI beat a b c n

       controls  the way note velocities are selected. The first note in a bar
       has velocity a. Other "strong" notes have velocity b and all  the  rest
       have velocity c. a, b and c must be in the range 0-128. The parameter n
       determines which notes are "strong". If the time signature is x/y, then
       each  note  is  given  a position number k = 0, 1, 2 .. x-1 within each
       bar. Note that the units for n are not the unit note length. If k is  a
       multiple  of  n, then the note is "strong". The volume specifiers !ppp!
       to !fff! are equivalent to the following :

       !ppp! = %%MIDI beat 30 20 10 1
       !pp!  = %%MIDI beat 45 35 20 1
       !p!   = %%MIDI beat 60 50 35 1
       !mp!  = %%MIDI beat 75 65 50 1
       !mf!  = %%MIDI beat 90 80 65 1
       !f!   = %%MIDI beat 105 95 80 1
       !ff!  = %%MIDI beat 120 110 95 1
       !fff! = %%MIDI beat 127 125 110 1

       %%MIDI beatmod n

       Increments by n (or decrements if n is negative) the  velocities  a,  b
       and  c  described above. The instructions !crescendo(! and !crescendo)!
       are equivalent to inserting a %%MIDI beatmod 15 whereever  they  occur.
       (Alternatively  you  can use !<(! and !<)!.) Similarly the instructions
       !diminuendo(! and !diminuendo)! are equivalent to %%MIDI beatmod -15.

       %%MIDI deltaloudness n

       where n is a small positive  number.   By  default  the  crescendo  and
       diminuendo  instructions  modify  the  beat variables a, b, and c by 15
       velocity units. This instruction allows you  to  set  this  default  to
       value n.

       %%MIDI nobeataccents

       For  instruments  such  as church organ that have no greatly emphasized
       beat notes, using this will force use of the ’b’ velocity  (see  %%MIDI
       beat)  for every note irrespective of position in the bar.  This allows
       dynamics (ff, f, etc) to be used in the normal way.

       %%MIDI beataccents

       Revert to emphasizing notes the the usual way. (default)

       %%MIDI beatstring <string of f, m and p>

       This provides an alternative way of specifying  where  the  strong  and
       weak  stresses  fall  within  a  bar.  ’f’  means  velocity a (normally
       strong), ’m’ means velocity b (medium velocity) and ’p’ means  velocity
       c  (soft  velocity).   For  example,  if the time signature is 7/8 with
       stresses on the first, fourth and sixth notes in the bar, we could  use
       the following

       %%MIDI beatstring fppmpmp

       %%MIDI transpose n

       transposes  the  output  by the specified number of semitones. n may be
       positive or negative.

       %%MIDI rtranspose n

       Relative transpose by the specified number of semitones.  i.e.   %%MIDI
       transpose  a followed by %%MIDI rtranspose b results in a transposition
       of a+b. %%MIDI  transpose  b  will  result  in  a  transposition  of  b
       semitones, regardless of any previous transposition.

       %%MIDI c n

       specifies  the  MIDI  pitch  which corresponds to c. The default is 60.
       This number should normally be a multiple of 12.

       %%MIDI grace a/b

       sets the fraction of the next note that grace notes  will  take  up.  a
       must  be  between  1  and b-1. The grace notes may not sound natural in
       this approach, since the length of the individual grace notes vary with
       the  complexity  of  the  grace and the length of the following note. A
       different approach (which is now the default) assumes  that  the  grace
       notes  always  have  a  fixed  duration.  To use the other approach you
       would specify,

       %%MIDI gracedivider b

       where b specifies how many parts to divide the unit length specified by
       the  L:  field  command.  For example if b = 4 and L: = 1/8, then every
       grace note would be 1/(8*4) or a 32nd note. Time would be  stolen  from
       the note to which the grace notes are applied. If that note is not long
       enough to handle the grace then the grace notes  would  be  assigned  0

       %%MIDI chordname name n1 n2 n3 n4 n5 n6

       Defines  how  to play a guitar chord called "name". n1 is usually 0 and
       n2, n3 to n6 give the pitches of the other notes in semitones  relative
       to the root note. There may be fewer than 6 notes in the chord, but not
       more.If "name" is already defined, this command re-defines  it.  Unlike
       most  other  commands,  chordname definitions stay in effect from where
       they are defined to the end of the abc file. The following  illustrates
       how m, 7, m7 and maj7 could be set up if they were not already defined.

       %%MIDI chordname m 0 3 7
       %%MIDI chordname 7 0 4 7 10
       %%MIDI chordname m7 0 3 7 10
       %%MIDI chordname maj7 0 4 7 11

       %%MIDI gchord string

       sets up how guitar chords are generated. The string is a sequence  made
       of  of  z’s,  c’s   f’s  and  b’s  for  rests,  chords, fundamental and
       fundamental plus chord notes respectively.  This specifies how each bar
       is  to be played.  An optional length is allowed to follow the z’s, c’s
       f’s and b’s  e.g. czf2zf3.  If the abc  contains  guitar  chords,  then
       abc2midi  automatically adds chords and fundamentals after encountering
       the first guitar chord. It keeps using that chord until a new chord  is
       specified  in the abc. Whenever the M: field is encountered in the abc,
       an appropriate default string is set :

       For 2/4 or 4/4 time default is equivalent to : %%MIDI gchord fzczfzcz

       For 3/4 time default is equivalent to : %%MIDI gchord fzczcz

       For 6/8 time default is equivalent to : %%MIDI gchord fzcfzc

       For 9/8 time default is equivalent to : %%MIDI gchord fzcfzcfzc

       The gchord  command  has  been  extended  to  allow  you  to  play  the
       individual  notes  comprising the guitar chord. This allows you to play
       broken chords or arpeggios. The new codes  g,h,i,j,  G,H,I,J  reference
       the  individual  notes  starting from the lowest note of the chord (not
       necessarily the root in the case of inversions). For example for the  C
       major  chord,  g  refers  to  C, h refers to E and i refers to G. For a
       gchord command such as,

       %%MIDI gchord ghih

       Abc2midi will arpeggiate the C major guitar chord to  CEGE.  The  upper
       case  letters  G,H,I,  and  J  refer  to the same notes except they are
       transposed down one octave. Note for the first inversion of the C major
       chord  (indicated  by  "C/E"),  E  would  be the lowest note so g would
       reference the note E.

       Like other gchord codes,  you  may  append  a  numeral  indicating  the
       duration  of the note. The same rules apply as before.  You can use any
       combination of the gchord codes, (fcbghijGHIJz).

       %%MIDI chordprog n

       Sets the MIDI instrument for the chords to be n.

       %%MIDI bassprog n

       Sets the MIDI instrument for the bass notes to be n.

       %%MIDI chordvol n

       Sets the volume (velocity) of the chord notes at n.

       %%MIDI bassvol n

       Sets the volume (velocity)  of  the  bass  notes  at  n.  There  is  no
       corresponding  melodyvol  command since there are 3 velocity values for
       melody, set using the beat command.

       %%MIDI gchordon

       Turns on guitar chords (they are turned on by default at the start of a

       %%MIDI gchordoff

       Turns off guitar chords.

       %%MIDI droneon

       Turns  on  a continuous drone (used in bagpipe music) consisting of two
       notes. By default the notes are A, and A,, played on  a  bassoon  at  a
       velocity  of  80.  This  can  be configured by the %%MIDI drone command
       described below.

       %%MIDI droneoff

       Turns off the continous drone.

       %%MIDI drone n1 n2 n3 n4 n5

       Sets the drone parameters where n1 is  the  MIDI  program,  n2  and  n3
       specify  the  MIDI pitches of the two notes in the chord, and n4 and n5
       specify the MIDI velocities of the two notes.  If you do not set  these
       parameters  they are by default 70 45 33 80 80. A value of zero or less
       indicates that the setting of this parameter should be left as it is.

       %%MIDI drum string [drum programs] [drum velocities]

       This sets up a drum pattern. The string determines when there is a drum
       beat and the drum program values determine what each drum strike sounds

       e.g. %%MIDI drum d2zdd 35 38 38  100 50 50

       The string may contain ’d’ for a drum strike or  ’z’  for  a  rest.  By
       default  a  voice  starts  with  no drum pattern and ’%%MIDI drumon’ is
       needed to enable the drumming. The drum pattern is repeated during each
       bar  until ’%%MIDI drumoff’ is encountered. The %%MIDI drum command may
       be used within a tune to change the drum pattern.  This command  places
       the  drum sounds on channel 10 and assumes your tone generator complies
       with the General Midi standard - if it does  not,  then  you  may  hear
       tones instead of drum sounds.

       In  both  the  gchord  and drum commands, the standard note length of a
       single note f,c,z or d is not set by the  L:  command.  Instead  it  is
       adjusted  so  that the entire gchord string or drum string fits exactly
       into one bar. In other words the duration of each note  is  divided  by
       the  total  duration  of  the string. This means that, for example, the
       drum string "dd" is equivalent  to  drum  string  "d4d4".   You  cannot
       currently  specify fractions directly (eg. C3/2) as done in the body of
       the music, but it is still possible to  express  complex  rhythms.  For
       example,  to  indicate  a rhythm such as (3ddd d/d/d/d, you would write
       the string "d4d4d4d3d3d3d3".

       With version 1.54 Dec 4 2004 of abc2midi, notes in chords  (eg.  [FAc])
       are  not  played  in the same instant but offsetted and shortened by 10
       MIDI time units. Thus the first note in the chord (eg. F) is played for
       the  full  indicated time, the second note (eg. A) starts 10 MIDI units
       later and is shortened by the same amount and  the  third  note  starts
       another  10 MIDI units later and is shortened by another 10 units. This
       introduces an "expressivo" option and avoids the  heavy  attack.  (This
       does  not  apply  to  gchords or multivoiced chords.) The amount of the
       delay and shortening may be configured by the MIDI command

       %%MIDI chordattack n

       where n is a small number. If n is zero, then abc2midi should behave as
       in  earlier versions. The delay n is in MIDI time units where there are
       480 units in a quarter note beat. The program may not run correctly  if
       n is too large and there are short chords.

       %%MIDI randomchordattack n

       Like  above  except  that  the  delay  is  a  random variable uniformly
       distributed between 0 and n-1.

       %%MIDI trim x/y

       where x and y are two numbers. This command controls  the  articulation
       of  notes  and  chords  by  placing silent gaps between the notes.  The
       length of these gaps is determined by x/y and the unit length specified
       by  the  L: command. These gaps are produced by shortening the notes by
       the same amount.  If the note is already  shorter  than  the  specified
       gap,  then the gap is set to half the length of the note.  The fraction
       x/y indicates a note duration in the same manner as  specified  in  the
       abc file.  The actual duration is based on the unit length specified by
       the L: field command. It is recommended that x/y be a fraction close to
       zero.   Note   trimming  is  disabled  inside  slurs  as  specified  by
       parentheses. You can turn off all note trimming by setting x to  0,  eg
       0/1. By default, note trimming is turned off at the beginning of a tune
       or voice command.

       %%MIDI drummap note midipitch

       Please see abcguide.txt.


       The proposed standard introduces a new copyright field using the syntax

       %%abc-copyright (c) Copyright John Smith 2003

       Abc2midi  now  inserts  this in the MIDI file in the form of a metatext
       copyright tag. Changes were made  to  the  event_specific  function  in
       store.c  to  process  the copyright information. It is also copied into
       the Karaoke track (if it is created) as as @T field.


       abc2ps(1), midi2abc(1), yaps(1).


       James Allwright <>


        by Seymour Shlien <>


       This man page describes abc2midi version 1.85  June 25 2006.


       Copyright 1999 James Allwright

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

       More complete documentation may be found in  abcguide.txt  which  comes
       with the abcMIDI distribution.

                                 25 June 2006