Before diving into the details of the Score Description Language, we will give an example of a score fragment in traditional and SDL notation. Figure (removed due to latex2html problems) is the traditional notation for the first phrase of Bach's realization of the chorale O Welt, ich muss dich lassen [1, 205]. Figure 4.1 is the SDL notation for the same phrase.
Table 4.1 shows the syntax (in Backus-Naur Form) for the score description language. The definitions of the elements Integer and Real is not repeated here since they are defined conventionally.
| Score | ::= | NumParts Tempo System* |
|---|---|---|
| NumParts | ::= | Integer |
| Tempo | ::= | Real |
| System | ::= | Part* ; |
| Part | ::= | PartNum Event* |
| PartNum | ::= | Integer |
| Event | ::= | Note | Rest |
| Rest | ::= | Duration |
| Note | ::= | Duration , Pitch , Intonation |
| Duration | ::= | t | T | s | S | e | E | q | Q | h | H | w | W |
| Pitch | ::= | Letter Accidental* Register |
| Letter | ::= | A | B | C | D | E | F | G |
| Accidental | ::= | b | # |
| Register | ::= | Integer |
| Intonation | ::= | Integer | _ |
We will define the semantics of this language by explaining the rather
simple manner in which it corresponds to traditional notation.
A Score is a score for NumParts monophonic parts, at
Tempo quarter notes per minute. A System has no
musical meaning; it is merely a syntactic convenience to break up the
input into short lines. Each Part consists of sequential
events, each of which has a Duration. A Part with
PartNum not between 0 and
inclusive is ignored.
A Duration can have the following values: thirty-second, sixteenth, eighth, quarter, half, whole. These are indicated by the first letter of their name. A Duration can be ``dotted'' by using the capitalized version of the base duration. For example a dotted eighth is indicated by `E' and a normal eighth by `e.' A Rest consists solely of a Duration, but a Note has a Pitch and an Intonation annotation.
A Pitch is indicated in the same manner used throughout this
work, except that, due to the constraints of the ASCII character set,
the flat sign (
) is replaced by a lowercase bee (`b').
Intonation can be an integer, indicating a subscript to be
used in just triadic tuning, or it can be an underscore
(`_'), indicating 12TET. Thus the example in Figure
4.1 starts in 12TET and switches to just triadic tuning.
This language is bare-bones; for example, there are no provisions for bar lines, slurs, articulations, or dynamics. Nonetheless, it does provide enough information for simple MIDI file realizations and score following of a piece.