NEXT MusicKit ScoreFile Language

ScoreFile [NeXT, 1990] is a musical score language included in the already commented Music Kit from NeXT Computer Inc. (see section 2.4). A NeXT ScoreFile is a regular ASCII text file that can be edited with any text editor.

A ScoreFile is divided in two sections: the Header and the Body. These two parts are divided by the reserved word BEGIN, and the file ends when the END word or and EOF (regular end-of-file) is found.

The Header is made up of different kinds of statements: Score Information Statements, Part Statements, Part Information Declarations, and Range Statements. Score Information Statements are used to assign values to global score parameters such as tempo or sampling rate. Part Statements declare the names of the parts that will be used throughout the score. Part Information Statements are made up of the previously declared name and a collection of parameters. And finally, Range Statements allow to define note ranges.

The Body consists on a sequence of time-ordered statements. These statements are usually Temporal Statements or Note Statements. Temporal Statements specify a particular moment in which all the following Note Statements will take place until the next Temporal Statement is received. They use the following syntax:


Where the reserved word ``t'' means the current time in musical notation (0.0 at the beginning of the score). If the ``+'' sign is included, current time is increased by the expression value, else it will directly be assigned the value.

Every time a Note Statement is read, a ``note object'' is created. A Note Statement is made up of the name of the part where it belongs, a type and name declaration, and a list of parameters.

Finally, there are some Statements that can be included both in the Header or the Body. These are: Variable Declaration and Assignments, Envelope Statements, WaveTable Statements, Object Statements, Include Statements, Printing Statements, Tuning Statements, and Comment Statements. Variable declaration and assignments follow syntax conventions of C language. The available variable types are: double, int, string, env (envelopes), wave, object, var (generic variable that can be of any type). Envelope Statements allow to declare envelopes from a list of points and a smoothing value. In the same way, WaveTable Statements are used to declare a wave table from a list of partials with their frequency, amplitude and (optionally) phase. Object Statements allow to add any kind of user-defined object. Include Statements are useful to include other scores into the current one while Print Statements include control statements to use when printing out the document. Tuning Statements are used for defining scales other than the temperate twelve tone scale that is used by default.

The ScoreFile language has a number of operators for those statements that need to use them in an expression. These operators include the arithmetic ones plus a special list that adds dB computation, pitch transposition or envelope computation.