(abcD version 5)
Copyright © 2016 David A. Randolph
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.
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).
At a minimum, three lines must be added to an abc file to create an abcD file.
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.
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
The abcC block must end with a terminal line like this:
% abcDidactyl END
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)
The person who performed the transcription of the fingerings should be recorded.
Example:
% Transcriber: David Randolph
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
At the end of a fingering block, an arbitrary number of comment lines may be added.
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
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.