Measure class
Represents a single bar of music containing an ordered list of MusicalElements.
Use add to append elements. When a TimeSignature is present (or inherited from a previous measure) the add method enforces capacity: adding a note that would exceed the bar's rhythmic value throws a MeasureCapacityException.
Capacity is voice aware. A bar is full when a single voice fills it,
not when the sum of every voice does: in polyphonic music each voice runs
in parallel and independently spans the whole bar. Elements are grouped by
Note.voice / Chord.voice (null means voice defaultVoice) and the
rhythmic value of the measure is the maximum of the per-voice sums —
see musicalValueByVoice and musicalValueOfVoice.
Example:
final measure = Measure()
..add(TimeSignature(numerator: 4, denominator: 4))
..add(Note(pitch: const Pitch(step: 'C', octave: 4),
duration: const Duration(DurationType.whole)));
Two-voice example (both voices legally fill the same 4/4 bar):
final measure = Measure()..add(TimeSignature(numerator: 4, denominator: 4));
for (var i = 0; i < 4; i++) {
measure.add(Note(pitch: soprano, duration: quarter, voice: 1));
}
for (var i = 0; i < 4; i++) {
measure.add(Note(pitch: bass, duration: quarter, voice: 2));
}
Subclasses that store elements elsewhere (such as MultiVoiceMeasure,
which keeps its content inside Voice objects) override
musicalValueByVoice and allElements; iterate a measure through
allElements to stay correct for every subclass.
- Implementers
Constructors
-
Measure({bool autoBeaming = true, BeamingMode beamingMode = BeamingMode.automatic, List<
List< manualBeamGroups = const [], TimeSignature? inheritedTimeSignature, int? number})int> > - Creates a new Measure.
Properties
-
allElements
→ Iterable<
MusicalElement> -
All the elements of this measure as a single stream.
no setter
- autoBeaming ↔ bool
-
Controls whether notes should be automatically grouped with beams.
true = auto-beaming active (default)
false = use individual flags
getter/setter pair
- beamingMode ↔ BeamingMode
-
Specific beaming strategy for special cases.
getter/setter pair
- currentMusicalValue → double
-
The current rhythmic value of the measure.
no setter
-
elements
→ List<
MusicalElement> -
All musical elements in this measure, in order.
final
- hashCode → int
-
The hash code for this object.
no setterinherited
- inheritedTimeSignature ↔ TimeSignature?
-
A meter this bar inherits from an earlier one, so that add can enforce
capacity on a bar that declares no TimeSignature of its own.
getter/setter pair
- isValidlyFilled → bool
-
Returns true if the measure is correctly filled.
no setter
-
manualBeamGroups
↔ List<
List< int> > -
Manual beam groups — list of note index groups to be beamed together.
Example: [
0, 1, 2,3, 4] groups notes 0,1,2 into one beam and 3,4 into another.getter/setter pair -
musicalValueByVoice
→ Map<
int, double> -
Rhythmic value written in each voice of this measure, keyed by voice
number.
no setter
- number ↔ int?
-
Measure number, corresponding to the MEI
<measure @n>attribute. null = automatic numbering by the layout engine.getter/setter pair - remainingValue → double
-
Returns how much rhythmic time remains in the measure.
no setter
- runtimeType → Type
-
A representation of the runtime type of the object.
no setterinherited
- timeSignature → TimeSignature?
-
Returns the active time signature for this measure.
no setter
Methods
-
add(
MusicalElement element) → void - Adds a musical element to the measure.
-
canAddDuration(
Duration duration, {int voice = defaultVoice}) → bool -
Returns true if there is room to add
durationtovoice. -
musicalValueOfVoice(
int voice) → double -
Rhythmic value already written in
voice(0.0 when the voice is empty). -
noSuchMethod(
Invocation invocation) → dynamic -
Invoked when a nonexistent method or property is accessed.
inherited
-
toString(
) → String -
A string representation of this object.
inherited
Operators
-
operator ==(
Object other) → bool -
The equality operator.
inherited
Static Methods
-
musicalValueOf(
MusicalElement element) → double -
Calculates the rhythmic value occupied by
element. -
voiceNumberOf(
MusicalElement element) → int -
Returns the voice number
elementbelongs to.
Constants
- capacityTolerance → const double
- Tolerance used when comparing rhythmic values (floating-point safety).
- defaultVoice → const int
- Voice number attributed to elements that do not declare one.