Как рассчитать длительность символов нотного листа в файле Midi

Я хочу делать музыку на языке программирования. но я не знаю, как рассчитать продолжительность символов нотного листа по вниманию к темпу и тактовому размеру .

Меня это смутило, потому что все объясняют это по-разному.

Неважно, какой у вас путь, я просто надеюсь, что он не зависит от программного обеспечения.

Примечание. Я использую миди-файл для сохранения своих данных и использую библиотеку javascript для чтения и записи в миди-файл.

может быть, взгляните на этот пост

Ответы (3)

Темп - это тип частоты.
Отметка темпа указывает значение ноты доли и количество ударов в минуту (BPM).

Продолжительность (время) обратно пропорциональна частоте.
Таким образом, вам просто нужно взять инверсию темпа, чтобы найти продолжительность такта.
(Но я предполагаю, что вы захотите измерять продолжительность в секундах, а не в минутах, поэтому вам придется преобразовать единицы измерения.)

Простой пример

Если метка темпа представляет собой quarter-note = 120, это означает, что продолжительность удара будет:
1 / 120 BPM
= 1 minuet / 120 beats [ x 60 seconds / minute ]
= 0.5 seconds / beat

Общая продолжительность такта 3/4( 3 доли в такте, каждая со значением четвертной ноты ) будет:
3 beats x 0.5 seconds / beat
= 1.5 seconds

тогда как общая продолжительность такта 4/4будет:
4 beats x 0.5 seconds / beat
= 2 seconds

Составной пример

Если метка темпа представляет собой dotted-quarter-note = 60, продолжительность удара будет:
1 / 60 BPM
= 1 minuet / 60 beats
= 1 seconds / beat

Общая продолжительность такта 6/8( 6 импульсов на такт, каждый со значением восьмой ноты, АКА 2 удара на такт, каждый со значением четвертной ноты с точкой) будет :
2 beats x 1 seconds / beat
= 2 seconds

Иногда отметка темпа составного тактового размера указывает значение ноты импульса (вместо доли) и количество импульсов, которые происходят в минуту (PPM).

Если метка темпа представляет собой eighth-note = 180, длительность каждого импульса будет:
1 / 180 PPM
= 1 minuet / 180 pulses
= (1/3) seconds / pulse

Длительность бара 6/8будет:
6 pulses x 1/3 seconds / pulse
= 2 seconds

Я думаю, что это мне не помогает, но ваш ответ по этой ссылке замечательный. но я был очень смущен тем, как вы выбрали количество тактов в этой формуле «время в секундах» = 60 x «верхнее число простого тактового размера» x «такты» / «BPM». Могу ли я выбрать любое количество тактов, которое я хочу для баров?
@ asmanp2012 Этот вопрос касался продолжительности бара. Я сделал количество баров переменной, сначала я назвал эту переменную "bars", потом я назвал ее "N". Если вы хотите рассчитать продолжительность только 1 такта, тогда «N» = 1. Но если вы хотите найти продолжительность более чем одного бара, тогда «N» — это любое количество баров, которое вы хотите.
Например, если ваше музыкальное произведение в размере 4/4 с BPM 120, то один такт будет иметь продолжительность: 60 x 4 x 1/120 = 2 секунды. Если пьеса состоит из 24 тактов, то вся пьеса будет иметь продолжительность: 60 x 4 x 24 / 120 = 48 секунд.

Это зависит от программного обеспечения :). Точнее, синхронизация в файле Midi измеряется в тактах MIDI, а заголовок определяет, сколько тактов MIDI составляют четвертную ноту MIDI (если только не объявлено использование временных кодов SMPTE для синхронизации MIDI).

Когда MIDI- события относятся к длительности, это обычно делается в терминах MIDI-тактов, с 24 MIDI-тактами на четвертную ноту MIDI и музыкальным размером четвертной ноты MIDI, установленным с помощью метасобытий Time Signature (в терминах нотированных 32-х нот на четвертную ноту MIDI). , поэтому обычно 8), в то время как синхронизация устанавливается с помощью метасобытий Set Tempo (в микросекундах на четверть ноты MIDI).

Я знаю про тик и пользуюсь им. но я не знаю, сколько ударов в размере 3/4 или 6/8 в том же темпе. @user83206

Я понимаю это. Неважно, как долго доля и продолжительность доли зависят от темпа и не меняются в зависимости от тактового размера.

для вычисления символов нотного листа мы должны обратить внимание на знаменатель .

denominatorэквивалентно whole note. например:

  1. если denominator was 6то whole note equivalent 6 beat.
  2. если denominator was 4то whole note equivalent 4 beat.
Число в нижней части тактового размера (знаменатель) всегда будет степенью 2 (т.е. 2, 4, 8, 16, ...). Вы имеете в виду числитель?
именно я ссылаюсь на знаменатель . потому что знаменатель указывает, сколько ударов есть во всей ноте. Я использую это, и оно работает со всем программным обеспечением DWA. @ElementsinSpace