neither abcm2ps nor abc2svg check if there is a BOM at start of file.
As a consequence, the characters between the BOM and the end of line are
ignored. This impacts rendering, especially when the line contains
a tune reference number (X:).
Inside the tune body, with abcm2ps, typeset text stops
the music generation so that
it is always printed at its exact position in the music.
With abc2svg, typeset text is memorized and it is printed
after the current music line.
abcm2ps handles ABC embedded in other document types
with the following constraints:
The ABC elements are recognized anywhere in any file type
as sequences which:
start on lines beginning with either
%abc or X:, and
stop on the first line beginning with a ML tag
The so defined ABC sequences may contain elements of
file header, tunes, or both. They cannot contain
only fragments of tunes (an empty line is added at the
end of the sequences).
abcm2ps must be run with the command line option
The abc2svg package does not contain batch/CLI scripts that
do replacement of ABC code by SVG images in any document
type. Such scripts have to be written by users.
On the other side, when run in a web browser, abc2svg
offers some scripts for rendering the music.
These scripts are described in the main page of abc2svg. They are:
abcweb-1.js that replaces the ABC sequences in
<script type="text/vnd.abc"> elements.
abcweb1-1.js that replaces all the (X)HTML content
by one or all the ABC tunes (a menu does the selection).
abcdoc-1.js that works like abcweb-1.js,
but keeps the ABC sequences.
It is used for documentation as in this file.
The field L: may contain auto in which case
the duration of each note is adjusted to fulfill the measures.
This value works when the measures are regular (fixed duration).
Changing the unit note length also changes the unit note length
of the lower overlayed voice(s).
With abc2svg, the unit note length may be followed by '='
and a note duration. This permits a same figure (note or rest)
to have different durations in different voices
(indeed, when absent, the note duration is the unit note length
as a fraction of a whole note).
The clefs baritone, tenor,
mezzosoprano and soprano are not implemented.
The clefs that transpose 2 octaves (+/-15 or
^/_15) are not implemented
When no clef is specified, the default is auto.
'clef=P' is the same as 'perc'.
The clef name may be enclosed by double quotes in which case
it is the name of the function which draws the clef
(PostScript for abcm2ps, SVG for abc2svg).
The arguments of this function are the x and y offsets.
When a double-quoted clef is used, the note to be put on
the 2nd staff line is 'G'.
It may be changed by the argument clefpitch=
followed by the name and octave indication of the note
With abc2svg, clef=none may be used at start of
new music line before a new clef to prevent a warning about
the clef change.
Multiple lines of chord symbol / annotation may also be
indicated by ;, in which case the lines are of
the same type (gchord or annotation).
A new annotation type may be indicated after a ';' as:
In chord symbols, the characters
#, b and =
are displayed as unicode accidental characters.
'@' in annotations must be followed by the
<x> and <y> offsets of the text
from the symbol position (in points).
The <x> and <y> values are separated by a comma,
and <y> may be followed by a space
(usefull if the text begins with a digit, a dot or the
letters 'E' or 'e').
The exact anchor point of the text is:
the middle position of the symbol
for a note, a chord or a rest
the position of a virtual note for a measure bar
the middle of the staff for a measure bar or a space
With abc2svg, a part P: may appear in any voice.
With abcm2ps, it may appear only in the first voice or
in any voice when all the voices are synchonized.
With abc2svg, when some commands as a subtitle T:
are found inside a music line, they are moved
to the start of the next music line.
With abcm2ps, such commands restart the generation, and, so,
a new music line is created and
all the voices are resynchronized.
With abc2svg, a V: line may contain
a comma separated list of voice IDs.
In this case, the following music is duplicated in each voice.
The sequence (& .. & .. &) permits
voice overlay on many measures.
Setting lyrics to overlaid voices in normal voices
does not work.
Overlayed voices are created when &'s
are found and they exist up to the end of the tune
as ordinary voices.
Their attributes are copied from the ones of the immediately
upper voice at creation time. They may be modified
using common commands and parameters (%%voicescale...).
The only exception is the unit note length L:
that is not handled the same way in abcm2ps and abc2svg.