Beethoven Symphony No. 7, Movement 2
The abc musical
notation language originally developed by Chris Walshaw was
designed to handle folk tunes.
However, some of the applications which handle abc
files have been incorporating experimental features which are
capable of encoding music of much greater complexity.
I've transcribed all of each voice, then all of the next voice.
There's a lot to be said for interleaving single staves (or pages)
worth of music so that the abc file reads like score
sheets; i.e., the first section of all the voices, followed by the
next section of all the voices.
I think it is important to test the ability of abc
applications to determine their own staff and page breaks using
the scheme I've got here.
However, I remain unconvinced about whether interleaving sections
of music is a better idea.
I'm sure I don't like the coding style I've used here, but it is
convenient for proofreading during data entry.
I'm not done proofreading, so there are probably typos, and I
rather suspect the printed score from which I was working also
Feel free to offer other suggestions for reformatting this file.
Remember, however, that many of these features are experimental --
thus not part of the standard that all abc
applications are likely to support.
The inputs, outputs, and tools used
First is a new layout of the symphony I'm using henceforth. It is now
complete, has been proofheard as MIDI, and mostly proofread. Note
that the same input is acceptable for abc2ps, abc2midi, and abcm2ps
(although some custom tweaking could be used to maximize the beauty of
This is a rework which uses a separate "V:" line for each part
of each instrument instead of combining both parts into
chords. My original scheme produced PS which more nearly
matched the original score, but it caused grief to high-end
MIDI gear which knew that, e.g., flutes can't play chords.
The PS output of this can be improved with trivial effort (but
I've been otherwise occupied).
This is the philosophically right way to do the voices. There
are 19 instrumental parts = abc "V:" voices =
MIDI tracks. There are 11 distinct instruments = MIDI
channels in use. The original score has 12 staves, but the PS
outputs have more for different reasons. The dynamics are
included for typesetting as lyrics.
MIDI output from abc2midi-1.5.6
7 minutes and 12 seconds of synthetic sound,
with constant MIDI velocity all the way through.
abcinput with crude dynamics
A quick hack of the input file which adds the dynamics as
handled by abc2midi-1.5.7. This sounds more like Beethoven
intended, but still lacks lots of dynamic information. My
preference is that the dynamics be handled in some other way
than this in-the-melody-line notation.
MIDI output from abc2midi-1.5.7
7 minutes and 12 seconds of synthetic sound, with MIDI
velocity adjusted using the new features. If your MIDI card
only supports 16 notes at a time (as my SB16) you'll
definitely hear the premature cutoffs of some voices during
the busier sections of the music.
PostScript output from abc2ps-1.3.2
Note the cool bar numbering. Parts are not combined into
single staves, so it overfills the pages.
Adobe PDF output from above PS
Converted from PS to PDF by Aladdin GhostScript.
(about 1 Mbyte)
PostScript output from abcm2ps-0.9.5
All I can say is "wow". Look at the numbering of the measures
at the beginning of each staff.
The final voice is a duplicate for MIDI only,
but there's no way to prevent typesetting.
Adobe PDF output from above PS
Converted from PS to PDF by Aladdin GhostScript.
(about 1 Mbyte)
Remarks about syntax differences and other things
slurred staccato (portato) notes
e.g., where the input code reads
to indicate a particular bowing or tongueing effect
typesets this very nicely. abc2midi interprets these as
staccatos, which is arguable, but about the best thing it can
do without actually changing to MIDI patches with samples of
the different playing style for the duration of such notes.
clef designations and transposition
Whereas the same syntax is acceptable to the latest version
of both programs, the semantics are not identical.
This is still too experimental to expect standardization,
and I still don't think we know what we ultimately want.
This is complicated by the ability of abc2midi to transpose,
and by the fact that different MIDI implementations choose
different octave shifts for their instruments.
abbreviation of repetitive rests in tacit stretches
It would be nice not to require indefinite numbers of bars
containing nothing more than
z4, and to have
conventions for not typesetting null staves.
ties with chords
abc2midi emits text indicating it is not completely happy with
my syntax -- but the full implications of the syntax are
not entirely clear.
abc2ps accepts code such as
(A (B) C) indicating a slur from A to B and another
from B to C.
abc2midi warns this as a nested slur.
abc typesetting apps and WYSIWYG editors need bar numbering
This becomes painfully obvious as soon as you contemplate
communicating with anyone else about this score. This
probably requires ways to control and reset the numbering
scheme. See that abcm2ps has made a first effort at
providing this feature.
The typeset instrumental voices are not labelled.
available as of abc2ps-1.3.1
Tuplets and slurs
The abc notation for tuplets uses unmatched
parentheses. Slurs use matched parens. The combination
of triplets and slurs in this movement make for a syntax
which is pretty nearly impossible to verify by eye.
There are some sections where the strings do measured
tremolos, sometimes with chords. The abc
notation lacks this and, as a result, is awkwardly verbose.
While we're fixing this, we should also think up a notation for
I've attempted to indicate how dynamics might be transcribed
by making use of the
w: convention of abc2ps.
This uses a syntax of
characters which abc2ps naturally does not typeset in the
desired fashion, and I do not seriously propose that the
particular tokens I've used are workable -- this is purely for
I do believe that the dynamics should not be inline with the
music but on a separate lyrics-like line.
The transcription of dynamics is now complete, but it remains
to be seen how an audio playback application might ever be
able to make use of such directives.
abc2midi is doing an excellent job of producing output.
Nonetheless, professional musicians (indeed, amateur
musicians) have nothing to fear from this technology at this
General MIDI conformance
The MIDI programs (instrumental voices) used should produce
correct sound on any device that conforms to General MIDI, but
beware that different MIDI implementations may have octave shifts
for some of their instruments. Also beware that some MIDI
implementations can only produce 16 notes at a time, and in
some of the busier stretches of this movement that may cause
premature termination of some of the notes as others take
combining voices for typesetting
Traditional musical scores combine two or three instruments on
one staff. The original appearance of the score that I'm working
from cannot be achieved without this ability (not even by
abcm2ps can create output where the pairs of instrumental
parts are combined onto single staves, and the appearance of
this much more nearly matches the original score sheets.
abcm2ps-0.9.5 does the job.
combining voices for MIDI
The 16 channel limit of MIDI means that only 16 distinct
instruments can be playing simultaneously; and with General
MIDI's consumption of channel 10 for percussion this is
reduced to 15 instruments. This is a pain.
abc2midi does provide the mechanisms to assign each
abc voice to a particular channel, but the MIDI
control commands must be issued in a particular order to do
the job exactly right.
In the fully general case it will be necessary for the MIDI
output to be broken into separate files, each using no more
than 16 channels, which will be combined later by professional
MIDI gear that can bypass the limitation of the MIDI file
Such MIDI files will probably not be conformant with General
MIDI so they will probably require manual tweaking before they
can be played back, but high-end MIDI users are accustomed to
The abc input file is about 143600 bytes, and
this reduces to 60100 bytes if the unnecessary spaces are
removed. The MIDI output is about 84600 bytes. This means that
abc notation is about as dense as MIDI, yet
abc is human-readable and e-mailable. I doubt
that any other musical notation language can make such a
The music industry is the original patron of almost all
intellectual property rights law.
The technology used in this demonstration accelerates the
collision course between hobbyist afficionados and lawyers of
This Beethoven piece is in the public domain, and
I can only urge others to proceed with due caution when
attempting similar transcriptions of more recent works.
Thanks go to De Clarke for providing the original sheet music, for
proofreading, and also for using professional MIDI gear to produce
audio output far surpassing my pitiful SoundBlaster 16. I wish I
could export her stereo mix (produced using Proteus sample players) in
Thanks also to
and thanks to all the other abc developers and users
who have contributed ideas and test implementations.
for inventing abc and popularizing it so well
for inventing the multi-voice notation in abc and
because abc2midi produced excellent output a priori,
which only improved in response to the challenge of
for doing such an excellent job with abc2ps, and improving it
also in response to this input
for confirming my vision of the capabilities of
abc when he expressed the sentiment that he would
love to touch-type a symphony
for demonstrating that multiple voices on one staff is
within reach of current abc apps, thus priming
me for this effort
More general information about abc.
This work is licensed under a Creative Commons License.
Steve Allen <email@example.com>
Initial deployment: 1998-06-21