Class PART
Prev | Chapter 4. Objects | Next

## 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`)`

Accessors:

`OBJ-ID`

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

`PART-PARTID`

  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.

`PART-NAME`

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

`PART-ABBREV`

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

`PART-INSTR`

  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.

`PART-EVENTS`

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

`PART-PROPS`

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

`PART-OPTS`

  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.

Prev | Up | Next
Chapter 4. Objects | Home | Class TIMESIG