Parts Make Reorchestration Easier

In a classical note-list the first element in a note is a “hard-wired” instrument name. To change which instrument realizes a musical passage, every note in that passage must be changed. In contrast, a scorefile note begins with a part specification. A part is an abstract grouping of notes that are realized in a similar manner, e.g. with the same software instrument. Parts may contain chords and multiple polyphonic lines.

The mapping from part to software instrument is “soft-wired”. The instrument may be specified in the header of the scorefile as a parameter of a special note called the part info. Applications use the part info as a hint as to how to orchestrate the music. Different applications may behave differently. One application might ignore the software instrument specification and play the score via MIDI on an external synthesizer.

Tip

The Common Music System by Heinrich Taube has an analogous but subtly different notion of “part”. A MusicKit part is an ordered set of notes. A Common Music part is a part of a Lisp program that creates that set of notes. See the Common Music Manual [Taube], Introduction to Common Music [Jaffe, Taube] and the document “Creating Music with Common Music and the MusicKit” [Jaffe,Taube]].

Here's a sample scorefile header. First we declare a part, then we give it a part info:

/* This is a comment. */ 		
part soprano;              /* Part declaration.  */ 	
soprano synthPatch:"Fm1vi" synthPatchCount:4 midiChan:3;

This specifies that the soprano part use a synthPatch called “Fm1vi”. A synthPatch is a MusicKit software instrument that runs on the built-in DSP. In this case, the synthPatch is Fm1vi. This string stands for “frequency modulation with one modulator, vibrato, and using an interpolating oscillator”.

The parameter synthPatchCount may optionally be supplied to provide allocation information. In this case, we would like four synthpatches allocated to this part. If no such parameter is included, allocation is handled dynamically and automatically.

An application that plays the scorefile on MIDI uses the midiChan parameter to determine on which MIDI channel to send the notes in the part.