currentMusicalValue property
double
get
currentMusicalValue
calculateTestes the total current rhythmic value of elements in the measure.
Implementation
double get currentMusicalValue {
double total = 0.0;
for (final element in elements) {
if (element is Note) {
total += element.duration.realValue;
} else if (element is Rest) {
total += element.duration.realValue;
} else if (element.runtimeType.toString() == 'Chord') {
// Use reflection to avoid circular imports
final dynamic chord = element;
if (chord.duration != null) {
total += chord.duration.realValue;
}
} else if (element.runtimeType.toString() == 'Tuplet') {
// calculateTeste the tuplet value based on its ratio
final dynamic tuplet = element;
double tupletValue = 0.0;
// Sum the duration of all notes in the tuplet
for (final tupletElement in tuplet.elements) {
if (tupletElement is Note) {
tupletValue += tupletElement.duration.realValue;
} else if (tupletElement.runtimeType.toString() == 'Chord') {
final dynamic chord = tupletElement;
if (chord.duration != null) {
tupletValue += chord.duration.realValue;
}
}
}
// Apply the tuplet ratio (normalNotes / actualNotes)
if (tuplet.actualNotes > 0) {
tupletValue = tupletValue * (tuplet.normalNotes / tuplet.actualNotes);
}
total += tupletValue;
}
}
return total;
}