Proposed extensions to abc 1.6 ------------------------------- (Henrik Norbeck 1997-10-03) A bnf specification of abc 1.6 with these extensions is available in http://home1.swipnet.se/~w-11382/abcbnfx.txt and http://home1.swipnet.se/~w-11382/abcbnfx.htm - Uncommented text is allowed between tunes. How programs should handle this text is not defined. Printer programs may print it between tunes. All abc programs that I've tried handle this today. - V: field for voice. May appear among header fields (to specify how the voices should be treated), or in the tune to start notes for a certain voice. The V: field is currently only implemented by Abc2midi, where it should be followed by a number for the voice, e.g. "V:1" "V:2". If the voice field should contain information on how voices should be treated, it should for example look like this: V:1 name="Clarinet 1" clef=treble merge=2 stems=up transpose=-14 V:2 name="Clarinet 2" clef=treble merge=1 stems=down transpose=-14 Meaning that the name printed at the beginning of the staff is "Clarinet", that it has a treble clef (this is default, and could be omitted), that all the note stems are up for the first voice, and down for the second, that they are merged into one staff, and when played, they should be transposed an octave and a major second down (12 + 2 = 14 semitones). We could also allow "transpose=-12-2" for example, for clarity's sake. The clef types allowed would be treble, bass, treble-8, treble+8, bass-8, alto, tenor. - %% lines for private program settings. This presents no problem, as other programs will simply treat them as comments. Abc2midi currently implements a number of %%midi settings, which other player programs might also wish to understand. For a complete list of these, see the Abc2midi documentation. Abc2ps also implements a number of %% directives, see Abc2ps documentation. - Inline fields. Fields can appear anywhere in the line of a tune, surrounded by [], e.g. ABc def | [K:Gmix] gdg fcf | This is implemented in Abcmus and Abc2ps. - Text above the staff, using !...!, for example: ABc def | !rit.! gdg fef | This is to avoid the kludge of using "" chords for this. - The R: field should be allowed in the tune too, since the rhythm might change in the tune. - A standard for some of the user-defines H-Z: J = slide up to note (Abc2ps) H = hold, fermata (Abc2ps, Abcmus) L = > mark (Abc2ps) M = mordent (proposed) bar, emphasis (Abc2ps) P = pralltriller, inverted mordent (proposed) R = roll (Abc2ps) T = trill (Abc2ps) M presents a problem, since it is already in use for the emphasis bar in Abc2ps, but it is also the natural abbreviation for a mordent. - + to nullify following whitespace in tune, for example: A+ B+ c d+ e+ f | is the same as ABc def | Handy for aligning notes in different voices, etc. Maybe this one is not needed if we have the next one: - w: fields for aligned words in tune. Lyrics are entered as a line starting with "w:" immediately below a line of music. Words are associated one-by-one with the notes. * skips one note. | tabs forward to the next bar line. - inside a word splits the word into syllables associated with successive notes, with '-' drawn between them. _ draws a horizontal line from the last word to under the current note (to denote a word held over two or more notes). ~ is drawn as a space, but contracts words to be written under one note. That is, "hey~ho" gives two words under one note. \- draws a - without breaking the word. \\ staff break. The special characters * | - _ ~ \\ do not have to be separated by blanks. If a word starts with a digit, this is interpreted as numbering of a stanza and is pushed forward a bit. In other words, use something like w: 1.~~Three blind mice to put a number before "Three". - K:alto and K:bass allowed. This sets the clef. c is still always the c closest to the middle of the staff. Implemented by Abc2ps. Examples: K:G bass K:bass The other kinds of clefs, as in the V: field (see above) should also be permitted. Maybe we can replace this syntax with for example: V:clef=bass