Provided by: abcmidi_20180222-1_amd64 bug

NAME

       abc2midi - converts abc file to MIDI file(s)

SYNOPSIS

       abc2midi  infile  [refnum]  [-c]  [-v] [-ver] [-t] [-n limit] [-CS] [-quiet] [-silent] [-Q
       tempo] [-NFNP] [-NFER] [-NGRA] [-STFW] [-OCC] [-NCOM] [-HARP]  [-BF]  [-TT]  [-o  outfile]
       -CSM [filename]

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 n   selects verbose option where n is the level (optional)

       -ver   prints version number and exits

       -t     selects filenames derived from tune titles

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

       -quiet Suppresses some common warnings.

       -silent
              Suppresses other messages.

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

       -NFER  Ignore any fermata indications (eg H or !fermata!).

       -NGRA  Ignore any grace notes.

       -STFW  Place lyric text in separate MIDI tracks.

       -NCOM  Suppress some comments in the output MIDI file.

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

       -BF    BarFly mode: invokes a stress model if possible.

       -HARP  Roll ornaments=roll are generated for the harpist (same pitch)

       -TT    Changes the tuning from A = 440 Hz.

       -o outfile
              write output to outfile

       -CSM infile
              load a set of custom stress modes from a file

FEATURES

       * Broken rhythms (>, <), 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 0-127) 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-127. 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 wherever  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. If the command includes the string
       octave=n where n is a number between -2 and 2 inclusive, then this will shift the pitch of
       the instrument by n octaves. For example %%MIDI chordprog 10 octave=1.)

       %%MIDI bassprog n

       Sets  the  MIDI  instrument for the bass notes to be n. If the command includes the string
       octave=n where n is a number between -2 and 2 inclusive, then this will shift the pitch of
       the instrument by n octaves. For example %%MIDI bassprog 10 octave=-1.)

       %%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 continuous 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".

       %%MIDI drumbars n

       The %%MIDI drum line can sound quite monotonous if it is repeated each bar. To  circumvent
       this  problem  a  new MIDI command %%MIDI drumbars n where n is a small number will spread
       out the drum string over n consecutive bars. By default drumbars is set to  1  maintaining
       compatibility  with existing abc files. You should take care that the drumstring is evenly
       divisible between the drumbar bars. Also the time signature should not change between bars
       in a drumbar unit. (Sample abc file in doc/CHANGES June 24 2008.)

       %%MIDI gchordbars n

       This command spreads the gchord string over n consecutive bars just like drumbars (above).
       (A sample is found in doc/CHANGES March 17 2009.)

       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 expand x/y

       where x and y are two numbers defining a fraction less than 1.  This command controls  the
       articulation  of  notes and chords in the reverse manner. The notes are lengthened by this
       fraction so they overlap the start of the next note.

       %%MIDI drummap note midipitch

       Please see abcguide.txt.

       %%MIDI ptstress filename

       This command loads file filename into abc2midi  which  contains  the  Phil  Taylor  stress
       parameters and puts abc2midi in the mode where it applies these stress parameters on every
       note. This model runs in opposition  to  the  standard  beat  model,  so  the  MIDI  beat,
       beatstring,  beatmod  commands  become  ineffectual.   This  also  means  that the dynamic
       indications !f! !pp! etc.  do not work any more.

       There are two different implementations of the stress model.  Model 1  modifies  the  note
       articulation  and  takes  control  of  the MIDI trim parameters too. To revert back to the
       standard model, put the command %%MIDI beataccents.  Model 2 modifies both the  onset  and
       ending  of  each  note allowing a musical beat to expand or contract in time. However, the
       length of a musical measure should be preserved. Note if you  using  model  2,  which  the
       current default, you must include -BF as one of the runtime parameters of abc2midi.

       The model divides a bar into equal segments. For each segment, a loudness or MIDI velocity
       is specified and a duration multiplier is specified. If  a  note  falls  into  a  specific
       segment, it assumes the velocity of that segment and its duration is modified accordingly.
       If the note overlaps more than one segment, then the note assumes  the  average  of  those
       segment values.

       The  input file specifies the number of segments and the loudness and duration multipliers
       for each segment. The file has the following format. The first  value  is  the  number  of
       segments  and  each  line  specifies  the velocity and duration multiplier of the specific
       segment. The velocity is limited to 127 and the duration is a  decimal  number.  The  note
       durations  is modified by varying the gap between notes, so it is not possible to extend a
       note. This preserves the regular tempo of the music. The program scales, the note duration
       indications by dividing it by the maximum value which here is 1.4.

       %%MIDI stressmodel n

       where n is either 1 or 2, selects the stress model implementation.

        other   %%MIDI  commands  such  as  bendvelocity,  bendstring,  controlstring  have  been
       introduced recently and are described in the file 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 <fy733@ncf.ca>

VERSION

       This man page describes abc2midi version 2.27  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.

                                            June 2017                                 ABC2MIDI(1)