Examples representations of piano score in abc

This page presents a set of snips of piano music along with some suggestions for the abc syntax which might represent the score. The examples are not by any means a complete survey of the idioms found in piano score, and there is some redundancy.

The problems with the notation of piano score in abc apply in pretty much the same way to harpsichord, harp, celesta, and organ music. The notation below require several extensions of the abc clefs, which are detailed in their own WWW page. Please see that page before proceeding.

This is neither definitive nor complete

Because of a topic that came up on 1997-11-28 in the abc mailing lists I have placed this document on the WWW before finishing my efforts. It is guaranteed to continue to evolve even in the absence of feedback from the net.

By no means do I assert that this is the only way that abc might represent this music, nor do I assert that this is the best way. It is merely a possible way.

Ties between single notes and chords

In the context of this tune this is a single voice on the bass clef, which might be encoded (G- [GG,]). Note that this requires the ability to tie from non-chords into chords.

Naturally, the time reverse of this situation also happens, and that might be encoded ([G-G,] G), or perhaps ([GG,]- G). It is not immediately clear which syntax is preferable, but it is clear that abc requires the ability to represent this.

In another context this case might be better represented as two separate voices set on the same staff:

G- G
(G G,)

Slurs between the two staves

This situation was one of the primary motivations for the existence of the various forms of ``grand clef'':
([D2D'2] [a,,d,f,])

Ties between chords

It might be desirable to permit a shorthand notation for this which reads
[FAdf]-    | [FAdf]
This would imply that all notes from the first chord must tie to a note in an immediately following chord.

A more verbose notation is also possible

[F-A-d-f-] | [FAdf]
and there are other examples which might motivate legitimizing such a syntax.

Slurs and beams between the two staves

Here is another case where the typeset version requires the ``grand clef''.
(A,EAC' E'a,,c,e,)
Note also that the second measure requires a total of 4 voices.

Voices crossing between the two staves

This example has 4 voices. Here it is the one denoted V:3 which crosses between the staves, thus requiring a brief interval of ``grand clef''.
V:1                             clef=treble staff=1
[A2d2f2a2]) [C2E2]  | (D  F2   F)  |
V:2                             clef=treble staff=1
y4                  |  D4          |
V:3                             clef=grand  staff=1
y2          a,, g,, | (F' A'2  A') |
V:4                             clef=bass   staff=2
[A2a2])     [A,2A2] |  d2   c2     |
Note the use of ``y'' to indicate a rest on the upper staff which is not typeset.

Is some explicit notation for drawing the diagonal required? Or can it be inferred from the beamless switch between staves?

Slurs, beams between staves, and terminal ties

There are 4 voices here, and precisely because of these 4 voices it is easy to denote all the ties in the last bar.
V:1                             clef=treble staff=1
(_Bd   | Ad-   H[d4d'4])   ||
V:2                             clef=treble staff=1
 _B2   | A2-   HA4         ||
V:3                             clef=grand  staff=1
(_B'g, | D'A'- H[A'4F''4]) ||
V:4                             clef=bass   staff=2
 G'2   | D'2-  HD'4        ||
The slur should presumably only be indicated on voices 1 and 3

Arpeggiated slurred chords

The arpeggios force the interpretation of the connection between the high notes to be a slur, not a tie. Because the arpeggios extend over both staves this also requires ``grand clef''.
(p[EBG'b,,e,b,] | p[GBD'G'b,,d,g,b,])
For the sake of expression here I have chosen to represent an arpeggiated chord as p[], but in no way do I intend that as a recommendation for implementation.

Slow terminal arpeggio

This is a case where a literal interpretation of the written note lengths is both impossible and probably not what the author intends. In a strictly literal sense it is impossible for the entire sequence of 1/8th notes to be tied to the terminal chord. The earlier notes must be held longer than 1/8 in order to be temporally contiguous with the terminal chord.

This is an extremely common idiom in piano music, and it is effectively impossible to re-create the typeset layout using abc. It could be rephrased using alternative means, not all of them satisfactory.

If each 1/8th note were repeated as needed in the penultimate bar using more tied 1/8th notes it would require 7 voices. The result would not only look ugly for the proliferation of notes, but the use of multiple voices would also cause it to lack the beams. This is not satisfactory.

Alternatively, the ties could be removed entirely and replaced by an indication that the pedal be used. However, a pianist would probably want to use a new attack on the notes of the chord in the terminal bar, and this does not seem to be the original intent.

If I'm not misinterpreting it, the literal meaning of this could be represented by a series of progressively tied chords; viz.:

V:1     clef=treble staff=1
G,3                   y3                                  | Hy6                  ||
V:2     clef=grand  staff=1
C,- [C,G,]- [C,G,=E]- [C,G,=EG]- [C,G,=EGc]- [C,G,=EGcg]- | H[C,6G,6=E6Gc6g6g'6] ||
Where H is the abc2ps convention for the fermata. For playback apps this should produce the desired result, but it's not at all clear that the typeset result would satisfy.

More slurs between staves

V:1             clef=grand  staff=1
| Z (D' z b,,d,b,- | b,2 =a,2 f,2-) | (f,2 b,2) z2   |
V:2             clef=treble staff=1
| z2    z B,3      | C4       C2    |  D4       z2   |
V:3             clef=bass   staff=2
| z  d  g4         | f4       f2-   | (f4       =a2) |
V:4             clef=bass   staff=2
| G6               | F4       =A2   |  B4       =A2  |
In V:1 on the grand staff note the use of Z for rest on lower clef and z for upper clef. There are other assignments of voices here which are at least as valid; in particular, notations where V:4 vanishes in the second bar and V:3 compensates by using chords.

More ties and slurs between chords

This is another common situation in a terminal bar.
| ([G3g3-] H[c2g2]) ||

Still more slurs between staves

In the full context this piece requires 4 voices. Here only three are visible, but those which do not cross between staves require invisible rests.
V:1     clef=grand      staff=1
(DA f,,a,, d,f,a,d) |
V:2     clef=treble     staff=1
z2  y6              |
V:3     clef=bass       staff=2
y2 (d4         f2)  |

Slur between staves

This one is straightforward on the ``grand clef''.
( BF'B'd, f,b,df )

More slurs, ties, and terminal bars

The assignment of notes to voices here is particularly arbitrary. It depends largely on how one wants to handle the ties to the notes in the chords of the final two bars on treble clef.
V:1     clef=treble     staff=1
(FGF EDE- | E6      | HD6)   |]
V:2     clef=treble     staff=1
D6        | [C6A6-] | HA6    |]
V:3     clef=bass       staff=2
aba  gfg  | (a3 g3) | Hf6    |]
V:4     clef=bass       staff=2
d6-       | d6-     | d3 HD3 |]
An alternative for the treble clef voices requires some fancy interpretation of the ties into and out of the chords. The following chord syntax works, but it may introduce unacceptable ambiguities or other difficulties in parsing.
V:1     clef=treble     staff=1
(FGF EDE- | [C6E6A6-]      | H[D6A6]) |]
V:2     clef=treble     staff=1
D6        | y6             | Hy6      |]
Again, I am using ``y'' as a non-typeset rest.

Slurs, ties, and chords

In this case the full context wants two voices, so the typeset result follows naturally from something like the following.
| [C3c3]- [C2c2] z |
| (G3-    E2)    z |

Multiple voice arpeggios

The full context of this wants 4 voices, but in these bars some will be silent. The arpeggios across the staves demand that one voice here use the ``grand clef'' and that there be non-typeset rests (``y''). The transition from grand=treble+bass to grand=treble+treble is of interest because of its somewhat awkward (and non-sight readable) appearance. I do not seriously advocate the exact syntax that I have used.
V:1     clef=treble     staff=1
y2                      \
p[Bgb] | y3
V:2     clef=grand      staff=1
p[G2F'2b,,2d,2g,2b,2]   \
V:2     clef=grand:T:T  staff=1
y1     | p[FGBdgd'] p[DFGb,ga] ) p[B,DFg,dg]
V:3     clef=treble     staff=2
y2                      \
p[DFG] | y3

Overlapping voices

This one is quite straightforward.
 E2  D2  ^C2

Still more tied/slurred chords

In the full context of this case this is really two voices. Note the implications for the typesetting program -- it must detect the two voices worth of beamed notes and produce only one beam.
GF   E2)
ED,- D,2

Voices which cross

Here on the treble clef the voices cross. This is easy to notate, but it is important that these voices not specify that their stems be up or down. A notation (for the treble clef only) might be.
(D  E  G F B, A, | G, F, G,4) |
(G, B, D2  G2    | D2    B,4) |

Chords in tuplets

I do not seriously propose the given clef name, but it does need some way of declaring that both staves are treble, with the upper one in octava.
V:1     clef=grand:T+8:T
| [^a/4=e'/4=b'/4][^F''/4=a'/4]+ =c'/2+ [^f/4=e'/4][=A'/4_F''/4_b/4=g'/4] |\
(5[=E'/4_g/4_a/4][=f'/4=a'/4][=D'/4^c'/4]=b/4[=F'/4^g/4] |
Note that this requires the handling of chords as elements of tuplets. It is, of course, redundant to give the note length for each separate note in a chord (because a chord with notes of different lengths is almost certainly an instance of multiple voices). The use of ``+'' here is in keeping with Chris Walshaw's suggestion for forcing beaming when it might not otherwise occur. (This is, by the way, two bars by Stockhausen -- thus the dynamics.)

Syncopation for 12 fingers

This is a bar from Ravel's Pavane pour une Infante Défunte which begins a section with syncopated rhythms. Divide the bar into 8 beats (1 thru 8). The score has 12 active notes at the time of beat 4. Closer inspection shows that 3 of the notes on the lower staff and upper staff are the same keys, meaning that only 9 fingers need be engaged. It is not immediately clear what the composer's intended sequences of key strikes is. The notation as written is simply not possible even on a piano. But who am I to question the capability of a composer like Ravel?

However, this example does highlight the relevant question: should abc be able to encode the written score for keyboard-like instruments? If it is desired to preserve the left/right hand-distinctions which are indicated by written musical score then the abc notation must permit the specification of clef. And if it is desired to preserve the written appearance of keyboard score then a simple 11-line ``grand clef'' centered on middle-C with no provision for ledger lines is not sufficient.


Probably the ugliest aspect of this system of notation for keyboard music is that the division into voices will often end up being totally arbitrary. This is a result of the fact that, in abc as it is currently formulated, each voice represents a sequence of pitches and rests which adjacently fill a given interval of time.

I've found that most portions of scores can be represented using 4 voices. However, there are moments of transition between movements and sections of syncopated music where the representation can briefly require 6 or more voices.

Principally this means that there is little hope that a piano score in abc would be sight-readable. The process of transcription from piano score to this form of abc is also non-trivial. While a proof-of-concept demonstrating the possibility is nice, I find myself asking whether there will ever be sufficient demand for the ``grand staff''/piano capability that it will be implemented. It is a lot of extra complexity to ask of a language largely implemented in freeware and shareware.

Also note that this proposal still does not address the issue of the dynamic information in the musical score.

Again, it does not address the relatively common situation where a piano or harp piece briefly consists of three staves; e.g., bass, treble, and treble in octava.

I bring up these issues not with the intent that they should be resolved immediately. I do not believe that there is sufficient experience with these concepts for abc to dare to standardize on them now. But I do hope that the issues raised by the double-staff of keyboard instruments will be kept in mind as abc struggles to adopt standards for single clef music in clefs other than treble.

Other things which would be cool to encode in abc

Can a glissando be notated as a variation on a tuplet?
See the source code of my transcription of Beethoven's seventh for a particularly painful example of why tremolos could greatly improve the concision of abc.

More information on abc

Chris Walshaw created abc and maintains the principal WWW page; it is required reading. The abc language is a registered MIME type.
Steve Allen <sla@ucolick.org>

Initial deployment: 1997-11-28
Unaltered after: 1997-12-11 Most recent update: 1999-08-24