ABC Standard v2.2
ABC Standard v2.2
2 [abc wiki]
abcnotation.com/wiki/abc:standard:v2.2
abc wiki
Changes implemented
A list of the main changes (excluding typos corrected and minor clarifications).
Dates are included so that people checking this list can see what has changed
since they last visited.
25th Feb 2013: Additional clef parameters have been added (e.g. clef=G2 and
clef=baritone).
1st Mar 2013: Clef settings bass3, alto2 and alto1, together with their
generalisation to any line number (e.g. bass1), have been deprecated.
1st-2nd Mar 2013: The octave clefs syntax has been updated.
16th Jul 2015: Decorations !editorial! and !courtesy! have been added -
see also accidentals
Additional decorations (I will need some help with definitions for some of
these)
Contents
1. Introduction
Abc is a text-based music notation system designed to be comprehensible by
both people and computers. Music notated in abc is written using characters -
letter, digits and punctuation marks - on paper or in computer files.
This description of abc has been created for those who wish to understand the
notation, and for implementers of abc software applications. Some example
tunes are included in sample abc tunes.
Note that the following terms have specific meanings in the context of the abc
standard. For convenience, each time one of these terms is used in the
standard it is linked to the section in which it is defined:
Finally, the word VOLATILE is used to indicate sections which are under active
discussion and/or likely to change in some future version of the standard.
1.2 How to avoid reading this document
The abc standard contains a lot of information, much of which will not be
immediately useful to the beginner. Apart from reading this section, 1.
Introduction, newcomers are recommended to familiarise themselves with all of
2.2 Abc file structure, 3.0 Information fields, a few subsections in 3.1
Description of information fields (in particular 3.1.1, 3.1.2, 3.1.6, 3.1.7 and
3.1.14), 3.2 Use of fields within the tune body, and as much of section 4. The
tune body as is desired (but in particular 4.1, 4.3, 4.7, 4.8).
Newcomers are also advised to take a look at section 13. Sample abc tunes
and one of the abc tutorials that is available.
After that, it may depend on what you want to use abc for, but further reading
suggestions would be:
http://groups.yahoo.com/group/abcusers/
abcnotation.com/wiki/abc:standard:v2.2
The latest version of the standard, plus links to older versions and other
developmental work, can always be found via:
abcnotation.com/wiki/abc:standard
Back to top
This section describes the basic structure of abc files and abc tunes, as well as
a definition for including fragments of abc tunes elsewhere (e.g. web-pages).
Comment: Some web-servers only allow a limited selection of file types; in this
case a ".txt" extension is the best alternative.
Every abc file should begin with the string %abc. An optional version number
may follow on the same line, e.g.
%abc-2.2
Version numbers of 2.1 or higher indicate that the abc file is to be interpreted
strictly according to the corresponding abc standard; if the version number is
missing, the file will be treated under loose interpretation. The version field may
also be used to indicate abc versions for individual tunes.
Note for developers: Software should ignore the byte order mark (BOM) if
encountered as the first character of the file.
When an abc file is included in a multi-part e-mail, its MIME type must be
"text/vnd.abc" (see IANA text/vnd.abc).
The file header, abc tunes and text annotations are separated from each other
by empty lines (also known as blank lines).
An abc file with more than one tune in it is called an abc tunebook.
An abc tune itself consists of a tune header and a tune body, terminated by an
empty line or the end of the file. It may also contain comment lines or
stylesheet directives.
The tune header is composed of several information field lines, which are
further discussed in information fields. The tune header should start with an X:
(reference number) field followed by a T:(title) field and finish with a K:(key)
field.
The tune body, which contains the music code, follows immediately after.
Certain fields may also be used inside the tune body - see use of fields within
the tune body.
It is legal to write an abc tune without a tune body. This feature can be used to
document tunes without transcribing them.
Abc music code lines are those lines in the tune body which give notes, bar
lines and other musical symbols - see the tune body for details. In effect, music
code is the contents of any line which is not an information field, stylesheet
directive or comment line.
The file may optionally start with a file header (immediately after the version
field), consisting of a block of consecutive information fields, stylesheet
directives, or both, terminated with an empty line. The file header is used to set
default values for the tunes in the file.
The file header may only appear at the beginning of a file, not between tunes.
Settings in a tune may override the file header settings, but when the end of a
tune is reached the defaults set by the file header are reinstated.
Applications which extract separate tunes from a file must insert the fields of
the original file header into the header of the extracted tune. However, since
users may manually extract tunes without regard to the file header, it is not
recommended to use a file header in an abc tunebook that is to be distributed.
Free text is just that. It can be included anywhere in an abc file, after the file
header, but must be separated from abc tunes, typeset text and the file header
by empty lines. Typically it is used for annotating the abc file but in principle can
be any text not containing information fields.
Comment: Since raw html markup and email headers are treated as free text
(provided they don't inadvertently contain information fields) this means that
abc software can process a wide variety of text-based input files just by
ignoring non-abc code.
By default free text is not included in the printed score, although typesetting
software may offer the option to print it out (e.g. via a command line switch or
GUI (Graphical User Interface) checkbox). In this case, the software should
treat the free text as a text string, but may format it in any way it chooses.
Typeset text is any text specified using text directives. It may be inserted
anywhere in an abc file after the file header, either separated from tunes by
empty lines, or included in the tune header or tune body.
Typeset text that is included in an abc tune (i.e. within the tune header or tune
body), must be retained by any programs, such as databasing software, that
splits an abc file into separate abc tunes.
Empty lines (also known as blank lines) are used to separate abc tunes, free
text and the file header. They also aid the readability of abc files.
Lines that consist entirely of white-space (space and tab characters) are also
regarded as empty lines.
Line-breaks (also known as new lines, line feeds, carriage returns, end-of-lines,
etc.) can be used within an abc file to aid readability and, if required, break up
long input lines - see continuation of input lines.
More specifically, line-breaks in the music code can be used to structure the
abc transcription and, by default, generate line-breaks in the printed music. For
more details see typesetting line-breaks.
Alternatively, you can use the syntax [r:remark] to write a remark in the
middle of a line of music.
Example:
In abc 2.1 and above, there are ways of continuing each of the 4 different input
line types: music code, information fields, comments and stylesheet directives.
Comment for developers: Unlike other languages, and because of the way in
which both information fields and music code can be continued through
comments, stylesheet directives and (in the case of music code) information
fields, it is generally not possible to parse abc files by pre-processing
continuations into single lines.
Note that, with the exception of abc music code, continuations are unlikely to
be needed often. Indeed in most cases it should be possible, although not
necessarily desirable, to write very long input lines, since most abc editing
software will display them as wrapped within the text editor window.
Often, although not always, some form of markup is used to indicate where the
embedded abc code starts and finishes.
<pre class="abc-tune">
X:1
T:Title
K:C
DEF FED:|
</pre>
Important note: The abc standard makes no stipulation about how the abc code
is included in the document. For example, in html it could be via a <pre>,
<div>, <object>, <script> or some other tag.
Embedded abc elements can be one of four types:
an abc fragment
an abc tune
a file header
an entire abc file
In all cases, the type must be indicated to the abc parsing code which is going
to process it (for example, via a class parameter). An exception is the
embedded abc tune where the parser may instead use the X: field to identify it.
An abc fragment is a partial abc tune. It may contain a partial tune header with
no body or a tune body with optional tune header information fields.
<div class="abc-fragment">
CDEF GABc|
</div>
<div class="abc-fragment">
T:Major scale in D
K:D
DEFG ABcd|
</div>
An abc fragment does not require an empty line to mark the end of the tune
body if it is terminated by the document markup.
Note for developers: For processing as an abc tune, the parsing code is
notionally assumed to add empty X:, T: and K: fields, if these are missing.
However, since the processing generally takes place internally within a
software package, these need not be added in actuality.
An embedded abc tune has the same structure as an ordinary abc tune except
that it does not require an empty line to mark the end of the tune body.
As with the file header, an embedded file header can be used to set default
values for all embedded abc tunes and abc fragments within the document.
Example: For setting the title font in every abc tune in the document:
<div class="abc-file-header">
%%titlefont Arial 10
</div>
Like its counterpart, there must only be one embedded file header per
document and it should precede all other embedded abc tunes and abc
fragments.
A document may include an entire embedded abc file with the usual structure -
see abc file structure.
Back to top
3. Information fields
Any line beginning with a letter in the range A-Z or a-z and immediately
followed by a colon (:) is an information field. Information fields are used to
notate things such as composer, meter, etc. In fact anything that isn't music.
An information field may also be inlined in a tune body when enclosed by [ and
] - see use of fields within the tune body.
Many of these information field identifiers are currently unused so, in order to
extend the number of information fields in the future, programs that comply with
this standard must ignore the occurrence of information fields not defined here
(although they should give a non-fatal error message to warn the user, in case
the field identifier is an error or is unsupported).
Some information fields are permitted only in the file or tune header and some
only in the tune body, while others are allowed in both locations. information
field identifiers A-G, X-Z and a-g, x-z are not permitted in the body to avoid
confusion with note symbols, rests and spacers.
Users who wish to use abc notation solely for transcribing (rather than
documenting) tunes can ignore most of the information fields. For this purpose
all that is really needed are the X:(reference number), T:(title), M:(meter), L:
(unit note length) and K:(key) information fields, plus if applicable C:(composer)
and w: or W: (words/lyrics, respectively within or after the tune).
Recommendation for newcomers: A good way to find out how to use the fields
is to look at the example files, sample abc tunes (in particular English.abc), and
try out some examples.
The information fields are summarised in the following table and discussed in
description of information fields and elsewhere.
The table illustrates how the information fields may be used in the tune header
and whether they may also be used in the tune body (see use of fields within
the tune body for details) or in the file header (see abc file structure).
Fields of type 'string' accept text strings as argument. Fields of type 'instruction'
expect a special instruction syntax which will be detailed below. The contents of
the remark field will be totally ignored.
In the case of all string-type information fields, repeated use in the tune header
can be regarded as additional information - for example, a tune may be known
by many titles and an abc tune transcription may appear at more than one URL
(Uniform Resource Locator) (using the F: field). Typesetting software which
prints this information out may concatenate all string-type information fields of
the same kind, separated by semi-colons (;), although the initial T:(title) field
should be treated differently, as should W:(words) fields - see typesetting
information fields.
Certain instruction-type information fields, in particular I:, m:, U: and V:, may
also be used multiple times in the tune header to set up different instructions,
macros, user definitions and voices. However, if two such fields set up the
same value, then the second overrides the first.
I:linebreak <EOL>
I:linebreak <none>
Comment: The above example should not generate an error message. The
user may legitimately wish to test the effect of two such instructions; having
them both makes switching from one to another easy just by changing their
order.
Other instruction-type information fields in the tune header also override the
previous occurrence of that field.
Within the tune body each line of code is processed in sequence. Therefore,
with the exception of s:(symbol line), w:(words) and W:(words) which have their
own syntax, the same information field may occur a number of times, for
example to change key, meter, tempo or voice, and each occurrence has the
effect of overriding the previous one, either for the remainder of the tune, or
until the next occurrence. See use of fields within the tune body for more
details.
The X: field is also used to indicate the start of the tune (and hence the tune
header), so all tunes must start with an X: field and only one X: field is allowed
per tune.
A T: (title) field must follow immediately after the X: field; it is the human
identifier for the tune (although it may be empty).
Some tunes have more than one title and so this field can be used more than
once per tune to indicate alternative titles.
The T: field can also be used within a tune to name parts of a tune - in this
case it should come before any key or meter changes.
See typesetting information fields for details of how the title and alternatives are
included in the printed score.
3.1.3 C: - composer
See typesetting information fields for details of how the composer is included in
the printed score.
3.1.4 O: - origin
This field may be especially useful for traditional tunes with no known
composer.
See typesetting information fields for details of how the origin information is
included in the printed score.
3.1.5 A: - area
Historically, the A: field has been used to contain area information (more
specific details of the tune origin). However this field is now deprecated and it is
recommended that such information be included in the O: field.
3.1.6 M: - meter
The M: field indicates the meter. Apart from standard meters, e.g. M:6/8 or
M:4/4, the symbols M:C and M:C| give common time (4/4) and cut time (2/2)
respectively. The symbol M:none omits the meter entirely (free meter).
2 + 3 + 2
8
When there is no M: field defined, free meter is assumed (in free meter, bar
lines can be placed anywhere you want).
The L: field specifies the unit note length - the length of a note as represented
by a single letter in abc - see note lengths for more details.
Commonly used values for unit note length are L:1/4 - quarter note (crotchet),
L:1/8 - eighth note (quaver) and L:1/16 - sixteenth note (semi-quaver). L:1
(whole note) - or equivalently L:1/1, L:1/2 (minim), L:1/32 (demi-semi-
quaver), L:1/64, L:1/128, L:1/256 and L:1/512 are also available, although
L:1/64 and shorter values are optional and may not be provided by all software
packages.
If there is no L: field defined, a unit note length is set by default, based on the
meter field M:. This default is calculated by computing the meter as a decimal: if
it is less than 0.75 the default unit note length is a sixteenth note; if it is 0.75 or
greater, it is an eighth note. For example, 2/4 = 0.5, so, the default unit note
length is a sixteenth note, while for 4/4 = 1.0, or 6/8 = 0.75, or 3/4= 0.75, it is an
eighth note. For M:C (4/4), M:C| (2/2) and M:none (free meter), the default unit
note length is 1/8.
A meter change within the body of the tune will not change the unit note length.
3.1.8 Q: - tempo
The Q: field defines the tempo in terms of a number of beats per minute, e.g.
Q:1/2=120 means 120 half-note beats per minute.
This means: play the tune as if Q:5/4=40 was written, but print the tempo
indication using separate notes as specified by the user.
Q: "Allegro" 1/4=120
Q: 3/8=50 "Slowly"
Finally note that some previous Q: field syntax is now deprecated (see
outdated information field syntax).
3.1.9 P: - parts
VOLATILE: For music with more than one voice, interaction between the P:
and V: fields will be clarified when multi-voice music is addressed in abc 2.2.
The use of P: for single voice music will be revisited at the same time.
The P: field can be used in the tune header to state the order in which the tune
parts are played, i.e. P:ABABCDCD, and then inside the tune body to mark each
part, i.e. P:A or P:B. (In this context part refers to a section of the tune, rather
than a voice in multi-voice music.)
Within the tune header, you can give instruction to repeat a part by following it
with a number: e.g. P:A3 is equivalent to P:AAA. You can make a sequence
repeat by using parentheses: e.g. P:(AB)3 is equivalent to P:ABABAB. Nested
parentheses are permitted; dots may be placed anywhere within the header P:
field to increase legibility: e.g. P:((AB)3.(CD)3)2. These dots are ignored by
computer programs.
See variant endings and lyrics for possible uses of P: notation.
See typesetting information fields for details of how the part information may be
included in the printed score.
3.1.10 Z: - transcription
Typically the Z: field contains the name(s) of the person(s) who transcribed the
tune into abc, and possibly some contact information, e.g. an (e-)mail address
or homepage URL (Uniform Resource Locator).
However, it has also taken over the role of the %%abc-copyright and %%abc-
edited-by since they have been deprecated (see outdated directives).
This new usage means that an update history can be recorded in collections
which are collaboratively edited by a number of users.
Note that there is no formal syntax for the contents of this field, although users
are strongly encouraged to be consistent, but, by convention, Z:abc-copyright
refers to the copyright of the abc transcription rather than the tune.
See typesetting information fields for details of how the transcription information
may be included in the printed score.
3.1.11 N: - notes
See typesetting information fields for details of how notes may be included in
the printed score.
3.1.12 G: - group
Database software may use this field to group together tunes (for example by
instruments) for indexing purposes. It can also be used for creating medleys -
however, this usage is not standardised.
3.1.13 H: - history
Although the H: fields are typically not typeset, the correct usage for multi-line
input is to use field continuation syntax (+:), rather than H: at the start of each
subsequent line of a multi-line note. This allows, for example, database
applications to distinguish between two different anecdotes.
Examples:
H:this is considered
+:as a single entry
See typesetting information fields for details of how the history may be included
in the printed score.
3.1.14 K: - key
The key signature should be specified with a capital letter (A-G) which may be
followed by a # or b for sharp or flat respectively. In addition the mode should
be specified (when no mode is indicated, major is assumed).
For example, K:C major, K:A minor, K:C ionian, K:A aeolian, K:G
mixolydian, K:D dorian, K:E phrygian, K:F lydian and K:B locrian would
all produce a staff with no sharps or flats. The spaces can be left out,
capitalisation is ignored for the modes and in fact only the first three letters of
each mode are parsed so that, for example, K:F# mixolydian is the same as
K:F#Mix or even K:F#MIX. As a special case, minor may be abbreviated to m.
This table sums up how the same key signatures can be written in different
ways:
Key Sig-
nature Major Minor
By default, the abc tune will be typeset with a treble clef. You can add special
clef specifiers to the K: field, with or without a key signature, to change the clef
and various other staff properties, such as transposition. K: clef=bass, for
example, would indicate the bass clef. See clefs and transposition for full
details.
Note that the first occurrence of the K: field, which must appear in every tune,
finishes the tune header. All following lines are considered to be part of the
tune body.
3.1.15 R: - rhythm
Contains an indication of the type of tune (e.g. hornpipe, double jig, single jig,
48-bar polka, etc). This gives the musician some indication of how a tune
should be interpreted as well as being useful for database applications (see
background information). It has also been used experimentally by playback
software (in particular, abcmus) to provide more realistic playback by altering
the stress on particular notes within a bar.
See typesetting information fields for details of how the rhythm may be included
in the printed score.
The information fields B:book (i.e. printed tune book), D:discography (i.e. a CD
or LP where the tune can be heard), F:file url (i.e. where the either the abc
tune or the abc file can be found on the web) and S:source (i.e. the
circumstances under which a tune was collected or learned), as well as the
fields H:history, N:notes, O:origin and R:rhythm mentioned above, are used
for providing structured background information about a tune. These are
particularly aimed at large tune collections (common in abc since its inception)
and, if used in a systematic way, mean that abc database software can sort,
search and filter on specific fields (for example, to sort by rhythm or filter out all
the tunes on a particular CD).
The abc standard does not prescribe how these fields should be used, but it is
typical to employ several fields of the same type each containing one piece of
information, rather than one field containing several pieces of information (see
English.abc for some examples).
3.1.17 I: - instruction
The I: field can be used interchangeably with stylesheet directives so that any
I:directive may instead be written %%directive, and vice-versa. However, to
use the inline version, the I: version must be used.
The following table contains a list of the I: field directives adopted as part of
the abc standard, with links to further information:
directive section
Typically, instruction fields are for use in the file header, to set defaults for the
file, or (in most cases) in the tune header, but not in the tune body. The
occurrence of an instruction field in a tune header overrides that in the file
header.
Comment: Remember that abc software which extracts separate tunes from a
file must insert the fields of the original file header into the header of the
extracted tune: this is also true for the fields defined in this section.
Charset field
The I:abc-charset <value> field indicates the character set in which text
strings are coded. Since this affects how the file is read, it should appear as
early as possible in the file header. It may not be changed further on in the file.
Example:
I:abc-charset utf-8
Legal values for the charset field are iso-8859-1 through to iso-8859-10, us-
ascii and utf-8 (the default).
Software that exports abc tunes conforming to this standard should include a
charset field if an encoding other than utf-8 is used. All conforming abc
software must be able to handle text strings coded in utf-8 and us-ascii.
Support for the other charsets is optional.
Version field
Every abc file conforming to the abc standard should start with the line
%abc-2.2
Example:
I:abc-version 2.0
Include field
The I:abc-include <filename.abh> imports the definitions found in a
separate abc header file (.abh), and inserts them into the file header or tune
header.
Example:
I:abc-include mydefs.abh
The included file may contain information fields, stylesheet directives and
comments, but no other abc constructs.
If the header file cannot be found, the I:abc-include instruction should be
ignored with a non-fatal error message.
Comment: If you use this construct and distribute your abc files, make sure that
you distribute the .abh files with them.
Creator field
The I:abc-creator <value> field contains the name and version number of
the program that created the abc file.
Example:
I:abc-creator xml2abc-2.7
Software that exports abc tunes conforming to this standard must include a
creator field.
Example: The following two excerpts are considered equivalent - either variant
is equally acceptable.
The first bracket, field identifier and colon must be written without intervening
spaces. Only one field may be placed within a pair of brackets; however,
multiple bracketed fields may be placed next to each other. Where appropriate,
inline fields (especially clef changes) can be used in the middle of a beam
without breaking it.
See information fields for a table showing the fields that may appear within the
body and those that may be used inline.
3.3 Field continuation
A field that is too long for one line may be continued by prefixing +: at the start
of the following line. For string-type information fields (see the information fields
table for a list of string-type fields), the continuation is considered to add a
space between the two half lines.
w:Sa-ys my au-l' wan to your aul' wan, will~ye come to the Wa-x-ies dar-
gle?
Comment: This is most useful for continuing long w:(aligned lyrics) and H:
(history) fields. However, it can also be useful for preventing automatic
wrapping by email software (see continuation of input lines).
%%vocalfont Times-Roman 14
w:nor-mal
% legal, but not recommended
%%vocalfont Times-Italic *
+:i-ta-lic
%%vocalfont Times-Roman *
+:nor-mal
Back to top
4.1 Pitch
The following letters are used to represent notes using the treble clef:
Lower octaves are reached by using commas and higher octaves are written
using apostrophes; each extra comma/apostrophe lowers/raises the note by an
octave.
Comment: The English note names C-B, which are used in the abc system,
correspond to the note names do-si, which are used in many other languages:
do=C, re=D, mi=E, fa=F, sol=G, la=A, si=B.
4.2 Accidentals
The symbols ^, = and _ are used (before a note) to notate respectively a sharp,
natural or flat. Double sharps and flats are available with ^^ and __
respectively.
The decoration !editorial! written before a note with an accidental turns it into an
editorial accidental - i.e. it is typeset above the notehead, rather than to the left
of it, and slightly smaller. In playback, editorial accidentals only modify the note
they are attached to and not any subsequent notes.
A single letter in the range A-G, a-g then represents a note of this length. For
example, if the unit note length is an eighth note, DEF represents 3 eighth
notes.
To get shorter notes, either divide them - e.g. if A is an eighth note, A/2 is a
sixteenth note, A3/2 is a dotted eighth note, A/4 is a thirty-second note - or
change the unit note length with the L: field. Alternatively, if the music has a
broken rhythm, e.g. dotted eighth note/sixteenth note pairs, use broken rhythm
markers.
Note that A/ is shorthand for A/2 and similarly A// = A/4, etc.
Note for developers: All compliant software should be able to handle note
lengths down to a 128th note; shorter lengths are optional.
Example: The following lines all mean the same thing (the third version is
recommended):
L:1/16
a3b cd3 a2b2c2d2
L:1/8
a3/2b/2 c/2d3/2 abcd
L:1/8
a>b c<d abcd
As a logical extension, >> means that the first note is double dotted and the
second quartered and >>> means that the first note is triple dotted and the
length of the second divided by eight. Similarly for << and <<<.
Note that the use of broken rhythm markers between notes of unequal lengths
will produce undefined results, and should be avoided.
4.5 Rests
Rests can be transcribed with a z or an x and can be modified in length in
exactly the same way as normal notes. z rests are printed in the resulting sheet
music, while x rests are invisible, that is, not shown in the printed music.
Multi-measure rests are notated using Z (upper case) followed by the number
of measures.
Example: The following excerpts, shown with the typeset results, are musically
equivalent (although they are typeset differently).
Z4|CD EF|GA Bc
z4|z4|z4|z4|CD EF|GA Bc
Here:
Note:
The transpose=<semitones> modifier of abc 2.1 and earlier is now
deprecated (replaced by the sound modifier - see transposition). It may
still be used, but not in conjunction with sound or score modifiers - if it is,
software should ignore the transpose setting and issue a warning
message. TODO: Include transpose= in deprecated list.
The middle=<pitch> modifier of abc 2.1 and earlier has been
compromised in terms of what it was supposed to do and how it has
actually been implemented. It is therefore deprecated.
4.6.1 Clefs
All the standard named clefs are available as settings for the clef= modifier
(see the table below). In addition:
The optional <octave indicator> (e.g. +8) can be used to specify octave
clefs.
Sub-bass clef=F5
Automatic* clef=auto
Drum** clef=perc
None clef=none
* The use of clef=auto allows typesetting software to switch between treble
and bass clefs freely, as it deems best. For software developers who do not
feel the need to support this feature, a possible option is always to display the
treble clef.
** Although this standard supports the drum clef, there is currently no support
for special percussion notes.
To support legacy usage, the clef= prefix may be omitted for named clefs (e.g.
treble, bass, alto) although its use is recommended for clarity.
More clef names may be allowed in the future, therefore unknown names
should be ignored. If the clef is unknown or not specified, the default is treble.
Finally note that, with the exception of +/-8 octave clef notation (see
immediately below), clefs have no impact on the relationship between code and
sound.
Octave clefs
An octave clef is a treble or bass clef symbol with an 8 or 15 drawn above or
below it, indicating a one or two octave transposition.
Example: The following excerpt draws an octave treble clef followed by the
note on the first ledger line below the staff. On playback, the note sounded is
one octave above middle C (this would normally be encoded as c).
[K: clef=treble+8] C|
Apart from the little 8, it has the same effect as the following excerpts:
Example: The following excerpt draws an octave treble clef followed by the
note on the first ledger line below the staff. On playback, the note sounded is
one octave above middle C. It is equivalent to the example above.
[K: clef=treble^8] c|
Apart from the little 8, it has the same effect as the following excerpt:
By extension the same syntax can be used with 15 rather than 8 to indicate
transpositions over two octaves.
The decision over whether to use the ^/_ or the +/- versions is largely a matter
of personal choice and depends on whether you like the abc code to be at
sounding pitch (^/_) or not (+/-).
Example: The following notes all sound as middle C - in the first four cases the
clef setting only affects the placement of the note on the staff; in the final case it
affects the meaning of the abc code. The resulting typeset score is shown
beneath (ignoring line-breaks and note lengths).
[K: clef=treble] C
[K: clef=bass] C
[K: clef=alto] C
[K: clef=treble_8] C
[K: clef=treble-8] c
K: clef=treble+8 % instrument=c'
4.6.2 Stafflines
Note: in other words, within a voice, V: inherits from a K: field as well as from
another V: field (and vice-versa).
Finally note that there are a number of ways to specify octave shifts and, for
example, octave=1 has the same effect as shift=Cc and score=Cc sound=Cc.
However all of these operators can be used independently and so their effects
add up.
Applications may introduce their own modifiers which should start with the
name of the application, followed a colon, followed by the name of the modifier.
Example:
Notes that cannot be beamed may be placed next to each other. For example,
if L:1/8 then ABC2DE is equivalent to AB C2 DE.
Symbol Meaning
| bar line
Note that the notation :: is short for :| followed by |:. The variants ::, :|:
and :||: are all equivalent.
By extension, |:: and ::| mean the start and end of a section that is to be
repeated three times, and so on.
A dotted bar line can be notated by preceding it with a dot, e.g. .| - this may be
useful for notating editorial bar lines in music with very long measures.
An invisible bar line may be notated by putting the bar line in brackets, e.g. [|]
- this may be useful for notating voice overlay in meter-free music.
Abc parsers should be quite liberal in recognizing bar lines. In the wild, bar
lines may have any shape, using a sequence of | (thin bar line), [ or ] (thick
bar line), and : (dots), e.g. |[| or [|::: .
When adjacent to bar lines, these can be shortened to |1 and :|2, but with
regard to spaces
| [1
is legal, while
| 1
is not.
Thus, a tune with different ending for the first and second repeats has the
general form:
For example, if the header of the tune contains P:A4.B4 then parts A and B will
each be played 4 times. To play a different ending each time, you could write in
the tune:
P:A
<notes> | [1 <notes> :| [2 <notes> :| [3 <notes> :| [4 <notes> |]
The Nth ending starts with [N and ends with one of ||, :| |] or [|. You can
also mark a section as being used for more than one ending e.g.
[1,3 <notes> :|
[1-3 <notes> :|
plays on endings 1, 2 and 3. In general, '[' can be followed by any list of
numbers and ranges as long as it contains no spaces e.g.
More general slurs can be put in with () symbols. Thus (DEFG) puts a slur over
the four notes. Spaces within a slur are OK, e.g. ( D E F G ) .
(c (d e f) g a)
and they may also start and end on the same note:
(c d (e) f g a)
A dotted slur may be notated by preceding the opening brace with a dot, e.g. .
(cde); it is optional to place a dot immediately before the closing brace.
Likewise, a dotted tie can be transcribed by preceding it with a dot, e.g. C.-C.
This is especially useful in parts with multiple verses: some verses may require
a slur, some may not.
It should be noted that although the tie - and slur () produce similar symbols in
staff notation they have completely different meanings to player programs and
should not be interchanged. Ties connect two successive notes of the same
pitch, causing them to be played as a single note, while slurs connect the first
and last note of any series of notes, and may be used to indicate phrasing, or
that the group should be played legato. Both ties and slurs may be used into,
out of and between chords, and in this case the distinction between them is
particularly important.
Symbol Meaning
If the time signature is compound (6/8, 9/8, 12/8) then n is three, otherwise n is
two.
More general tuplets can be specified using the syntax (p:q:r which means
'put p notes into the time of q for the next r notes'. If q is not given, it defaults as
above. If r is not given, it defaults to p.
This can be useful to include notes of different lengths within a tuplet, for
example (3:2:2 G4c2 or (3:2:4 G2A2Bc. It also describes more precisely how
the simple syntax works in cases like (3 D2E2F2 or even (3 D3EF2. The
number written over the tuplet is p.
Spaces that appear between the tuplet specifier and the following notes are to
be ignored.
4.14 Decorations
A number of shorthand decoration symbols are available:
. staccato mark
~ Irish roll
H fermata - shorthand for !fermata!
L accent or emphasis - shorthand for !>!
M lowermordent - shorthand for !lowermordent!
O coda - shorthand for !coda!
P uppermordent - shorthand for !uppermordent!
S segno - shorthand for !segno!
T trill - shorthand for !trill!
u up-bow - shorthand for !upbow!
v down-bow - shorthand for !downbow!
Decorations should be placed before the note which they decorate - see order
of abc constructs
Examples:
Most of the characters above (~HLMOPSTuv) are just short-cuts for commonly
used decorations and can even be redefined (see redefinable symbols).
More generally, symbols can be entered using the syntax !symbol!, e.g.
!trill!A4 for a trill symbol. (Note that the abc standard version 2.0 used
instead the syntax +symbol+ - this dialect of abc is still available, but is now
deprecated - see decoration dialects.)
Note that the decorations may be applied to notes, rests, note groups, and bar
lines. If a decoration is to be typeset between notes, it may be attached to the y
spacer - see typesetting extra space.
Spaces may be used freely between each of the symbols and the object to
which it should be attached. Also an object may be preceded by multiple
symbols, which should be printed one over another, each on a different line.
Example:
Abc software may also allow users to define new symbols in a package
dependent way.
Note that symbol names may not contain any spaces, [, ], | or : signs, e.g.
while !dacapo! is legal, !da capo! is not.
A symbol line starts with s:, followed by a line of symbols. Matching of notes
and symbols follow the alignment rules defined for lyrics (meaning that symbols
in an s: line cannot be aligned on grace notes, rests or spacers).
Example:
CDEF | G```AB`c
s: "^slow" | !f! ** !fff!
Example: The following two excerpts are equivalent and would place a
decorations plus a chord on the E.
C2 C2 Ez A2|
s: "C" * "Am" * |
s: * * !>! * |
U: T = !trill!
You can also use "^text", etc (see annotations below) in definitions
Example: To print a plus sign over notes, define p as follows and use it before
the required notes:
U: p = "^+"
Symbol definitions can be written in the file header, in which case they apply to
all the tunes in that file, or in a tune header, when they apply only to that tune,
and override any previous definitions. Programs may also make use of a set of
global default definitions, which apply everywhere unless overridden by local
definitions. You can assign the same symbol to two or more letters e.g.
U: T = !trill!
U: U = !trill!
in which case the same visible symbol will be produced by both letters (but they
may be played differently), and you can de-assign a symbol by writing:
U: T = !nil!
or
U: T = !none!
The standard set of definitions (if you do not redefine them) is:
U: ~ = !roll!
U: H = !fermata!
U: L = !accent!
U: M = !lowermordent!
U: O = !coda!
U: P = !uppermordent!
U: S = !segno!
U: T = !trill!
U: u = !upbow!
U: v = !downbow!
[CEGc]
indicates the chord of C major. They can be grouped in beams, e.g.
[d2f2][ce][df]
but there should be no spaces within the notation for a chord. See the tune
'Kitchen Girl' in the sample file Reels.abc for a simple example.
All the notes within a chord should normally have the same length, but if not,
the chord duration is that of the first note.
More complicated chords can be transcribed with the & operator (see voice
overlay).
The chord forms a syntactic grouping, to which the same prefixes and postfixes
can be attached as to an ordinary note (except for accidentals which should be
attached to individual notes within the chord and decorations which may be
attached to individual notes within the chord or may be attached to the chord as
a whole).
Example:
When both inside and outside the chord length modifiers are used, they should
be multiplied. Example: [C2E2G2]3 has the same meaning as [CEG]6.
If the chord contains two notes of the same pitch, then it is a unison (e.g. a note
played on two strings of a violin simultaneously) and is shown with one stem
and two note-heads.
Example:
[DD]
4.18 Chord symbols
VOLATILE: The list of chords and how they are handled will be extended at
some point. Until then programs should treat chord symbols quite liberally.
Chord symbols (e.g. chords/bass notes) can be put in under the melody line (or
above, depending on the package) using double-quotation marks placed to the
left of the note it is sounded with, e.g. "Am7"A2D2.
m or min minor
maj major
dim diminished
aug or + augmented
sus suspended
7, 9 ... 7th, 9th, etc.
A slash after the chord type is used only if the optional bass note is also used,
e.g., "C/E". If the bass note is a regular part of the chord, it indicates the
inversion, i.e., which note of the chord is lowest in pitch. If the bass note is not
a regular part of the chord, it indicates an additional note that should be
sounded with the chord, below it in pitch. The bass note can be any letter (A-G
or a-g), with or without a trailing accidental sign (b or #). The case of the letter
used for the bass note does not affect the pitch.
Alternate chords can be indicated for printing purposes (but not for playback)
by enclosing them in parentheses inside the double-quotation marks after the
regular chord, e.g., "G(Em)".
4.19 Annotations
General text annotations can be added above, below or on the staff in a similar
way to chord symbols. In this case, the string within double quotes is preceded
by one of five symbols ^, _, <, > or @ which controls where the annotation is to
be placed; above, below, to the left or right respectively of the following note,
rest or bar line. Using the @ symbol leaves the exact placing of the string to the
discretion of the interpreting program. These placement specifiers distinguish
annotations from chord symbols, and should prevent programs from attempting
to play or transpose them. All text that follows the placement specifier is treated
as a text string.
Where two or more annotations with the same placement specifier are placed
consecutively, e.g. for fingerings, the notation program should draw them on
separate lines, with the first listed at the top.
"<(" ">)" C
Each tie symbol, -, should come immediately after a note group but may be
followed by a space, i.e. =G,2- . Open and close chord delimiters, [ and ],
should enclose entire note sequences (except for chord symbols), e.g.
"C"[CEGc]|
|"Gm7"[.=G,^c']
and open and close slur symbols, (), should do likewise, i.e.
"Gm7"(v.=G,2~^c'2)
Back to top
5. Lyrics
The W: information field (uppercase W) can be used for lyrics to be printed
separately below the tune.
5.1 Alignment
When adjacent, w: fields indicate different verses (see below), but for non-
adjacent w: fields, the alignment of the lyrics:
starts at the first note after the notes aligned to the previous w: field; and
C D E F|
G A B c|
w: doh re mi fa sol la ti doh
If there are fewer syllables than available notes, the remaining notes have no
lyric (blank syllables); thus the appearance of a w: field associates all the notes
that have appeared previously with a syllable (either real or blank).
Example: In the following example the empty w: field means that the 4 G notes
have no lyric associated with them.
C D E F|
w: doh re mi fa
G G G G|
w:
F E F C|
w: fa mi re doh
If there are more syllables than available notes, any excess syllables will be
ignored.
Note that syllables are not aligned on grace notes, rests or spacers and that
tied, slurred or beamed notes are treated as separate notes in this context.
The lyrics lines are treated as text strings. Within the lyrics, the words should
be separated by one or more spaces and to correctly align them the following
symbols may be used:
Symbol Meaning
When an underscore is used next to a hyphen, the hyphen must always come
first.
Examples:
5.2 Verses
It is possible for a music line to be followed by several adjacent w: fields, i.e.
immediately after each other. This can be used, together with part notation, to
represent different verses. The first w: field is used the first time that part is
played, then the second and so on.
Examples: The following two examples are equivalent and contain two verses:
CDEF FEDC|
w: these are the lyr-ics for verse one
w: these are the lyr-ics for verse two
CDEF FEDC|
w: these are the lyr-ics
+: for verse one
w: these are the lyr-ics
+: for verse two
5.3 Numbering
VOLATILE: The following syntax may be extended to include non-numeric
"numbering".
If the first word of a w: line starts with a digit, this is interpreted as numbering of
a stanza. Typesetting programs should align the corresponding note with the
first letter that occurs. This can be used in conjunction with the ~ symbol
mentioned in the table above to create a space between the digit and the first
letter.
Back to top
6.1 Typesetting
Of course the printed representation of a line of music code may be too long for
the staff, so if necessary, typesetting programs should introduce additional
score line-breaks. As a consequence, if you would prefer score line-breaks to
be handled completely automatically (as is common in non-abc scoring
software), then just type the tune body on a single line of music code.
Even though most abc GUI (Graphical User Interface) software should wrap
over-long lines, typing the tune body on a single line may not always be
convenient, particularly for users who wish to include code line-breaks to aid
readability or if the abc code is to be emailed (see continuation of input lines).
Furthermore, in the past some typesetting programs used ! characters in the
abc code to force score line-breaks.
I:linebreak
To allow for all line-breaking preferences, the I:linebreak instruction may be
used, together with four possible values, to control score line-breaking.
"I:linebreak $" indicates that the $ symbol is used in the tune body to
typeset a score line-break. Any code line-breaks are ignored for
typesetting purposes.
I:linebreak $
K:G
|:abc def|$fed cba:|
The values <EOL (End of line)>, $ and ! may also be combined so that more
that one symbol can indicate a score line-break.
I:linebreak <EOL> $
meaning that both code line-breaks, and $ symbols, generate a score line-
break.
I:linebreak instructions are not allowed in the tune body (principally because
it conflicts with the human readability of the music code).
Example: The following two excerpts are considered equivalent and should be
typeset as a single staff in the printed score.
The backslash effectively joins two lines together for processing so if space is
required between the two half lines (for example, to prevent the notes from
being beamed together), it can be placed before the backslash, or at the
beginning of the next half line.
abc \
cba|
abc\
cba|
abc cba|
There is no limit to the number of lines that may be joined together in this way.
However, a backslash must not be used before an empty line.
cdef|\
cdef:|
In the examples above, where a line of music code follows immediately after a
line ending in backslash, the backslash acts as a continuation for two lines of
music code and can therefore be used to split up long music code lines.
More importantly, however, any information fields and stylesheet directives are
processed (and comments are removed) at the point where the physical line-
break occurs. Hence the backslash is commonly used to include meter or key
changes halfway through a line of music.
Example: The following should be typeset as a single staff in the printed score.
abc cab|\
%%setbarnb 10
M:9/8
%comment
abc cba abc|
Alternative usage example: The above could also be achieved using inline
fields, the I:<directive> form instead of %%<directive> and a r:remark in
place of the comment, i.e.
Finally, note that if the the <EOL (End of line)> character is not being used to
indicate score line-breaks, then the backslash is effectively redundant.
Recommendation to users: If you find that you are using backslash symbols on
most lines of music code, then consider instead using "I:linebreak <none>"
or "I:linebreak $" which will mean that all the code line-breaks will be ignored
for the purposes of generating score line-breaks (and, in the latter case, you
can encode a score line-breaks with the $ character).
y can be used to add extra space between the surrounding notes; moreover,
chord symbols and decorations can be attached to it, to separate them from
notes.
Example:
"Am" !pp! y
Note that the y symbol does not create rests in the music.
6.1.3 Typesetting information fields
By default typesetting programs should include the the title (T), composer (C),
origin (O), parts (P), tempo (Q), aligned words (w) and other words (W) in the
printed score, using the follow scheme:
the T:title should be printed centred above the tune; alternative titles
should be printed underneath the main title in smaller print
the C:composer should be printed right-aligned, just below the title, each
composer on a separate line
each P:part in the tune body should have the string identifying it printed
immediately above the start of that part; if there is a P:parts field in the
tune header (describing which order the parts are played in) it should be
printed left-aligned above the start of the tune
the Q:tempo should be printed above the tune at the start of the section to
which it applies
the aligned w:words (lyrics) should be printed under each line of music
with other W:words printed beneath the tune - see lyrics
6.2 Playback
Many of the information fields are ignored by playback programs - exceptions
are I:, K:, L:, M:, m:, P;, Q:, s:, U: and V:.
In addition, playback programs that store their output in file types which have
provisions for metadata (e.g. MIDI, ogg, mp3), may record the contents the T:,
C:, w: and W: fields in that metadata.
Furthermore, playback programs may use the R: field to infer stress patterns in
a tune (i.e. to make playback closer to real music, by for example, placing more
stress on the first note in each bar); however, such usage is not standardised.
Back to top
7. Multiple voices
VOLATILE: Multi-voice music is under active review, with discussion about
control voices and interaction between P:, V: and T: fields. It is intended that
the syntax will be finalised in abc 2.2.
The V: field allows the writing of multi-voice music. In multi-voice abc tunes, the
tune body is divided into several voices, each beginning with a V: field. All the
notes following such a V: field, up to the next V: field or the end of the tune
body, belong to the voice.
V:ID
where ID can be either a number or a string, that uniquely identifies the voice in
question. When using a string, only the first 20 characters of it will be
distinguished. The ID will not be printed on the staff; it's only function is to
indicate, throughout the abc tune, which music line belongs to which voice.
The syntax V:*, when it appears in either the file or tune header, applies all of
its modifiers globally to every voice in the file or tune respectively (although
these global modifiers may be overridden by later modifiers).
Example: All voices in this piece are set in the bass clef with the exception of
the first one where the clef=treble modifier overrides the global clef=bass.
V:* clef=bass
V:1 clef=treble
V:2
V:3
This layout closely resembles printed music, and permits the corresponding
notes on different voices to be vertically aligned so that the chords can be read
directly from the abc. The addition of single remark lines "%" between the
grouped staves, indicating the bar numbers, also makes the source more
legible.
V: can appear both in the body and the header. In the latter case, V: is used
exclusively to set voice properties. For example, the name property in the
example above, specifies which label should be printed on the first staff of the
voice in question. Note that these properties may be also set or changed in the
tune body. The V: properties are fully explained below.
Please note that the exact grouping of voices on the staff or staves is not
specified by V: itself. This may be specified with the %%score stylesheet
directive. See voice grouping for details.
Although it is not recommended, the tune body of fragment X:1, could also be
notated this way:
X:2
T:Zocharti Loch
%...skipping rest of the header...
K:Gm
% Start of tune body:
V:T1
(B2c2 d2g2) | f6e2 | (d2c2 d2)e2 | d4 c2z2 |
(B2c2 d2g2) | f8 | d3c (d2fe) | H d6 ||
V:T2
(G2A2 B2e2) | d6c2 | (B2A2 B2)c2 | B4 A2z2 |
z8 | z8 | B3A (B2c2) | H A6 ||
V:B1
z8 | z2f2 g2a2 | b2z2 z2 e2 | f4 f2z2 |
(d2f2 b2e'2) | d'8 | g3g g4 | H^f6 ||
V:B2
x8 | x8 | x8 | x8 |
x8 | z2B2 c2d2 | e3e (d2c2) | H d6 ||
In the example above, each V: label occurs only once, and the complete part
for that voice follows. The output of tune X:2 will be exactly the same as the
output of tune X:1; the source code of X:1, however, is much easier to read.
V: fields can contain voice specifiers such as name, clef, and so on. For
example,
indicates that voice T will be drawn on a staff labelled Tenor, using the treble
clef with a small 8 underneath. Player programs will transpose the notes by one
octave. Possible voice definitions include:
name="voice name" - the voice name is printed on the left of the first
staff only. The characters \n produce a newline in the output.
The name specifier may be abbreviated to nm=. The subname specifier may be
abbreviated to snm=.
Applications may implement their own specifiers, but must gracefully ignore
specifiers they don't understand or implement. This is required for portability of
abc files between applications.
The rules for typesetting line-breaks in multi-voice abc tunes are the same as
for single voice music although additionally a line-break in one voice must be
matched in the other voices. See the example tune Canzonetta.abc.
Example:
[V:1] C4|[M:3/4]CEG|Gce|
[V:2] E4|[M:3/4]G3 |E3 |
The & operator may be used to temporarily overlay several voices within one
measure. Each & operator sets the time point of the music back by one bar line,
and the notes which follow it form a temporary voice in parallel with the
preceding one. This may only be used to add one complete bar's worth of
music for each &.
Example:
A2 | c d e f g a &\
A A A A A A &\
F E D C B, A, |]
Words in w: lines (and symbols in s: lines) are matched to the corresponding
notes as per the normal rules for lyric alignment (see lyrics), disregarding any
overlay in the accompanying music code.
Example:
g4 f4 | e6 e2 |
&& (d8 | c6) c2|
w: ha-la-| lu-yoh
+: lu- | -yoh
This revokes the abc 2.0 usage of & in w: and s: lines, which is now
deprecated (see disallowed).
Back to top
!"#$%&'()*+,-./0123456789:;<=>?@
ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`
abcdefghijklmnopqrstuvwxyz{|}~
# * ; ? @
Example:
Typically when there are several lines of text, each line forms a separate text
string, although the distinction is not essential.
The contents of a text string may be written using any legal character set. The
default character set is utf-8, giving access to every Unicode character.
However, not all text editors support utf-8 and so to avoid portability problems
when writing accented characters in text strings, it also possible to use three
other encoding options:
Programs that have difficulty typesetting accented letters may reduce them to
the base letter or, in the case of ligatures, the two base letters ignoring the
backslash.
Examples: When reduced to the base letter, \oA becomes A, \"o becomes o,
\ss becomes ss, \AE becomes AE, etc.
Special characters
Characters that are meaningful in the context of a text string can be escaped
using a backslash as follows:
Special symbols
The following symbols are also useful:
VOLATILE: Finally note that currently the specifiers $1, $2, $3 and $4 can be
used to change the font within a text string. However, this feature is likely to
change in future versions of the standard - see font directives for more details.
Back to top
9. Macros
This standard defines an optional system of macros which is principally used
to define the way in which ornament symbols such as the tilde ~ are played
(although it could be used for many other purposes).
Software implementing these macros, should first expand the macros defined
in this section, and only afterwards apply any relevant U: replacement (see
Redefinable symbols).
When these macros are stored in an abc header file (see include field), they
may form a powerful library.
m: ~G3 = G{A}G{F}G
When you play the tune, the program searches the tune header for macro
definitions, then does a search and replace on its internal copy of the text
before passing that to the parser which plays the tune. Every occurence of ~G3
in the tune is replaced by G{A}G{F}G, and that is what gets played. Only ~G3
notes are affected, ~G2, ~g3, ~F3 etc. are ignored.
You can put in as many macros as you want, and indeed, if you only use static
macros you will need to write a separate macro for each combination of pitch
and note-length. Here is an example:
X:50
T:Apples in Winter
S:Trad, arr. Paddy O'Brien
R:jig
m: ~g2 = {a}g{f}g
m: ~D2 = {E}D{C}D
M:6/8
K:D
G/2A/2|BEE dEE|BAG FGE|~D2D FDF|ABc ded|
BEE BAB|def ~g2 e|fdB AGF|GEE E2:|
d|efe edB|ege fdB|dec dAF|DFA def|
[1efe edB|def ~g2a|bgb afa|gee e2:|
[2edB def|gba ~g2e|fdB AGF|GEE E2||
Here I have put in two static macros, since there are two different notes in the
tune marked with a tilde.
The target string can consist of any string up to 31 characters in length, except
that it may not include the letter 'n', for reasons which will become obvious later.
You don't have to use the tilde, but of course if you don't use a legal
combination of abc, other programs will not be able to play your tune.
The replacement string consists of any legal abc text up to 200 characters in
length. It's up to you to ensure that the target and replacement strings occupy
the same time interval (the program does not check this). Both the target and
replacement strings may include spaces if necessary, but leading and trailing
spaces are stripped off so
m:~g2={a}g{f}g
So, for example I could re-write the static macro m: ~G3 = G{A}G{F}G as a
transposing macro m: ~n3 = n{o}n{m}n. When the transposing macro is
expanded, any note of the form ~n3 will be replaced by the appropriate pattern
of notes. Notes of the form ~n2 (or other lengths) will be ignored, so you will
have to write separate transposing macros for each note length.
Here's an example:
X:35
T:Down the Broom
S:Trad, arr. Paddy O'Brien
R:reel
M:C|
m: ~n2 = (3o/n/m/ n % One macro does for all four rolls
K:ADor
EAAG~A2 Bd|eg~g2 egdc|BGGF GAGE|~D2B,D GABG|
EAAG ~A2 Bd|eg~g2 egdg|eg~g2 dgba|gedB BAA2:|
~a2ea agea|agbg agef|~g2dg Bgdg|gfga gede|
~a2 ea agea|agbg ageg|dg~g2 dgba|gedB BA A2:|
The target string can consist of any string up to 31 characters in length, except
that it must conclude with the letter 'n', followed by a number which specifies
the note length.
The replacement string consists of any legal abc text up to 200 characters in
length, where note pitches are defined by the letters h - z, the pitches being
interpreted relative to that of the letter n. Once again you should ensure that the
time intervals match. You should not use accidentals in transposing macros
Comment: It is almost impossible to think of a way to transpose ~=a3 or ~^G2
which will work correctly under all circumstances, so a static macro should be
used for cases like these.
Back to top
Disallowed syntax has the same definition as obsolete syntax, but has
not gone through a formal process of deprecation.
Outdated abc syntax is listed below so that users who come across it are able
to interpret (and preferably update) it according to the latest standard.
An E: field was once used by abc2mtex to explicitly control note spacing; this is
no longer necessary with current formatting algorithms and the E: field is now
deprecated.
The original usage of the H: history field, where the contents of the history field
is considered to continue over several lines until the next field occurs, is now
deprecated.
The Q: tempo field is still very much in use, but earlier versions of the standard
permitted two syntax variants, now deprecated, which specified how many unit
note lengths to play per minute.
Examples: Both examples mean "play 120 unit note-lengths per minute".
Q:C=120
Q:120
This is not very musical, and the usage is deprecated. However, there are
many abc files which employ this syntax and programs should accept it.
Abc 2.0 and 2.1 include a middle parameter for the K: key and V: voice fields
which allows an alternative means of specifying clefs by indicating which note
is displayed on the 3rd line of the staff:
The middle parameter was also used to avoid writing lots of commas to lower
the notes in question.
Example: The following three excerpts produce the same typeset score, a scale
on the bass clef.
[K:clef=bass] C,D,E,F, G,A,B,C|
[K:clef=bass middle=D] CDEF GABc|
[K:clef=bass middle=d] cdef gabc'|
Unfortunately, abc 2.0 was unclear about how this affected the playback and it
was clarified in abc 2.1 (post publication) that, because of the majority usage,
middle does not have any effect on playback. This means that when middle is
used to avoid writing commas, an additional transpose parameter is needed to
correct the playback.
Example: The following three excerpts produce the same typeset score, a scale
on the bass clef, and the playback of each scale is at the same pitch.
As a result, although still available, middle has been deprecated, along with its
shortened form m (for example, m=D is short for middle=D).
Example: The following two excerpts are equivalent and avoid the need to use
commas for bass notes; the latter is recommended.
The interaction of middle with stafflines when the number of staff lines is an
even number is not (and never has been) defined, so this usage is disallowed.
Abc 2.0 and 2.1 allow clef values such as clef=treble<line number>,
clef=bass<line number> and clef=alto<line number>, where the <line
number> is any available staff line.
These have now been deprecated in favour of either clef=G<line number> for
the G (treble) clef, clef=F<line number> for the F (bass) clef and clef=C<line
number> for the C (alto) clef or alternatively, for named clefs, clef=baritone (in
place of clef=bass3), clef=mezzosoprano (in place of clef=alto2) and
clef=soprano (in place of clef=alto1).
The ! is now deprecated for score line-breaks although it is still available (even
under strict interpretation) for legacy abc transcriptions by use of the
"I:linebreak !" directive - see line-breaking dialects.
Abc standard 2.0 adopted +…+ syntax to indicate decorations in place of !…!. It
never gained much favour, however, and the latter is in much more common
(see decoration dialects).
Therefore, and since a non-conflicting mechanism has now been found to allow
! for line-breaking (see line-breaking dialects), the +…+ decoration syntax is
now deprecated in favour of !…!.
Early versions of the abc standard used the + symbol to delimit chords (in place
of [] symbols). This usage is now deprecated - see chord dialects for more
details.
Abc 2.0 extended this usage to make \ a general continuation character, which
also allows continuation of information fields and in particular the w: lyrics field
(usually the only field which actually requires a continuation in typical
transcriptions). Unfortunately, however, the rules of precedence were never
well established (should the \ be treated by a pre-processor joining together
continued lines and, if so, should comments be removed before or after that
happened?) and the usage was never widely adopted, nor even well
understood.
Consequently, in abc 2.1 the \ has been reinstated to its original purpose of
suppressing score line-breaks (see typesetting line-breaks) and its use a
general continuation character is now disallowed (see continuation of input
lines for the alternatives).
Abc standard 2.0 included the rule that 'if the abc file contains only one tune the
X: field may be dropped'. However, it was pointed out that as a consequence, a
user who pasted an additional tune into such a file would get an error message
from a tune which previously contained no errors.
Despite considerable discussion on the abcusers mail list (see for example the
threads http://tech.groups.yahoo.com/group/abcusers/message/3950 and
http://tech.groups.yahoo.com/group/abcusers/message/4113) and, a number of
good suggestions, no consensus was reached. As a result the above rule is
deprecated in abc 2.1; a tune must start with a X: field followed by a T: field.
However, this decision may be revisited in the future and the specification
relaxed.
In early versions of the abc standard, defaults could be set throughout an abc
file, using information fields, which applied to all subsequent tune. In other
words, the file header could effectively appear anywhere inside a file instead of
just at the top.
This usage significantly complicates random access of the tunes in the file,
since the all the preceding contents of the file must be scanned for default
settings before a tune can be processed. As result this was deprecated in abc
2.0 and is deprecated in abc 2.1.
Examples: The following two excerpts are equivalent in abc 2.1; under abc 2.0
and previous versions of the standard, only the first version would be legal.
Note that there are 4 (numbered) verses and hence 4 w: fields for each line of
music code.
In the first excerpt the lyrics follow immediately after the line of music code to
which they are attached.
In the second excerpt, the lyrics are postponed to the end of the tune, arguably
aiding readability substantially and meaning that each verse is contiguous. The
comment lines in the second excerpt (those lines beginning with %) are added
for readability and are entirely optional.
The difficulty arises when there is a line (or lines) of music code without lyrics
attached, followed by a line with lyrics attached.
Example: In the following excerpt, using abc 2.0 the lyrics would be aligned
with the adjacent music code, i.e. with cdef; using abc 2.1 they would be
aligned at the start of the tune (or voice), i.e. with CDEF.
CDEF|
FEDC|
cdef|]
w:these are lyr-ics
The work around for users who have files with such usage is either to avoid
writing %abc-2.1 as the file identifier or to add an empty w: field after the final
line of music code that should be without lyrics.
Example: The following excerpt should be treated the same way (with regard to
lyrics alignment) under abc 2.0 and abc 2.1. Under abc 2.1 the empty w: field
means that the lyrics are aligned with cdef.
CDEF|
FEDC|
w:
cdef|]
w:these are lyr-ics
Although the use of ampersand (&) to overlay voices (as introduced in abc 2.0)
is still perfectly acceptable, this usage has been deprecated within w: lyric and
s: symbol information fields.
The reason is that, as far as is known, this usage has never been implemented
in software and, furthermore, & symbols are widely used within w: fields in
legacy abc files to indicate ampersands.
Instead lyrics are matched to notes without regard to the voice overlay - see
voice overlay.
Back to top
11.0.1 Disclaimer
In the early days of abc, pseudo-comments (lines starting with %%) were
introduced as a means of adding software-specific information and formatting
instructions into abc files; because they started with a % symbol software that
didn't recognise them would ignore them as a comment.
The pseudo-comments are still very much accepted as a way for developers to
introduce experimental features and software-specific formatting instructions.
However, when a directive gains acceptance, either by being implemented in
more than one piece of software, or by its use in a substantial body of tunes,
the aim is that the usage will be standardised and adopted in the standard and
the I: instruction form recommended in place of the %% pseudo-comment form.
In particular, it is intended that a future version of abc will address markup and
embedding and at that point a number of the text-based directives, together
with other widely accepted forms, will be formally incorporated.
For the moment, section 11 is retained mostly unchanged from abc 2.0 (save
for typo corrections) but, as a result of the foregoing, the whole of section 11
and all stylesheet directives should regarded as VOLATILE.
A stylesheet directive is a line that starts with %%, followed by a directive that
gives instructions to typesetting or player programs.
Examples:
%%papersize A4
%%newpage
%%setbarnb 10
I:papersize A4
I:newpage
I:setbarnb 10
Inline field notation may be used to place a stylesheet directive in the middle of
a line of music:
Example:
CDEFG|[I:setbarnb 10]ABc
It should be stressed that the stylesheet directives are not formally part of the
abc standard itself. Furthermore, the list of possible directives is long and not
standardised. They are provided by a variety of programs for specifying layout,
text annotations, fonts, spacings, voice instruments, transposition and other
details.
Strictly speaking, abc applications don't have to conform to the same set of
stylesheet directives. However, it is desirable that they do in order to make abc
files portable between different computer systems.
Basic syntax:
The score directive specifies which voices should be printed in the score and
how they should be grouped on the staves.
Voices that are enclosed by parentheses () will go on one staff. Together they
form a voice group. A voice that is not enclosed by parentheses forms a voice
group on its own that will be printed on a separate staff.
If voice groups are enclosed by curly braces {}, the corresponding staves will
be connected by a big curly brace printed in front of the staves. Together they
form a voice block. This format is used especially for typesetting keyboard
music.
If voice groups or braced voice blocks are enclosed by brackets [], the
corresponding staves will be connected by a big bracket printed in front of the
staves. Together they form a voice block.
If voice blocks or voice groups are separated from each other by a | character,
continued bar lines will be drawn between the associated staves.
Example:
If a single voice surrounded by two voice groups is preceded by a star (*), the
voice is marked to be floating. This means that the voice won't be printed on it's
own staff; rather the software should automatically determine, for each note of
the voice, whether it should be printed on the preceding staff or on the following
staff.
Software that does not support floating voices may simply print the voice on the
preceding staff, as if it were part of the preceding voice group.
Examples:
String parts in an orchestral work are usually bracketed together and the top
two (1st/2nd violins) then braced outside the bracket:
Any voices appearing in the tune body will only be printed if it is mentioned in
the score directive.
When the score directive occurs within the tune body, it resets the music
generator, so that voices may appear and disappear for some period of time.
If no score directive is used, all voices that appear in the tune body are printed
on separate staves.
Both %%score and %%staves directives accept the same parameters, but
measure bar indications work the opposite way. Therefore, %%staves
[S|A|T|B] is equivalent to %%score [S A T B] and means that continued bar
lines are not drawn between the associated staves, while %%staves [S A T B]
is equivalent to %%score [S|A|T|B] and means that they are drawn.
Assigns a MIDI instrument to the indicated abc voice. The MIDI instruments are
organized in banks of 128 instruments each. Both the instruments and the
banks are numbered starting from one.
The General MIDI (GM) standard defines a portable, numbered set of 128
instruments (numbered from 1-128) - see
http://www.midi.org/techspecs/gm1sound.php. The GM instruments can be
used by selecting bank one. Since the contents of the other MIDI banks is
platform dependent, it is highly recommended to only use the first MIDI bank in
tunes that are to be distributed.
Example:
M:C
L:1/8
Q:1/4=66
K:C
V:Rueckpos
%%MIDI voice instrument=53 bank=2
A3B c2c2 |d2e2 de/f/P^c3/d/|d8 |z8 |
V:Organo
%%MIDI voice instrument=73 bank=2
z2E2- E2AG |F2E2 F2E2 |F6 F2|E2CD E3F/G/|
You can use the keyword mute to mute the specified voice.
When set to not, accidentals apply only to the note they're attached to. When
set to octave, accidentals also apply to all the notes of the same pitch in the
same octave up to the end of the bar. When set to pitch, accidentals also
apply to all the notes of the same pitch in all octaves up to the end of the bar.
When set to none, modifying or explicit accidentals that appear in the key
signature field (K:) are printed in the key signature. When set to added, only the
accidentals belonging to the mode indicated in the K: field, are printed in the
key signature. Modifying or explicit accidentals are printed in front of the notes
to which they apply. When set to all, both the accidentals belonging to the
mode and possible modifying or explicit accidentals are printed in front of the
notes to which they apply; no key signature will be printed.
Typesetting programs should accept the set of directives in the next sections.
The parameter of a directive can be a text string, a logical value true or false,
an integer number, a number with decimals (just 'number' in the following), or a
unit of length. Units can be expressed in cm, in, and pt (points, 1/72 inch).
%%pageheight <length>
%%pagewidth <length>
%%topmargin <length>
%%botmargin <length>
%%leftmargin <length>
%%rightmargin <length>
%%indent <length>
%%landscape <logical>
VOLATILE: Font directives are due to be considered in abc 2.3 - see the
section 11 disclaimer.
PostScript and PDF are the standard file formats for distributing printable
material. For portability reasons, typesetters will use the PostScript font names.
The size parameter should be an integer, but is optional.
The specifiers $1, $2, $3 and $4 can be used to change the font within a text
string. The font to be used can be specified with the %%setfont-n directives. $0
resets the font to its default value. $$ gives an actual dollar sign.
VOLATILE: Text directives are due to be considered in abc 2.3 - see the section
11 disclaimer.
The following directives can be used for inserting typeset text within an abc file.
Notes:
Recommendation for users: If you are using text directives for tune-specific
information, consider instead using one of the background information fields
together with a %%writefields directive (see information directives) so that the
information can correctly identified by databasing software.
VOLATILE: The %%writefields directive and its formatting options are likely to
be enhanced when markup is considered in abc 2.3. See also the section 11
disclaimer.
The default is "%%writefields TCOPQwW" meaning that the title (T), composer
(C), origin (O), parts (P), tempo (Q), aligned words (w) and other words (W) are
printed out by default (see typesetting information fields for how these should
be typeset). Each subseqent %%writefields directive combines with this list,
rather than overriding it.
Examples:
Typesetting software conforming to abc 2.1 may format the information strings
in any way it chooses.
See further information about directives for more details and to find out about
additional parameters for these directives.
%%exprabove <logical>
%%exprbelow <logical>
%%graceslurs <logical> % grace notes slur to main note
%%infoline <logical> % rhythm and origin on the same line
%%oneperpage <logical>
%%vocalabove <logical>
%%freegchord <logical> % print '#', 'b' and '=' as they are
%%printtempo <logical>
Example:
%%noteedit:fontcolor blue
Back to top
12. Dialects, strict / loose interpretation and backwards
compatibility
Unfortunately a number of dialects of abc have arisen over the years, partly
due to differences in implementation, together with unfinished drafts of the abc
standard and ambiguities within it.
Version 2.1 of the standard aimed to address this fragmentation of abc notation
with a robust, but tolerant approach that should accommodate as many users
as possible for several years to come and, as far as possible, restore
backwards compatibility.
The aim is that, even under strict interpretation, most current dialects are still
available via the new I: directives.
Comment: Dialects not available under strict interpretation are those where one
symbol is used for two different purposes - for example, a ! symbol used to
denote both line-breaks and decorations; fortunately, of the 160,000 tunes
currently available in the abcnotation.com tune search only around 60 (0.04%)
employ this usage.
In the past the ! symbol has instead been used to indicate score line-breaks -
this symbol is now used to denote decorations.
Example: The following abc code would result in two lines of music.
I:linebreak !
K:G
ABC DEF|!FED ABC|]
In the past the + symbol has instead been used to denote decorations - this
symbol is now deprecated for decorations.
Comment: Decorations were first introduced in draft standard 1.7.6 (which was
never formally adopted) with the ! symbol. In abc 2.0 (adopted briefly whilst
discussions about abc 2.1 were taking place) this was changed to the +
symbol. Neither are in widespread use, but the ! symbol is much more
common - of the 160,000 tunes currently available in the abcnotation.com tune
search, only around 100 (0.07%) use the + symbol to delimit decorations,
whereas around 1,350 (0.85%) use the ! symbol.
Users who wish to continue using the + symbol for decorations merely need to
include the "I:decoration +" directive, either in the file header or individually
tune by tune - see decorations. All +…+ decorations will then be treated as if
they were the corresponding !…! decoration and any !…! decorations will
generate an error message.
Recommendation for users: Given the very small uptake of the + symbol for
decorations, "I:decoration +" directive is not recommended. However, it is
retained for users who wish to use the ! symbol for line-breaking in legacy abc
files.
For completeness the "I:decoration !", the default setting, is also available to
allow individual tunes to use !…! decorations in a file where "I:decoration +"
is set in the file header.
In the past the + symbol has instead been used to delimit chords - this symbol
is no longer in use for chords.
Comment: In early versions of the abc standard (1.2 to 1.5), chords were
delimited with + symbols. However, this made it hard to see where one chord
ended and another began and the chord delimiters were changed to [] in 1.6
(November 1996). Of the 160,000 tunes currently available in the
abcnotation.com tune search, only around 420 (0.25%) use the + symbol to
delimit chords. Given the small uptake and the successful introduction of the []
symbols, there is no I: directive available which allows the use of + symbols
and this usage is now obsolete.
Any abc file without a version number, or with a version number of 2.0 or less
(see abc file identification and version field), should be interpreted loosely.
Developers should do their best to provide programs that understand legacy
abc files, but users should be aware that loose interpretations may different
from one abc program to another.
Back to top
13. Transposition
Example: In the following the typeset score is raised by a fifth and is rendered
the same as if the abc code was transcribed as [K:D] efga. The playback is
lowered by a tone and is rendered the same as if the abc code were [K:F]
GABc.
If the abc code is transcribed at written pitch, the two values <note1> and
<note2> will be the same: in this case the modifier can be shortened to
instrument=<note1> - see writing abc code for transposing instruments.
13.1.2 Enharmonics
The interval system is clear with regard to enharmonics so, for example, the
interval C to _G is distinct from C to ^F. However, to compute transpositions it
may be helpful to use the MusicXML concept of specifying the interval as a
combination of diatonic steps and semitones. Both of these can be easily
calculated and make it simple to work out what the resulting note is using the
diatonic steps to give the letter and the semitones to indicate whether it is flat,
natural or sharp.
Notes for developers: You should try to correct any transpositions which go
beyond the specified abc limits of available key signatures, K:Cb (7 flats) to
K:C# (7 sharps), and double/triple accidentals. For example, in principle K:C#
score=CG raises the key up to K:G# (8 sharps), so to keep with the limits it
should be rendered as K:Ab (4 flats) and a warning issued to the user. If this is
not possible, output an error message instead.
TODO (elsewhere in the standard): Limit the range of key signatures supported
by abc to K:Cb (7 flats) through to K:C# (7 sharps). (Also limit accidentals - e.g.
double sharp and double flat accidentals should be supported, but triples are
entirely optional.)
There are two typical ways of writing abc code for transposing instruments:
The extended example below (section 13.3.2) illustrates the principles of writing
abc code for transposing instruments.
Note: The term "concert pitch" is also used elsewhere in the musical lexicon to
indicate "play A (above middle C) at 440Hz". However, here it refers to the
pitches that transposing instruments actually sound.
Notes for developers: To evaluate this formally, resolve all of the instrument=
shorthands to their score= and sound= equivalents and then apply the sound
transposition interval to the score modifier, so that score=<note1><note2>
sound=<note3><note4> would effectively be changed by I:sounding-score to
score=<note3><note4> sound=<note3><note4>. The same changes apply for
I:concert-score unless both <note1> and <note3> are a C (in any octave) in
which case score= is left unchanged.
Generally the clef on the concert score will be the same as on the written score,
but to change it, use clef-c=<clef-name> as a K: or V: modifier. To restore
the clef, mid-voice, to the same as the written score, use clef-c=clef which
resets it to the same value as the current clef setting.
Suppose a B clarinet player and a violinist wish to play the same piece which
simply consists of the notes CDEF in the key of C.
Since the violin is not a transposing instrument, the violinist's part is written
(and sounded):
V:1 name=violin
K:C
CDEF|
For the clarinet part, there is a choice. If, say, the composer of the piece prefers
to work at concert pitch, the clarinet part can be transcribed as sounded:
V:2 name=clarinet instrument=_B/c
K:C
CDEF|
Aside: An important difference between the two versions is that, although score
is shorter, it does not reset the sound modifier. Therefore, if you mix written
pitch and concert pitch transcriptions in the same piece, it will need to be reset
explicitly using sound=cc for each concert pitch voice which follows a written
pitch voice. For this reason it is not recommended to mix score (or sound)
modifiers with instrument.
Returning to the example, if the composer wants the abc code at written pitch,
the clarinet part can be transcribed:
Furthermore, since the <note1> and <note2> parts of the instrument= are the
same (i.e. _B), this may be shortened to:
Note: Written pitch voices will almost always need their own K: field to set the
key correctly (which will be different from concert pitch voices).
K:C
V:1 name=violin
CDEF|
V:2 name=clarinet instrument=_B/c
CDEF|
or using score
K:C
V:1 name=violin
CDEF|
V:2 name=clarinet score=_B
CDEF|
K:C
V:1 name=violin
CDEF|
V:2 name=clarinet instrument=_B
K:D
DEFG|
In either case the typeset score will be rendered at written pitch (and the
playback at concert pitch).
Re-transposition: Finally, suppose that the clarinet player has fallen ill and is
to be replaced by an alto sax player who now needs a differently transposed
part to read. Whether the abc code has been transcribed at concert pitch or at
written pitch this is easy by changing the instrument=_B part of the
instrument=_B/<note> modifier to instrument=_E.
Finally note that all of the transposing instrument information would normally be
collected up in the tune header to make it more visible (it only needs to appear
in the body if something changes halfway through, such as a switch from Bb
clarinet to A clarinet). So the written pitch clarinet to alto sax re-transposition
excerpt could be transcribed as:
The following table lists some example transposing instruments and the
modifiers they would need
For example, music for the Great Highland Bagpipes is almost always written in
A mixolydian but the sounding pitch has been creeping upwards over the years
and is now around Bb. If writing solely for the pipes one way to notate this is to
redefine the frequency of concert A accordingly (e.g. change it away from
concert A at 440Hz).
However, this will not work for ensembles with other instruments and so the
simplest way is to treat the pipes as a transposing instrument and to write
K:AMix sound=A_B for written pitch transcriptions (or K:BbMix score=_BA for
concert pitch transcriptions).
A further, more involved way that transposition is used, particularly for diatonic
instruments (e.g. flutes, whistles, bagpipes, hurdy-gurdies, diatonic accordions,
etc), is to transpose tunes to a preferred fingering, usually based on the range
of the instrument. Furthermore, because such instruments are often available in
several different keys, the instrument chosen to play the tune may be in a
different "key" from the fingering.
In the example below, the two tunes are transposed to a D fingering, where the
6-finger note is always notated as D (exactly the same as for the saxophone
family of instruments). On folk woodwind this is often referred to as 6-finger D.
X:1
T:Tune 1
K:Gmin shift=GD
GABc defg:|
X:2
T:Tune 2
K:Amix shift=AD
ABcd efga:|
However, this is not necessarily the final sounding key and so, for example, if
the musician chooses to play them on an F instrument, the playback for the
whole file could be adjusted accordingly with an V:* sound=DF instruction at
the top.
In addition, if a fellow musician happened to prefer G fingering (6-finger G) the
typeset score could be easily adjusted with an V:* score=DG instruction at the
top.
X:1
T:Tune 1
K:Gmin shift=GD
GABc defg:|
X:2
T:Tune 2
K:Amix shift=AD
ABcd efga:|
Finally, to cancel all of the shift modifiers in a file (or tune), add the instruction
I:no-shift to the file (or tune) header.
Back to top
14.1 English.abc
%abc-2.1
H:This file contains some example English tunes
% note that the comments (like this one) are to highlight usages
% and would not normally be included in such detail
O:England % the origin of all tunes is England
X:1 % tune no 1
T:Dusty Miller, The % title
T:Binny's Jig % an alternative title
C:Trad. % traditional
R:DH % double hornpipe
M:3/4 % meter
K:G % key
B>cd BAG|FA Ac BA|B>cd BAG|DG GB AG:|
Bdd gfg|aA Ac BA|Bdd gfa|gG GB AG:|
BG G/2G/2G BG|FA Ac BA|BG G/2G/2G BG|DG GB AG:|
W:Hey, the dusty miller, and his dusty coat;
W:He will win a shilling, or he spend a groat.
W:Dusty was the coat, dusty was the colour;
W:Dusty was the kiss, that I got frae the miller.
X:2
T:Old Sir Simon the King
C:Trad.
S:Offord MSS % from Offord manuscript
N:see also Playford % reference note
M:9/8
R:SJ % slip jig
N:originally in C % transcription note
K:G
D|GFG GAG G2D|GFG GAG F2D|EFE EFE EFG|A2G F2E D2:|
D|GAG GAB d2D|GAG GAB c2D|[1 EFE EFE EFG|A2G F2E D2:|\ % no line-break in
score
M:12/8 % change of meter
[2 E2E EFE E2E EFG|\ % no line-break in score
M:9/8 % change of meter
A2G F2E D2|]
X:3
T:William and Nancy
T:New Mown Hay
T:Legacy, The
C:Trad.
O:England; Gloucs; Bledington % place of origin
B:Sussex Tune Book % can be found in these books
B:Mally's Cotswold Morris vol.1 2
D:Morris On % can be heard on this record
P:(AB)2(AC)2A % play the parts in this order
M:6/8
K:G
[P:A] D|"G"G2G GBd|"C"e2e "G"dBG|"D7"A2d "G"BAG|"C"E2"D7"F "G"G2:|
[P:B] d|"G"e2d B2d|"C"gfe "G"d2d| "G"e2d B2d|"C"gfe "D7"d2c|
"G"B2B Bcd|"C"e2e "G"dBG|"D7"A2d "G"BAG|"C"E2"D7"F "G"G2:|
% changes of meter, using inline fields
[T:Slows][M:4/4][L:1/4][P:C]"G"d2|"C"e2 "G"d2|B2 d2|"Em"gf "A7"e2|"D7"d2
"G"d2|\
"C"e2 "G"d2|[M:3/8][L:1/8] "G"B2 d |[M:6/8] "C"gfe "D7"d2c|
"G"B2B Bcd|"C"e2e "G"dBG|"D7"A2d "G"BAG|"C"E2"D7"F "G"G2:|
14.2 Strspys.abc
%abc-2.1
M:4/4
O:Scottish
R:Strathspey
X:1
T:A. A. Cameron's
K:D
e<A A2 B>G d>B|e<A A2 d>g (3fed|e<A A2 B>G d>B|B<G G>B d>g (3fed:|
B<e e>f g>e a>f|B<e e>f g>e (3fed|B<e e>f g>e a>f|d<B G>B d>g (3fed:|
X:2
T:Atholl Brose
% in this example, which reproduces Highland Bagpipe gracing,
% the large number of grace notes mean that it is more convenient to be
specific about
% score line-breaks (using the $ symbol), rather than using code line
breaks to indicate them
I:linebreak $
K:D
{gcd}c<{e}A {gAGAG}A2 {gef}e>A {gAGAG}Ad|
{gcd}c<{e}A {gAGAG}A>e {ag}a>f {gef}e>d|
{gcd}c<{e}A {gAGAG}A2 {gef}e>A {gAGAG}Ad|
{g}c/d/e {g}G>{d}B {gf}gG {dc}d>B:|$
{g}c<e {gf}g>e {ag}a>e {gf}g>e|
{g}c<e {gf}g>e {ag}a2 {GdG}a>d|
{g}c<e {gf}g>e {ag}a>e {gf}g>f|
{gef}e>d {gf}g>d {gBd}B<{e}G {dc}d>B|
{g}c<e {gf}g>e {ag}a>e {gf}g>e|
{g}c<e {gf}g>e {ag}a2 {GdG}ad|
{g}c<{GdG}e {gf}ga {f}g>e {g}f>d|
{g}e/f/g {Gdc}d>c {gBd}B<{e}G {dc}d2|]
14.3 Reels.abc
%abc-2.1
M:4/4
O:Irish
R:Reel
X:1
T:Untitled Reel
C:Trad.
K:D
eg|a2ab ageg|agbg agef|g2g2 fgag|f2d2 d2:|\
ed|cecA B2ed|cAcA E2ed|cecA B2ed|c2A2 A2:|
K:G
AB|cdec BcdB|ABAF GFE2|cdec BcdB|c2A2 A2:|
X:2
T:Kitchen Girl
C:Trad.
K:D
[c4a4] [B4g4]|efed c2cd|e2f2 gaba|g2e2 e2fg|
a4 g4|efed cdef|g2d2 efed|c2A2 A4:|
K:G
ABcA BAGB|ABAG EDEG|A2AB c2d2|e3f edcB|ABcA BAGB|
ABAG EGAB|cBAc BAG2|A4 A4:|
14.4 Canzonetta.abc
%abc-2.1
%%pagewidth 21cm
%%pageheight 29.7cm
%%topspace 0.5cm
%%topmargin 1cm
%%botmargin 0cm
%%leftmargin 1cm
%%rightmargin 1cm
%%titlespace 0cm
%%titlefont Times-Bold 32
%%subtitlefont Times-Bold 24
%%composerfont Times 16
%%vocalfont Times-Roman 14
%%staffsep 60pt
%%sysstaffsep 20pt
%%musicspace 1cm
%%vocalspace 5pt
%%measurenb 0
%%barsperstaff 5
%%scale 0.7
X: 1
T: Canzonetta a tre voci
C: Claudio Monteverdi (1567-1643)
M: C
L: 1/4
Q: "Andante mosso" 1/4 = 110
%%score [1 2 3]
V: 1 clef=treble name="Soprano"sname="A"
V: 2 clef=treble name="Alto" sname="T"
V: 3 clef=bass name="Tenor" sname="B" octave=-2
%%MIDI program 1 75 % recorder
%%MIDI program 2 75
%%MIDI program 3 75
K: Eb
% 1 - 4
[V: 1] |:z4 |z4 |f2ec |_ddcc |
w: Son que-sti~i cre-spi cri-ni~e
w: Que-sti son gli~oc-chi che mi-
[V: 2] |:c2BG|AAGc|(F/G/A/B/)c=A|B2AA |
w: Son que-sti~i cre-spi cri-ni~e que - - - - sto~il vi-so e
w: Que-sti son~gli oc-chi che mi-ran - - - - do fi-so mi-
[V: 3] |:z4 |f2ec|_ddcf |(B/c/_d/e/)ff|
w: Son que-sti~i cre-spi cri-ni~e que - - - - sto~il
w: Que-sti son~gli oc-chi che mi-ran - - - - do
% 5 - 9
[V: 1] cAB2 |cAAA |c3B|G2!fermata!Gz ::e4|
w: que-sto~il vi-so ond' io ri-man-go~uc-ci-so. Deh,
w: ran-do fi-so, tut-to re-stai con-qui-so.
[V: 2] AAG2 |AFFF |A3F|=E2!fermata!Ez::c4|
w: que-sto~il vi-so ond' io ri-man-go~uc-ci-so. Deh,
w: ran-do fi-so tut-to re-stai con-qui-so.
[V: 3] (ag/f/e2)|A_ddd|A3B|c2!fermata!cz ::A4|
w: vi - - - so ond' io ti-man-go~uc-ci-so. Deh,
w: fi - - - so tut-to re-stai con-qui-so.
% 10 - 15
[V: 1] f_dec |B2c2|zAGF |\
w: dim-me-lo ben mi-o, che que-sto\
=EFG2 |1F2z2:|2F8|] % more notes
w: sol de-si-o_. % more lyrics
[V: 2] ABGA |G2AA|GF=EF |(GF3/2=E//D//E)|1F2z2:|2F8|]
w: dim-me-lo ben mi-o, che que-sto sol de-si - - - - o_.
[V: 3] _dBc>d|e2AF|=EFc_d|c4 |1F2z2:|2F8|]
w: dim-me-lo ben mi-o, che que-sto sol de-si-o_.
Back to top
15. Appendices
For more details see text strings and for further information see, for example:
Accents:
Ligatures, etc:
15.2 Errata
The following corrections have been made since the standard was published: