currentMusicalValue property

double get currentMusicalValue

Calcula o valor total atual das figuras musicais no compasso.

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') {
      // Usar reflexão para evitar import circular
      final dynamic chord = element;
      if (chord.duration != null) {
        total += chord.duration.realValue;
      }
    } else if (element.runtimeType.toString() == 'Tuplet') {
      // Calcular valor da quiáltera baseado na razão
      final dynamic tuplet = element;
      double tupletValue = 0.0;

      // Somar duração de todas as notas da quiáltera
      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;
          }
        }
      }

      // Aplicar a razão da quiáltera (normalNotes / actualNotes)
      if (tuplet.actualNotes > 0) {
        tupletValue = tupletValue * (tuplet.normalNotes / tuplet.actualNotes);
      }

      total += tupletValue;
    }
  }
  return total;
}