Найдите время (в секундах), потраченное на воспроизведение заметки в файле musicxml

У меня есть заметка, как

<note default-x="106.96" default-y="-25.00">
    <pitch>
      <step>A</step>
      <octave>3</octave>
    </pitch>
    <duration>2</duration>
    <voice>1</voice>
    <type>eighth</type>
    <stem>up</stem>
    <staff>1</staff>
    <beam number="1">begin</beam>
</note>

Как я могу найти время, потраченное на его воспроизведение (в секундах), если tempo знак равно 120bpm?

1 ответ

Создайте таблицу следующим образом:

durationHashTable = {
{ "whole", 4.0 },
{ "half", 2.0 },
{ "quarter", 1.0 },
{ "eighth", 0.5 },
{ "16th", 0.25 } }

Тогда формула имеет вид:

noteDurationSeconds = ( 60.0 / beatsPerMinute ) * durationHashTable["eighth"];

Это для особого, простого случая, когда

  • заметки не пунктирные
  • время подписи имеет <beat-type>4</beat-type>
  • Вы не обязаны поддерживать туплетов.

Все может стать значительно сложнее, но я бы рекомендовал сначала поработать с этим частным случаем.

Другие вопросы по тегам