Class PART

A PART object represents a written part in the score. They are analogous to tracks in a MIDI sequencer or staves in any notation program, though a part may actually represent more than one staff for instruments that require it. PART objects are containers for NOTE, REST and MARK objects (and optionally TIMESIG and KEYSIG object if they only apply to that particular part). Each PART object also specifies an INSTR object which contains specific information on how to notate a particular instrument.

PART objects are passed to FOMUS by including them in the PARTS list.

Constructor: (MAKE-PART &key :ID id :PARTID partid :NAME name :ABBREV abbrev :INSTR instr :EVENTS events :PROPS props :OPTS opts)

Copy Function: (COPY-PART part &key :ID id :PARTID partid :NAME name :ABBREV abbrev :INSTR instr :EVENTS events :PROPS props :OPTS opts)

Predicate Function: (PARTP obj)



This slot isn't used by FOMUS. The user may use it to store an ID value or some miscellaneous data.


This is a symbol or number used as an index or reference to identify the part. It doesn't need to be unique--parts that share the same ID symbol are treated as a group. When they appear in PARTID or PARTIDS slots in classes other than the PART class they are treated as references to a particular part or group of parts.


This is a string value representing the part name that is to appear on the score.


This is a string value representing the abbreviated part name that is to appear on the score.


This slot specifies an instrument for the part. All part must be associated with an instrument--if no instrument is given a generic default instrument will be chosen. Instruments provide important data for many of FOMUS's algorithms and determine at least several major aspects of score layout, including the number of staves a part has and whether or not pitches are to be transposed.

Instruments may be specified in one of several ways. If a symbol is provided, it is used to lookup an instrument in a user-defined list or FOMUS's own predefined list of instruments (see the INSTR-GROUPS setting in the Settings chapter). The slot may also contain an instance of an instrument object. If a list is given, FOMUS expects the first element to be a lookup symbol for an instrument and the rest of the list to be keyword/argument pairs specifying slots that are to be modified in the original instrument (as if included in a call to COPY-INSTR.

Example 4.1. PART-INSTR Slot Setting

'(:piano :staves 3 :simultlim 6)

If an integer from 0 to 127 is provided instead of an identifying symbol, FOMUS interprets this as a MIDI program change number and will use the first instrument it finds that has this number in its MIDIPRGCH-IM slot.


This is a list of NOTE, REST or MARK objects. TIMESIG and KEYSIG objects may also be included in this list.


Part properties are specified in the same way that MARKS are specified. They are settings that affect only the part they are included in. See PART Properties for a list of these.


This is a keyword/argument pair list specifying options to be passed directly to the backend algorithms. Each backend has its own set of options that may be specified alongside options for any other backend. See the Outputs for more information.