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.