A Complete Scorefile

At this point, let's take a look at a complete simple scorefile:

part soprano; 		
soprano synthPatch:"Fm1vi" synthPatchCount:4;	

/* BEGIN Specifies the end of the header and beginning of the body. */
BEGIN;
t 0; 		
soprano (2) freq:c4; 		
t 1; 		
soprano (2) freq:d4; 		
t +1; 		
soprano (2) freq:e4;

This plays three overlapping notes, each with a duration of 2. The 2 is not given a parameter keyword. Instead it appears in a special place surrounded by parentheses. The reason for this will be explained later. Notice that unlike in the classical note-list, the onset time appears outside of the note in a separate “time statement”. This allows chords to be more easily recognized visually.

Time may be specified relatively or absolutely. In the example above, the first two time statements specify absolute time, while the third specifies relative time. A relative time statement advances time from its previous value by the amount specified. Use of relative time makes it easy to “cut and paste” sections from one scorefile to another. On the other hand, use of absolute time makes it easy to know where you are in a scorefile. Since both are handy, we provide both.

Durations and times are in beats, interpreted relative to a tempo. The tempo is specified in a special header note that contains parameters that affect the whole score. This note is called a “score info” or simply info:

info samplingRate:44100 tempo:84;