Abc notation
Encyclopedia
ABC notation is a shorthand form of musical notation
that has been in use since at least the 19th century, In basic form it uses the letters A through G to represent the given notes, with other elements used to place added value on these - sharp, flat, the length of the note, key, ornamentation. Later, with computers becoming a major means of communication, others saw the possibilities of using this form of notation as an ASCII code that could facilitate the sharing of music online, also adding a new and simple language for software developers. In this later form it remains a language for notating music
using the ASCII
character set. The earlier ABC notation was built on, standardized and changed to better fit the keyboard and an ASCII
character set by Chris Walshaw, with the help and input of others. Although now re-packaged in this form, the original ease of writing and reading, for memory jogs and for sharing tunes with others on a scrap of paper or a beer coaster remains, a simple and accessible form of music notation, not unlike others, such as tablature
and Solfeggio. Originally designed for use with folk and traditional tunes
of Western European origin (e.g. English, Irish, Scottish) which are typically single-voice melodies which can be written on a single staff in standard notation
, the work of Chris 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.
ABC Notation being ASCII-based, any text editor can be used to edit the music. 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, including into midi files and as standard 'dotted' notation. Such software is readily available for most computer systems including Microsoft Windows
, Unix
/Linux
, Macintosh
, PalmOS, and web-based.
Later 3rd-party software packages have provided direct output (bypassing the TeX typesetter), and have extended the syntax to support lyrics
aligned with notes, multi-voice and multi-staff notation, tablature
, and MIDI.
commands, which by 1993 evolved into the abc2mtex program. For more details see Chris' short history of abc, and John Chambers' chronology of ABC notation and software.
description of the abc v1.6 standard.
In 1997, Steve Allen registered the text/vnd.abc MIME
media type with the IANA
. But registration as a top level MIME type would require a full-blown RFC
. In 2006 Phil Taylor reported that quite a few websites still serve abc files as text/plain.
In 1999, Chris Walshaw started work on a new version of the abc specification to standardize the extensions that had been developed in various 3rd-party tools. After much discussion on the ABC users mailing list, a draft standard - version 1.7.6] was eventually produced in August 2000, but was never officially released. At that point Chris stepped away for several years from actively developing abc.
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.
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 and is currently (July 2011) ongoing on the abcusers mailing list. Chris Walshaw has gotten involved again and is coordinating this effort. The changes currently being discussed are reflected at http://abcnotation.com/wiki/abc:standard:v2.1
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 |]
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 are 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, abcm2ps software produces output that looks like the following image:
More examples can be found on Chris Walshaw's abc examples page which displays almost extensively abc basic features, except rest that are noted "z".
Musical notation
Music notation or musical notation is any system that represents aurally perceived music, through the use of written symbols.-History:...
that has been in use since at least the 19th century, In basic form it uses the letters A through G to represent the given notes, with other elements used to place added value on these - sharp, flat, the length of the note, key, ornamentation. Later, with computers becoming a major means of communication, others saw the possibilities of using this form of notation as an ASCII code that could facilitate the sharing of music online, also adding a new and simple language for software developers. In this later form it remains a language for notating music
Musical notation
Music notation or musical notation is any system that represents aurally perceived music, through the use of written symbols.-History:...
using the ASCII
ASCII
The American Standard Code for Information Interchange is a character-encoding scheme based on the ordering of the English alphabet. ASCII codes represent text in computers, communications equipment, and other devices that use text...
character set. The earlier ABC notation was built on, standardized and changed to better fit the keyboard and an ASCII
ASCII
The American Standard Code for Information Interchange is a character-encoding scheme based on the ordering of the English alphabet. ASCII codes represent text in computers, communications equipment, and other devices that use text...
character set by Chris Walshaw, with the help and input of others. Although now re-packaged in this form, the original ease of writing and reading, for memory jogs and for sharing tunes with others on a scrap of paper or a beer coaster remains, a simple and accessible form of music notation, not unlike others, such as tablature
Tablature
Tablature is a form of musical notation indicating instrument fingering rather than musical pitches....
and Solfeggio. Originally designed for use with folk and traditional tunes
Traditional music
Traditional music is the term increasingly used for folk music that is not contemporary folk music. More on this is at the terminology section of the World music article...
of Western European origin (e.g. English, Irish, Scottish) which are typically single-voice melodies which can be written on a single staff in standard notation
Modern musical symbols
Modern musical symbols are the marks and symbols that are widely used in musical scores of all styles and instruments today. This is intended to be a comprehensive guide to the various symbols encountered in modern musical notation.- Lines :- Clefs :...
, the work of Chris 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.
ABC Notation being ASCII-based, any text editor can be used to edit the music. 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, including into midi files and as standard 'dotted' notation. Such software is readily available for most computer systems including Microsoft Windows
Microsoft Windows
Microsoft Windows is a series of operating systems produced by Microsoft.Microsoft introduced an operating environment named Windows on November 20, 1985 as an add-on to MS-DOS in response to the growing interest in graphical user interfaces . Microsoft Windows came to dominate the world's personal...
, Unix
Unix
Unix is a multitasking, multi-user computer operating system originally developed in 1969 by a group of AT&T employees at Bell Labs, including Ken Thompson, Dennis Ritchie, Brian Kernighan, Douglas McIlroy, and Joe Ossanna...
/Linux
Linux
Linux is a Unix-like computer operating system assembled under the model of free and open source software development and distribution. The defining component of any Linux system is the Linux kernel, an operating system kernel first released October 5, 1991 by Linus Torvalds...
, Macintosh
Macintosh
The Macintosh , or Mac, is a series of several lines of personal computers designed, developed, and marketed by Apple Inc. The first Macintosh was introduced by Apple's then-chairman Steve Jobs on January 24, 1984; it was the first commercially successful personal computer to feature a mouse and a...
, PalmOS, and web-based.
Later 3rd-party software packages have provided direct output (bypassing the TeX typesetter), and have extended the syntax to support lyrics
Lyrics
Lyrics are a set of words that make up a song. The writer of lyrics is a lyricist or lyrist. The meaning of lyrics can either be explicit or implicit. Some lyrics are abstract, almost unintelligible, and, in such cases, their explication emphasizes form, articulation, meter, and symmetry of...
aligned with notes, multi-voice and multi-staff notation, tablature
Tablature
Tablature is a form of musical notation indicating instrument fingering rather than musical pitches....
, and MIDI.
History of ASCII ABC Notation
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 TeXTeX
TeX is a typesetting system designed and mostly written by Donald Knuth and released in 1978. Within the typesetting system, its name is formatted as ....
commands, which by 1993 evolved into the abc2mtex program. For more details see Chris' short history of abc, and John Chambers' chronology of ABC notation and software.
Standardization
The closest thing to an official standard is the (officially labelled "draft") "ABC Music standard 2.0".. It is a textual description of abc syntax and was grown from the 1996 user guide of version 1.6 of Chris Walshaw's original abc2mtex program. In 1997, Henrik Norbeck published a BNFBackus–Naur form
In computer science, BNF is a notation technique for context-free grammars, often used to describe the syntax of languages used in computing, such as computer programming languages, document formats, instruction sets and communication protocols.It is applied wherever exact descriptions of...
description of the abc v1.6 standard.
In 1997, Steve Allen registered the text/vnd.abc MIME
MIME
Multipurpose Internet Mail Extensions is an Internet standard that extends the format of email to support:* Text in character sets other than ASCII* Non-text attachments* Message bodies with multiple parts...
media type with the IANA
Internet Assigned Numbers Authority
The Internet Assigned Numbers Authority is the entity that oversees global IP address allocation, autonomous system number allocation, root zone management in the Domain Name System , media types, and other Internet Protocol-related symbols and numbers...
. But registration as a top level MIME type would require a full-blown RFC
Request for Comments
In computer network engineering, a Request for Comments is a memorandum published by the Internet Engineering Task Force describing methods, behaviors, research, or innovations applicable to the working of the Internet and Internet-connected systems.Through the Internet Society, engineers and...
. In 2006 Phil Taylor reported that quite a few websites still serve abc files as text/plain.
In 1999, Chris Walshaw started work on a new version of the abc specification to standardize the extensions that had been developed in various 3rd-party tools. After much discussion on the ABC users mailing list, a draft standard - version 1.7.6] was eventually produced in August 2000, but was never officially released. At that point Chris stepped away for several years from actively developing abc.
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.
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 and is currently (July 2011) ongoing on the abcusers mailing list. Chris Walshaw has gotten involved again and is coordinating this effort. The changes currently being discussed are reflected at http://abcnotation.com/wiki/abc:standard:v2.1
Example
The following is an example of the use of abc notationX: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 |]
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 are 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, abcm2ps software produces output that looks like the following image:
More examples can be found on Chris Walshaw's abc examples page which displays almost extensively abc basic features, except rest that are noted "z".
Collaborative abc
Recently abc has been implemented as a means of composing and editing music collections in collaborative environments. Several examples of Wiki environments that have been adapted to use abc are:- AbcMusic, plugin for MediaWikiMediaWikiMediaWiki is a popular free web-based wiki software application. Developed by the Wikimedia Foundation, it is used to run all of its projects, including Wikipedia, Wiktionary and Wikinews. Numerous other wikis around the world also use it to power their websites...
. Note: This implementation uses GNU LilyPondGNU LilyPondGNU LilyPond is a computer program for music engraving. One of LilyPond's major goals is to produce scores that are engraved with traditional layout rules, reflecting the era when scores were engraved by hand....
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 MoinMoinMoinMoinMoinMoin is a wiki engine implemented in Python, initially based on the PikiPiki wiki engine. The MoinMoin code is licensed under the GNU General Public License v2, or any later version .A number of organizations use MoinMoin to run public wikis,...
- AbcMusic for displaying abc notation in PmWikiPmWikiPmWiki is wiki software written by Patrick R. Michaud in the PHP programming language. It is free software, licensed under the terms of the GNU General Public License.-Design focus:...
- Traditional Music Wiki A collaborative source for traditional music using a tailored version of the AbcMusic plugin
- abc plugin for displaying abc notation in DokuWikiDokuWikiDokuWiki is a wiki application aimed at small companies’ documentation needs. DokuWiki is licensed under GPL 2 and written in the programming language PHP. It works on plain text files and thus needs no database. Its syntax is similar to the one used by MediaWiki.-History:DokuWiki was created by...
. This plugin uses Jef Moine's abcm2ps package as the rendering engine. It optionally uses abc2midi (available from the ABC Plus Project) to produce midi audio output. - 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 an Android application combining abcm2ps, abc2midi and a bit of abc4j into a tool for composing in your pocket. Online help
Documentation
- Chris Walshaw's definitive abc music notation website
- The ABC music project at sourceforge
- Steve Mansfield's tutorial on abc notation
- John Chambers' Frequently Asked Questions about ABC Music Notation
Software
- Chris Walshaw's list of abc software
- Concertina.net Convert-O-Matic form to produce sheet music and midi files from abc
- Folkinfo Abc Converter form to produce sheet music, midi conversion, and transposition
- Online abc editor that can process multiple tunes
- Guido Gonzato's ABCplus page with a lot of software and documentation
- ABCexplorer Freeware all-in-one ABC editing software (edit, play, organize & print)
- MC Musiceditor Freeware MCM and ABC editing software (write, refine, hear and print professional scores)
- abcjs A javascript rendering engine for ABC, providing an in-browser editor and a plugin for rendering instances of ABC found in a web browser.
- abcsound A Python converter for synthesizing ABC with CsoundCsoundCsound is a computer programming language for dealing with sound, also known as a sound compiler or an audio programming language, or more precisely, a C-based audio DSL. It is called Csound because it is written in C, as opposed to some of its predecessors...
- PySynthPySynthPySynth is a lightweight open source software synthesizer written in Python. It accepts a song as a nested list and outputs a WAV file with the synthesized audio.There is also some limited support for music in ABC music notation.-External links:...
Direct synthesis of ABC tunes in Python - ABCMusiEx Free ABC-based music reading exercises generator.
ABC Search Engines
- Chris Walshaw's abc tune search engine
- John Chamber's ABC Tune Search Engine JC's Tune finder searches the net for ABC tunes
- FolkTuneFinder.com, a musical search engine for ABC tunes
- Tunepal A query-by-playing search engine for traditional music that runs in a web browser. iOS and Android versions are also available
ABC Tune Collections
- Chris Walshaw's page of links to abc collections
- TheSession.org is a community and database of Irish tunes and list of sessions, reliant on abc notation
- Montreal Session Tunebook
- Henrik Norbeck's Abc Tunes, mostly Irish and Swedish traditional music
- FolkWiki, Scandinavian folkmusic (in Swedish)
- OpenHymnal a Public Domain hymnal project that uses ABC
- TradTune.com is a community-created database of traditional tunes that uses ABC notation