Class TIMESIG

A TIMESIG object indicates a time signature change in the score. They may also be used to indicate special barlines and a few other changes. FOMUS uses TIMESIG objects to determine where to place measures and how to format the events that appear in them. If new time signatures appear in the middle of a measure, FOMUS either splits the measure or expands it to a larger size depending on the values of AUTO-OVERRIDE-TIMESIGS and MIN-AUTO-TIMESIG-DUR.

Each time signature either specifies or implies a value that specifies what notational value is equivalent to 1 "beat" duration. FOMUS uses this value to determine how all durational events are notated and where they appear in the score. Unless otherwise indicated, all offsets and durations are expressed in beat units. See the BEAT slot for information on how to specify it.

Time signatures are passed to FOMUS by including them either in the GLOBAL list or the EVENTS slot list of a PART object. TIMESIG objects listed inside a part apply only to that part (unless the PARTIDS slot indicates otherwise). This method most likely won't be used. TIMESIG objects in the GLOBAL list affect parts according to the contents of their PARTIDS slot values. A symbol or list of symbols in the PARTIDS slot applies the time signature to the parts that match those symbols. A default PARTIDS slot value of NIL indicates that the time signature be applied to all parts that don't have any other time signature specified at that exact offset. This way you can specify that a certain TIMESIG object be applied to only several PART objects while another TIMESIG object by applied to all of the remaining parts.

Constructor: (MAKE-TIMESIG &key :ID id :PARTIDS partids :OFF off :TIME time :COMP comp :BEAT beat :DIV div :REPL repl :PROPS props)

Copy Function: (COPY-TIMESIG timesig &key :ID id :PARTIDS partids :OFF off :TIME time :COMP comp :BEAT beat :DIV div :REPL repl :PROPS props)

Predicate Function: (TIMESIGP obj)

Accessors:

OBJ-ID

This slot isn't used by FOMUS.

TIMESIG-PARTIDS

This is a reference to a particular part or group of parts. If the value of this slot is NIL, the time signature is applied to all parts that don't have some another TIMESIG object defined for them if this TIMESIG object is included in the GLOBAL list. If the TIMESIG object is in a PART object's EVENTS slot, the time signature is applied to the part. If the value is a symbol, number, or list of symbols or numbers, these values are used to lookup which part or parts the event belongs to.

TIMESIG-OFF

This is a number (real, ratio or integer) specifying the absolute position for the onset for this note. The offset is measured in "beats," which may indicate different notational positions depending on previous time signatures and what values are present in their BEAT slots. The number must be precise and "notatable" (floating point numbers are not recommended and values like 10/3 that don't occur on regular beat divisions are currently impossible for FOMUS to notate).

TIMESIG-TIME

This is a required list of two integers, specifying the numerator and denominator of the printed time signature.

TIMESIG-COMP

If this slot is set to T, indicates that the measure is a compound meter. FOMUS then derives the beat value from the denominator of the time signature. Setting this to T or NIL always overrides whatever default action is specified in the AUTO-TIMESIG-COMP setting.

TIMESIG-BEAT

The BEAT slot value determines how events are mapped from beat units to notational durations. It is a ratio that specifies what notational duration is equivalent to 1 beat. This duration is expressed as a fraction of a whole note (1/4, for example, specifies a quarter note, 1/2 specifies a half note, and 3/8 specifies three eight notes). If the time signature is a compound time signature, the value of this slot is ignored and the beat value is calculated from the denominator (for example, the beat value of a 12/8 signature is 3/8). If the slot contains the default value of NIL, the beat value is either the value of DEFAULT-BEAT or it is calculated from the denominator (a non-compound 4/8 or 7/8 time signature would have a beat value of 1/8). The beat value of a measure effects how notes are are divided and laid out.

TIMESIG-DIV

This is a single list or list of lists containing ratios or integers that add up to the total number of beats in a measure (as specified by either the TIME or BEAT slots). It represents all of the choices available for dividing up measures following this time signature. If the slot contains the default value of NIL, FOMUS looks up divisions first in a user-supplied table if one exists (see the DEFAULT-MEAS-DIVS setting) then in FOMUS's default table. A value usually only needs to be specified here if the user wants to force FOMUS to divide measures in a specific way rather than choosing between several choices. The following example shows what might be specified for a 7/8 meter:

Example 4.2. TIMESIG-DIV Slot Setting


'((4 3) (3 4))
                


As another example, setting the TIMESIG-DIV slot to '(1 1 1) in a 3/4 time signature forces FOMUS to beam measures in groups of 3 (the default is equivalent to a TIMESIG-DIV setting of '((2 1) (1 2)))/

TIMESIG-REPL

This is a list of TIMESIG or TIMESIG-REPL objects that are chosen to replace this TIMESIG object when FOMUS needs to change the length of a measure. This gives the user some control over how FOMUS fudges measures to make them fit. When FOMUS changes the length of a measure, it will look here first and then in the (not implemented yet) setting for a replacement that fits (has the correct number of beats). If none is found, FOMUS will create a new TIMESIG object from the current one, modifying the DIV slot by adding on extra beats if necessary.

TIMESIG-REPL objects are simply TIMESIG objects with missing OFF, PARTIDS and REPL slots, all of them unnecessary in this context. The use of these is optional. If TIMESIG objects are given, these slots are just ignored.

TIMESIG-PROPS

This slot behaves like the MARKS slot in NOTE or REST objects. Extra time signature or measure properties may be specified here. See FIXME for more details and the MARK class for an example of how to specify properties.