Provided by: abcmidi_20070318-3_amd64 bug

NAME

       abc2midi - converts abc file to MIDI file(s)

SYNOPSIS

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

DESCRIPTION

        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.

OPTIONS

       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

FEATURES

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

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

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

LIMITATIONS

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

ABC SYNTAX EXTENSIONS

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

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

       %%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 like.

       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.

COMPATIBILITY WITH DRAFT STANDARD 2.0

       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.

SEE ALSO

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

AUTHOR

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

SUPPORTED

        by Seymour Shlien <seymour.shlien@crc.ca>

VERSION

       This man page describes abc2midi version 1.85  June 25 2006.

COPYRIGHT

       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                                       ABC2MIDI(1)