staves {staff}* [Macro]

Returns a list of staff descriptions for use with CMN output streams. Each staff is a list defining the overall characteristics for a CMN staff to be drawn:

(objects &key :name :clef :meter :recursive)

Objects are the Lisp objects that the stream's staffer function will hash on to return the actual CMN staff. If staffing is done by container (the default) then objects should be the symbolic names of the containers to group in the staff. If staffing by midi channel, objects should be the midi channel numbers (0 to 15) to include in the staff. For convenience, objects may be specified as a non-list if there is only one object for the staff.

Following objects comes optional keyword arguments:

:name {string}
The print name of the staff. Defaults to the printed representation of objects, if possible, or an auto-generated label if not.
:clef {symbol | (symbols)}
The clef or clefs that CMN should use when drawing data. If more than one clef is specified the first clef is the main clef and the rest are clefs that CMN is allowed to choose from when positioning data in the staff. If :clef is both then staff data will be drawn in short score (two staves, treble and bass). If :clef is omitted, CMN does whatever it thinks best.
:meter {number}
is the meter that CMN should use when drawing data. If omitted, data will be drawn without meter or bar lines. To specify a meter that applies to all staves, initialize the stream's meter slot using Stella's Open command.
:recursive {t | nil}
If true, sub-containers (if any) of each container specified in objects are automatically processed in the same staff. The default value is nil.

Example:

;;; Channel staffing, 0 to treble, 1 to bass or tenor
? (staves (0 :clef treble) (1 :clef (bass tenor)))

;;; container staffing, Foo and Bar in short score
? (staves ((foo bar) :clef both :name "Piano"))

See Also:

Working with CMN


Last Modified: 5-Mar-1998