abcD music format

(abcD version 5)

Didactyl Copyright © 2016 David A. Randolph

Overview

abcD is a superset of the abc notation format. Any valid abcD file is also a valid abc file. The current abc standard is 2.1.

abcD augments abc with specially formatted comments to capture fingering information for performance. At present, only piano fingering is defined.

General requirements

Content specific to abcD (as opposed to general purpose abc content) must all be presented in a continuous sequence of lines (the "abcD block" either at the top or the bottom of the file.

All lines in the abcD block begin with a % character followed by a space.

No continuation of lines is allowed within the abcD block. Each line ends with a newline (\n) character or a carriage-return/line-feed (*\r\l).

Required elements

At a minimum, three lines must be added to an abc file to create an abcD file.

Title line

The following string must appear first in the abcD block:

% abcDidactyl v5

The final character (5) reflects the current version of the format. It will be updated as changes are introduced.

Fingering block

The line immediately following the title line must be a fingering specification. It begins with the following string:

% abcD fingering 1: 

After a space, a single-line fingering specification in abcDF format is required.

Optional content may follow the fingering specification line. The block continues until another fingering block is defined or the abcD block is terminated with a terminal line.

An example one-line fingering block follows:

% abcD fingering 1: (p<2->3_2)fx_3412^xfxxpx_&123@1&12(125)133/4

Terminal line

The abcC block must end with a terminal line like this:

% abcDidactyl END

Optional fingering block elements

Authority

The person who determined the sequence of fingerings should be specified. If possible, the year in which the fingering was suggested should be provided.

% Authority: <name> [(approximate_year)]

Example 1:

% Authority: Carl Czerny (1863)

Example 2:

% Authority: C. P. E. Bach

Example 3:

% Authority: Anne Laird (2016)

Transcriber

The person who performed the transcription of the fingerings should be recorded.

Example:

% Transcriber: David Randolph

Transcription date

The date (and the 24-hour local time) when the transcription was completed may be specified.

% Transcription date: <YYYY-MM-DD> [<HH:MI:SS>]

Example 1:

% Transcription date: 2016-01-29 13:45:59

Example 2:

% Transcription date: 2017-12-31

Comments

At the end of a fingering block, an arbitrary number of comment lines may be added.

abcD block examples

Minimal example:

% abcDidactyl v5
% abcD fingering 1: 1xx4&5xx2@xx45&4x2x
% abcDidactyl END

Example 2:

% abcDidactyl v5
% abcD fingering 1: 1xx4&5xx2@xx45&4x2x
% Authority: Charles Hanon (1873)
% Transcriber: David Randolph
% Transcription date: 2016-01-15 12:38:01
% Taken from IMSLP in the public domain.
% abcD fingering 2: 1234&5432@2345&4321
% Authority: Dave Bartleby (2016)
% Transcriber: Dave Bartleby
% Transcription date: 2016-11-15 01:01:01
% Filling in the blanks was much harder than expected.
% abcDE kept crashing.
% Who made that thing?
% abcD fingering 3: 1111&1111@1111&1111
% Authority: Tom Thumb (2016)
% abcD fingering 4: 5555&1111@5555&1111
% abcDidactyl END

Acknowledgements

Thanks go to David Majda for the incredibly useful PEG.js parser generator. As Hawk Harrelson says, "Hang a star next to that one."

The Didactyl project has been partially funded by a Provost's Award for Graduate Research from the University of Illinois at Chicago.