В основе MIDI лежит представление музыки в виде отдельных нотных событий, каждое из которых имеет статическую высоту звука. Это идеально подходит для представления музыки, исполняемой на клавишных инструментах. Вы можете преобразовать любую частоту, соответствующую ноте на темперированной шкале, в номер ноты MIDI, используя:
69+12×log2frequency440
Предполагается, что MIDI-приемник откалиброван на А4 = 440 Гц.
Это представление хорошо для фортепианной музыки, но проблема заключается в том, как представлять высоты звука, которые не отображаются в темперированном масштабе (не западная музыка, не музыкальные звуки), и как представлять изменения высоты звука в течение длительности ноты (глиссандо, вибрато).
Это делается в MIDI с помощью «сообщений изменения высоты звука», которые инструктируют синтезатор смещать высоту звучания текущей воспроизводимой ноты на небольшой интервал. Большинство синтезаторов калибруются по умолчанию для +/- 2 полутонов по всему диапазону сообщений об изменении высоты звука (0 .. 16383). 8192 соответствует отсутствию изгиба основного тона - излучаемый шаг в точности соответствует значению ноты. Отображение между значением основного тона и коэффициентом сдвига частоты определяется как:
femitted_notefnote_message=2pitchbend−81924096×12
Таким образом, вы можете получить частоту ноты, которую играет синтезатор, по следующей формуле:
440×2note−6912.0+pitchbend−81924096×12
Где note - это 7-битный номер ноты MIDI последнего полученного сообщения Note On ; и pitchbend является 14- битным значением последнего принятого сообщения Pitch Bend . Синтезатор запускается с регистром изменения высоты тона, установленным на 8192, и это значение также сбрасывается во время приема сообщения «Сброс всех контроллеров».
Давайте возьмем следующий пример. Вы хотите выразить трель флейты со следующей траекторией частоты: 500 Гц, 510 Гц, 500 Гц, как сообщения MIDI.
Номер основной ноты:
round(69+12×log2(500/440))=71
Таким образом, вы отправляете сообщение «note on» с примечанием #, равным 71. Это эквивалентно шагу:
440×2(71−69)/12=493.88
Который является ближайшим шагом по умеренной шкале. Вам необходимо отправить сообщение об изменении высоты тона, чтобы увеличить высоту тона в:
500493.88=1.0124
И получи свои 500 Гц. Соответствующее значение высоты тона:
round(8192+4096×12×log21.0124)=9065
Чтобы получить 510 Гц, значение высоты тона будет:
round(8192+4096×12×log2510493.88)=10469
Таким образом, ваша последовательность MIDI-сообщений для 500, 510, 500 Гц будет:
- ПРИМЕЧАНИЕ 71
- PITCH BEND 9065
- ...
- PITCH BEND 10469
- ...
- PITCH BEND 9065
Вы можете думать о номере ноты MIDI как о «неотъемлемой» части высоты тона; и изгиб основного тона в качестве избыточной «дробной» части основного тона.
autocorrelate
, которая мне кажется, что это MIDI Note, который выводится. Заметьтеmidi2pitch
массив в формуле? Если я прав, это означает, что у меня все еще нетbend
значения или фактического значения высоты тона, чтобы оценить значение изгиба, и нет никакого способа получить их, если у меня нет файла MIDI. Простой случай, когда слишком много переменных и слишком мало уравнений. Как мне оценить изгиб, фактическое значение шага иvelocity
в этом случае?MIDI - это протокол, который позволяет (в первую очередь) синтезаторам управлять или управляться другими синтезаторами или компьютерами.
Это последовательный протокол, который позволяет обмениваться сообщениями, такими как «клавиша C1 вверх», клавиша D4 вниз »,« клавиша скорости »,« изменение звука »и т. Д. Многие контроллеры имеют« колесо тангажа », которое является джойстиком или колесом модуляции am. игрок может в интерактивном режиме изменять высоту текущей воспроизводимой ноты, чтобы вручную создавать вибрато или непрерывно «скользить» от одной ноты к другой. Как это часто делают гитаристы, сгибая струнную струну левой рукой, ее часто называют изменение высоты тона и, следовательно, название.
MIDI-сообщение об изменении высоты звука - это способ сообщить, какое смещение высоты звука должно произойти в любой данный момент времени. Предполагается, что синтезатор (программный или аппаратный), получающий сообщение об изменении высоты звука, изменяет высоту всех текущих нот, проигрываемых на заданную величину.
У сообщения контроллера есть аргумент, который идет от -8192 до 8191, и в стандартных файлах MIDI это должно охватывать диапазон от -200 центов до 200 центов, где 1 цент равен 1/100 полутона, то есть отношение 2 ^ ( 1/1200) = 1.000577789506555. Пример: чтобы создать сдвиг высоты тона вниз, чтобы получить 93% от номинальной частоты, значение контроллера будет
или -5146 в этом случае. 0,93 - требуемое соотношение, 12 - число полутонов на октаву, 2 - максимальный диапазон изменения высоты звука (в данном случае 200 центов или 2 полутона), а log2 () - логарифм с базисом 2.
Однако в большинстве синтезаторов диапазон настраивается, и, вероятно, не стоит полагать, что все синтезаторы ведут себя одинаково.
Вот диаграмма конверсии, которая может помочь. http://www.elvenminstrel.com/music/tuning/reference/pitchbends.shtml
источник