Jump to content

ABC notation

From Wikipedia, the free encyclopedia

This is an old revision of this page, as edited by 213.165.225.157 (talk) at 18:23, 23 June 2009 (Added link to Folk Tune Finder search engine). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.

Abc is a language for notating music using the ASCII character set. It was originally developed by Chris Walshaw. Although it is a computer-based musical language, a key goal has been that it be also easily read by humans. It was 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 stave in standard notation. The syntax also supports metadata for each tune.[1]

The original open-source software abc2mtex is a front-end for generating TeX commands for typesetting the music in standard notation. Later 3rd-party software packages have provided direct output (bypassing the TeX typesetter)[2], and have extended the syntax to support lyrics aligned with notes,[3] multi-voice and multi-staff notation,[4] tablature,[5] and MIDI.[6]

Since abc is ASCII-based, any text editor can be used to edit the music. Even so, there are many software packages with various features that read and process abc notation. Most of the software is freeware or shareware, and are readily available on many computer systems including Microsoft Windows, Unix/linux, Macintosh, PalmOS, and web-based.[7]

History

In the 1980's 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' short history of abc, and John Chambers' chronology of ABC notation and software.

The abc standard

The official standard is known as abc standard v1.6.[9] It is a textual description of abc syntax and was taken from the 1996 user guide of version 1.6 of Chris Walshaw's original abc2mtex program. In 1997, Henrik Norbeck published a BNF description of the abc v1.6 standard.[10]


In 1997, Steve Allen registered the text/vnd.abc MIME media type with the IANA.[11] But registration as a top level MIME type would require a full-blown RFC.[12] In 2006 Phil Taylor reported that quite a few websites still serve abc files as text/plain.[13]


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 abcusers mailing list, a draft standard - version 1.7.6 was eventually produced in August 2000, but was never officially released.[14] At that point Chris stepped away from actively developing abc.[15]


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 and draft IV is dated 14 August 2003. Henrik Norbeck has also published a corresponding BNF specification.[16]

Example

The following is an example of the use of abc notation

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 type of tune (R:), the time signature (M:), the default note length (L:) 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.

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 MediaWiki. Note: This implementation uses 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
  • AbcMusic for displaying abc notation in PmWiki
  • Traditional Music Wiki A collaborative source for traditional music using a tailored version of the AbcMusic plugin
  • abc plugin for displaying abc notation in DokuWiki. 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.

Documentation

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
  • TunePal An ABC retrieval and playback tool for the PocketPC
  • ABCexplorer Freeware all-in-one ABC editing software (edit, play, organize & print)
  • abcsound A Python converter for synthesizing ABC with Csound
  • PySynth Direct synthesis of ABC tunes in Python

ABC Tune Collections

Footnotes

  1. ^ Walshaw, Chris. "abc music notation :: introduction". abcnotation.org.uk. Retrieved March 1 2008. {{cite web}}: Check date values in: |accessdate= (help); Unknown parameter |dateformat= ignored (help)
  2. ^ Vint, Jim. "ABC2Win Shareware Music Notation Program". abc2win.com. Retrieved March 1 2008. {{cite web}}: Check date values in: |accessdate= (help); Unknown parameter |dateformat= ignored (help)
  3. ^ Methfessel, Michael. "abc2ps". Retrieved March 1 2008. {{cite web}}: Check date values in: |accessdate= (help); Unknown parameter |dateformat= ignored (help)
  4. ^ Moine, Jean-François. "abcm2ps". Retrieved March 1 2008. {{cite web}}: Check date values in: |accessdate= (help); Unknown parameter |dateformat= ignored (help)
  5. ^ Dalitz, Christoph. "abctab2ps". Retrieved March 1 2008. {{cite web}}: Check date values in: |accessdate= (help); Unknown parameter |dateformat= ignored (help)
  6. ^ Allwright, James. "abcMIDI". Retrieved March 1 2008. {{cite web}}: Check date values in: |accessdate= (help); Unknown parameter |dateformat= ignored (help)
  7. ^ Walshaw, Chris. "abc music notation :: history". abcnotation.org.uk. Retrieved March 1 2008. {{cite web}}: Check date values in: |accessdate= (help); Unknown parameter |dateformat= ignored (help)
  8. ^ Walshaw, Chris. "abc music notation :: software". abcnotation.org.uk. Retrieved March 1 2008. {{cite web}}: Check date values in: |accessdate= (help); Unknown parameter |dateformat= ignored (help)
  9. ^ Walshaw, Chris. "abc music notation :: learning". abcnotation.org.uk. Retrieved March 1 2008. {{cite web}}: Check date values in: |accessdate= (help); Unknown parameter |dateformat= ignored (help)
  10. ^ Norbeck, Henrik. "ABC 1.6 in BNF Format". Retrieved March 1 2008. {{cite web}}: Check date values in: |accessdate= (help); Unknown parameter |dateformat= ignored (help)
  11. ^ "Registration of MIME media type text/vnd.abc". Retrieved March 1 2008. {{cite web}}: Check date values in: |accessdate= (help); Unknown parameter |dateformat= ignored (help)
  12. ^ Allen, Steve. "ABC as a MIME type". Retrieved March 1 2008. {{cite web}}: Check date values in: |accessdate= (help); Unknown parameter |dateformat= ignored (help)
  13. ^ Taylor, Phil. "abcusers: Re: ABC on the web". Retrieved March 1 2008. {{cite web}}: Check date values in: |accessdate= (help); Unknown parameter |dateformat= ignored (help)
  14. ^ Walshaw, Chris. "abc music notation :: learning". abcnotation.org.uk. Retrieved March 1 2008. {{cite web}}: Check date values in: |accessdate= (help); Unknown parameter |dateformat= ignored (help)
  15. ^ Walshaw, Chris. "abc music notation :: further information". abcnotation.org.uk. Retrieved March 1 2008. {{cite web}}: Check date values in: |accessdate= (help); Unknown parameter |dateformat= ignored (help)
  16. ^ Oppenheim, Irwin. "The ABC Music Standard". Retrieved March 1 2008. {{cite web}}: Check date values in: |accessdate= (help); Unknown parameter |dateformat= ignored (help)