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 time
and duration
parameters.
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
time
meas-beatdiv
setting.
duration
meas-beatdiv
setting. If the measure
contains the measdur
setting, then the duration is ignored and the value for measdur
is used instead
(this allows you to fix the measure's duration in a measdef
definition).
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 timesigs
setting)
or by calculating it from the timesig-den
setting. If a time signature is explicitly specified using the timesig
setting then the duration
is ignored (and recalculated according to timesig
and the value of beat
).
(+ settings)
measdef
object that it is associated with.
Due to the way meas
and measdef
objects are implemented, you cannot define a measure that contains a measdef
and 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 measparts
setting.
note
part
voice
time
grace
duration
dur-symbols
, dur-dots
, dur-tie
and 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.
pitch
note-symbols
,
note-accs
, note-microtones
and note-octaves
settings.
Percussion instrument IDs only have meaning when used in parts with instruments that contain percinst
objects.
Floating point and non-integers are quantized according to the value of the quartertones
setting.
dyn
dyn-range
settings.
If the dyns
setting is set to ‘yes’, dynamic values are translated to dynamic text symbols and crescendo/diminuendo wedges.
If dyns
is ‘no’, this value is ignored.
marks
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 pizz
and arco
) or in groups (like pp
, mp
, mf
, etc.) so that FOMUS
can sort them out and make sure they appear correctly in the score.
(+ settings)
rest
part
voice
time
grace
duration
marks
(+ settings)
mark
part
voice
time
grace
duration
marks
detach
is set to ‘yes’.
(+ settings)
left
and right
offer 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.