Abc (music notation)

abc, so uncapitalized by its inventor, Chris Walshaw, is a special-purpose programming language for creating musical notation, where melodies are represented in the ASCII character set by the letter which corresponds to each musical note. Because of the correspondence of letters and notes, abc notation tends to be learnable by musicians who are not necessarily computer programmers. Since the introduction of the first freeware compiler in 1993, the abc language has achieved widespread use for folk and traditional tunes which are typically single-voice melodies on a single staff. With multiple freeware compilers now available, the abc language continues to grow in popularity because it provides a cost-free alternative for creating musical scores, and because it provides a standard way for people to share tunes and scores on the world wide web. Although not held by any tranditional standards body, abc can be considered to be a de facto standard due to widespread, voluntary compliance by software authors to certain written specifications.

To give a sense of how easy it is for people to notate music using abc, here is the ABC notation for two octaves of notes from low G below middle C upwards:

G A B C D E F G A B c d e f g a b c' d' e' f' g' a'

Arguably, the abc notation has revolutionized the learning of traditional and folk music, due to the proliferation of many thousands of tunes in this format throughout the Internet. Especially in Irish and Scottish traditional music, it is now possible to find "the abc" for all but the most obscure traditional tunes. This has also given people an easy and interesting way to discuss tunes online without the technical inconvenience of a recording of the tune. As a result, tune scholarship has arguably improved by the addition of such resources as The Fiddler's Companion by Andrew Kuntz; without the aggregating possibilities of the Internet, such resources would be difficult if not impossible to compile, and would in any case take much longer to compile.

Example
Here is the source code for a reel called Dickey's Discovery:

X:1 T:Dickey's Discovery C:Unknown, transmitted through Lotus Dickey to Pete Sutherland M:4/4 Q:1/2=120 L:1/8 R:reel N:taught to Pat Palmer by Garry Moore, July 2007; played at R&O XXVIII K:D dB|:"D"A2FG   FEDE |    FA2B    A2dB | "D"A2FG    FEDF  |  "A"EDEF  E2 dB| "D"A2FG   FEDE |    F2A2    f2fe | "G"d2Bc "A"BAFG  |1 "D"A2 D2 D2 dB:|2"D"A2 D2 D2 (3ABc|   |:"D"d2d2 "A"egfe | "G"dedB "A"ABcA | "D"dcde "Bm"fefg |  "A"a2e2  egfe |     "D"d2d2 "A"egfe | "D"fgaf "A"egfe | "G"d2Bc "A"BAFG  |1 "D"A2 D2 D2 (3ABc:|2"D"A2 D2 D2 dB|] w: v4

and here is how the above code is rendered as a .pdf document:

Five Line Skink
Five Line Skink is a freeware abc editor for Windows. It is almost WYSIWYG, requiring a single mouse click after updates to refresh the display of the tune. Skink's rendering is not as fine as ps2pdf, but is fine for most purposes.

Before installing Skink, you need first to install the Java Runtime Environment (JRE).

Related utilities
This section describes how to use several free utilities to automate creation of various file types from abc input text files.

abc2ps
Abc2ps is a free utility, created by Michael Methfessel, that reads an input file containing abc code and outputs a postscript (.ps) file. The output file can then displayed (i.e. using ghostview), printed on a Postscript printer, or converted with another utility (see below) to .pdf or other formats. The program is written in C and runs on most systems which have a C compiler. An MS-DOS command line would look like this:

abcm2ps -O C:\tunes\ps\mysong.ps C:\tunes\abc\mysong.txt

The above command line reads input file mysong.txt and creates output file mysong.ps in the subfolders shown.

ps2pdf
ps2pdf is a free utility that can create a very good-quality .pdf document from a postscript (.ps) file input.

ps2pdf C:\tunes\ps\mysong.ps C:\tunes\pdf\mysong.pdf

The above command line reads input file mysong.ps and creates output file mysong.pdf in the subfolders shown.

Creating .midi file from .abc files
abc2midi C:\tunes\mysong.txt -o C:\tunes\mysong.midi

The above command line reads input file mysong.txt (which must contain abc notation) and creates output file mysong.midi in the subfolders shown. The .midi file can then be played using Windows Media Player or an equivalent music player. The input file must contain header lines to describe the meter, note length, and timing; for example:

M:4/4 Q:1/2=120 L:1/8

The above abc header lines specify the timing for a reel (4/4 time, with eighth notes as the basic unit, and timing of 120 half notes per minute). If chords are included in the .abc notation, the .midi output file will sound event better (the beat will be highlighted in the notated chords).