Objects with times and durations are referred to in this documentation as “events.” There are four types of events in FOMUS: notes, rests, marks and measures. Note and rest events represent notes that appear in the score while mark events represent articulations, dynamics and other markings. A measure event specifically represent the first measure in which some change occurs at the metrical level (e.g., a key signature change, time signature change, or double barline).
All events have
Times and durations are expressed in what is referred to in this documentation as “beats,” a unit which is (mostly) unassociated with
rhythmic spelling until after FOMUS has finished processing everything.
One beat represents a consistent unit of time irrespective of time signature, metronome markings or any other notational convention.
The first time point in a score is always 0 (i.e., there are no negative time values).
Measures have a time and duration like any other event type and aren't defined using time signatures. A measure defined with a duration of 2, for example, occupies 2 beats regardless of whether it's a 2/4 or 4/8 measure or whether a beat is notated as a quarter note or an eighth note. It is possible to specify time signatures if desired, though this is slightly less flexible. By defining measures in terms of duration you can easily change time signatures, rhythmic spellings, and even manipulate the layout of measures in the score while leaving the essential musical information (the relative times and durations) intact.
Each frontend has a unique way of defining events along with their arguments.
In .fms files all of the arguments are given as lists of parameters and values (see Tutorial).
In CM, they can appear in processes and are sent to FOMUS like other scheduled events (a floating point time stamp is added automatically).
In Pure Data, note events are sent by creating a
fomus instance, passing parameters to the appropriate inlets and passing a
bang message to the leftmost inlet to send the note event.
A complete list of FOMUS's events are given here:
meas-beatdivsetting. If the measure contains the
measdursetting, then the duration is ignored and the value for
measduris used instead (this allows you to fix the measure's duration in a
measdefdefinition). The time signature is determined either by lists of time signatures that you provide (FOMUS chooses the first valid time signature it finds from the
timesigssetting) or by calculating it from the
timesig-densetting. If a time signature is explicitly specified using the
timesigsetting then the duration is ignored (and recalculated according to
timesigand the value of
measdefobject that it is associated with. Due to the way
measdefobjects are implemented, you cannot define a measure that contains a
measdefand add additional settings on top of that.
By default, measures are assigned to all parts when they are created.
To assign a measure to only a subset of parts (to create polymeters, for example), use the
tuplet-symbols. These symbols are there for convenience but can also be misleading since they are mapped directly to numbers and don't necessarily reflect what appears in the output. Changing the value of the setting
beat, for example, would cause a discrepancy between the symbols and the rhythmic spellings that result.
If the duration is equal to zero, then FOMUS chooses a duration that is easy to read and doesn't involve a tie.
This is appropriate for percussion attacks and certain techniques like pizzicato strings where the release occurs immediately after the attack.
In .fms files there are also
+ (“fill forward”) and
- (“fill backwards”) symbols that are instructions for FOMUS to extend the
duration up to the next (or previous)
event in the same voice.
note-octavessettings. Percussion instrument IDs only have meaning when used in parts with instruments that contain
Floating point and non-integers are quantized according to the value of the
dyn-rangesettings. If the
dynssetting is set to ‘yes’, dynamic values are translated to dynamic text symbols and crescendo/diminuendo wedges. If
dynsis ‘no’, this value is ignored.
Some marks come in begin/end pairs and are referred to as spanners. If a begin spanner mark is given but no end mark is given, FOMUS assumes that the end is at the beginning of the next spanner mark (or the end of the score). The opposite is also true—if an end mark is missing a begin mark, FOMUS assumes the beginning occurs right after the last end.
Many marks take an optional string or number parameter that alters how the mark is processed or specifies some text to appear in the score.
Some marks also come in pairs (like
arco) or in groups (like
mf, etc.) so that FOMUS
can sort them out and make sure they appear correctly in the score.
detachis set to ‘yes’.
rightoffer precise control over which note events are affected.
If a mark event contains a begin mark, this is only applied to a note or notes at the beginning of the mark event. End marks are similarly applied only to notes at the end time of the mark event. All other marks (i.e., non-spanner marks) are applied to every note that falls within the range of the mark event.
As mentioned above, a few spanner marks (like crescendo/decrescendo wedges) are unattached to any note events if
detach is set to ‘yes’.
This is accomplished by creating an invisible voice full of rests in the score and placing the marks in this voice.
A diagram of how FOMUS's objects contain or reference each other is shown below.
This shows, for example, that a part “contains” an instrument (or references one) while a measure contains notes, rests and marks.