Class TIMESIG
Prev | Chapter 4. Objects | Next

## 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). Different beat values have an effect on how measures are divided and laid out, so they should be chosen to influence these things.

`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.

Prev | Up | Next
Class PART | Home | Class TIMESIG-REPL