ABC notation
ABC notation is a shorthand form of musical notation for computers. In basic form it uses the letter notation with a
–g
, A
–G
, and z
, to represent the corresponding notes and rests, with other elements used to place added value on these – sharp, flat, raised or lowered octave, the note length, key, and ornamentation. This form of notation began from a combination of Helmholtz pitch notation and using ASCII characters to imitate standard musical notation (bar lines, tempo marks, etc.) that could facilitate the sharing of music online, and also added a new and simple language for software developers, not unlike other notations designed for ease, such as tablature and solfège.
Filename extension |
.abc |
---|---|
Internet media type |
text/vnd.abc |
Developed by | Chris Walshaw |
Initial release | January 1997 |
Latest release | 2.1 December 2011 |
Type of format | musical notation |
Open format? | Yes |
Website | abcnotation |
The earlier ABC notation was built on, standardized, and changed by Chris Walshaw to better fit the keyboard and an ASCII character set, with the help and input of others. Originally designed to encode folk and traditional Western European tunes (e.g., from England, Ireland, and Scotland) which are typically single-voice melodies that can be written in standard notation on a single staff line, the extensions by Walshaw and others has opened this up with an increased list of characters and headers in a syntax that can also support metadata for each tune.[1]
ABC notation being ASCII-based, any text editor can be used to create and edit the encoding. Even so, there are now many ABC notation software packages available that offer a wide variety of features, including the ability to read and process ABC notation into MIDI files and as standard "dotted" notation. Such software is readily available for most computer systems, including Microsoft Windows, Unix / Linux, Macintosh, Palm OS, and web-based.[2]
Later third-party software packages have provided direct output, bypassing the TeX typesetter,[3] and have extended the syntax to support lyrics aligned with notes,[4] multi-voice and multi-staff notation,[5] tablature,[6] and MIDI.[7]
History
ABC notation was in widespread use in the teaching of Irish traditional music in the late 1970s and most probably much earlier than that. In the 1980s Chris Walshaw began writing out fragments of folk / traditional tunes using letters to represent the notes before he learned standard Western music notation. Later he began using MusicTeX
to notate French bagpipe music. To reduce the tedium of writing the MusicTeX
code, he wrote a front-end for generating the TeX commands, which by 1993 evolved into the abc2mtex
program.[8] For more details see Chris Walshaw's short history of ABC[9] and John Chambers's chronology of ABC notation and software.[10]
Standardization
The most recent standard for ABC was released 21 December 2011.[11] It is a textual description of ABC syntax, cleaning up many of the ambiguities of the 2.0 Draft Standard, which, in turn, was grown from the 1996 User Guide of version 1.6 of Chris Walshaw's original "abc2mtex".
program. In 1997, Henrik Norbeck published a Backus–Naur form (BNF).[12]
In 1997, Steve Allen registered the text/vnd.abc
MIME media type with the Internet Assigned Numbers Authority (IANA),[13] but registration as a top level MIME type would require a formal Request for Comments (RFC).[14] In 2006 Phil Taylor reported that quite a few websites still serve ABC files as text/plain
.[15]
In 1999, Chris Walshaw started work on a new version of the ABC specification to standardize the extensions that had been developed in various third-party tools. After much discussion on the ABC users mailing list, a draft standard (nominal version 1.7.6) was eventually produced in August 2000, but was never officially released.[16] Thereafter, Chris stepped away for several years from actively developing ABC.[17]
Guido Gonzato later compiled a new version of the specification and published a draft of version 2.0. This specification is now maintained by Irwin Oppenheim. Henrik Norbeck has also published a corresponding BNF specification.[18]
After a surge of renewed interest in clarifying some ambiguities in the 2.0 draft and suggestions for new features, serious discussion of a new (and official) standard resumed in 2011, culminating in the release of ABC 2.1 as a new standard in late December 2011. Chris Walshaw has become involved again and is coordinating the effort to further improve and clarify the language, with plans for topics to be addressed in future versions to be known as ABC 2.2 and ABC 2.3 .
Example
The following is an example of the use of ABC notation in MediaWiki.
<score lang="ABC">
X:1
T:The Legacy Jig
M:6/8
L:1/8
R:jig
K:G
GFG BAB | gfg gab | GFG BAB | d2A AFD |
GFG BAB | gfg gab | age edB |1 dBA AFD :|2 dBA ABd |:
efe edB | dBA ABd | efe edB | gdB ABd |
efe edB | d2d def | gfe edB |1 dBA ABd :|2 dBA AFD |]
</score>
Lines in the first part of the tune notation, beginning with a letter followed by a colon, indicate various aspects of the tune such as the index, when there is more than one tune in a file (X:
), the title (T:
), the time signature (M:
), the default note length (L:
), the type of tune (R:
) and the key (K:
). Lines following the key designation represent the tune. This example can be translated into traditional music notation using one of the ABC conversion tools. For example, the Score extension (using LilyPond's abc2ly
) code for the MediaWiki software renders this as:
While abcm2ps software produces output that looks like:
More examples can be found on Chris Walshaw's ABC examples page,[19] extensively displaying most ABC basic features, except rests, which would be denoted with z
.
Collaborative ABC
Recently, ABC has been implemented as a means of composing and editing music in collaborative environments. Some Wiki environments that have been adapted to use ABC are:
- The Wiki-score platform for collaborative, large-scale score editing uses ABC as base notation.
- The
Score
plugin for MediaWiki. This uses GNU LilyPond as the underlying rendering engine. LilyPond comes packaged with a script,abc2ly
, that converts ABC notation to LilyPond. The extension calls abc2ly then LilyPond. MusicWiki
, a Python plugin implementation for MoinMoin wikisAbcMusic
for displaying ABC notation in PmWiki- Montreal Session Tune Book. collaborative source for traditional music using a tailored version of the
AbcMusic
plugin - The
gabc
notation, developed by the Gregorio Project for transcriptions of Gregorian chant scores - ABC plugin for displaying ABC notation in DokuWiki. This plugin uses Jef Moine's
abcm2ps
package as the rendering engine. It optionally usesabc2MIDI
(available from the ABC Plus Project) to produce MIDI audio output. EasyABC
is an ABC-editor that supports MIDI export and SVG rendering.abcjs
plugin for displaying ABC notation on any web page. This allows ABC to be stored as text on the server and rendered client-side.- Zap's
ABC
is an Android application combiningabcm2ps
,abc2midi
, and a bit ofabc4j
into a tool for composing. - The multiplayer game The Lord of the Rings Online now uses the ABC notation to allow players to convert and play any MIDI music file in-game. The players play the music by having their character play the corresponding instrument.
- The PC game Starbound allows players to use in-game instruments to play custom music.
See also
- GUIDO music notation
- Helmholtz pitch notation
- LilyPond
- Numbered musical notation, widely used in China
- Tonic sol-fa
References
- Walshaw, Chris. "Introduction". abcnotation.com. abc music notation. Retrieved 1 March 2008.
- Walshaw, Chris. "History". abcnotation.org.uk. abc music notation. Retrieved 1 March 2008.
- Vint, Jim. "ABC2Win shareware music notation program". abc2win.com. Archived from the original on 4 March 2008. Retrieved 1 March 2008.
- Methfessel, Michael. "ABC2PS". ihp-ffo.de (personal webpage). The Institute for Semiconductor Physics. Archived from the original on 12 February 2008. Retrieved 1 March 2008.
- Moine, Jean-François. "abcm2ps". Jef's page. Retrieved 1 March 2008.
- Dalitz, Christoph. "abctab2ps". Lauten Gesellschaft. Archived from the original on 6 February 2008. Retrieved 1 March 2008.
- Allwright, James. "abcMIDI". abc.sourceforge.net. Archived from the original on 9 March 2008. Retrieved 1 March 2008.
- Walshaw, Chris. "Software". abc music notation. abcnotation.org.uk. Retrieved 1 March 2008.
- Walshaw, Chris. "A brief history of abc". abcnotation.com. Retrieved 25 November 2017.
- Chambers, John. "History". abc music notation. MIT. Retrieved 25 November 2017.
- "The abc music standard 2.1". 21 December 2011. Retrieved 21 December 2011.
- Norbeck, Henrik. "ABC 1.6 in BNF format". Archived from the original on 9 March 2008. Retrieved 1 March 2008.
- "Registration of MIME media type text/vnd.abc". Retrieved 1 March 2008.
- Allen, Steve. "ABC as a MIME type". Retrieved 1 March 2008.
- Taylor, Phil. "abcusers: Re: ABC on the web" (Yahoo discussion group). Retrieved 1 March 2008.
- Walshaw, Chris. "Learning". abcnotation.org.uk. abc music notation. Archived from the original on 21 July 2009. Retrieved 1 March 2008.
- Walshaw, Chris. "Further information". abcnotation.org.uk. abc music notation. Retrieved 1 March 2008.
- Oppenheim, Irwin. "The ABC music standard". Archived from the original on 21 February 2008. Retrieved 1 March 2008.
- "Examples". ABCNotation.com. abc music notation. Retrieved 12 March 2019.