Найдите время (в секундах), потраченное на воспроизведение заметки в файле 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>
- Вы не обязаны поддерживать туплетов.
Все может стать значительно сложнее, но я бы рекомендовал сначала поработать с этим частным случаем.