В основі MIDI лежить подання музики як дискретних подій нот, кожна з яких має статичний крок. Це ідеально підходить для представлення музики, що грається на клавіатурних інструментах. Ви можете перетворити будь-яку частоту, відповідну примітці за загартованою шкалою, в номер нотатки MIDI, використовуючи:
69 + 12 × лог2fr e qu e n c y440
За припущенням, що приймач MIDI відкалібрований для A4 = 440 Гц.
Це уявлення добре для фортепіанної музики, але проблема полягає в тому, як представити смоли, які не відображені в загартованому масштабі (не-західна музика, немузичні звуки), і як представити зміни тону протягом тривалості ноти (glissando, вібрато).
Це робиться в MIDI за допомогою "повідомлень про вигин висоти", які вказують синтезатору зміщувати крок поточно відтвореної ноти на невеликий інтервал. Більшість синтезаторів калібровані за замовчуванням для +/- 2 півтонів протягом діапазону повідомлень про вигин висоти (0 .. 16383). 8192 не відповідає згину кроку - випромінюваний крок відповідає рівню нотного значення. Відображення між значенням вигину висоти та коефіцієнтом зміщення частоти задається:
fe m i t t e d_ н о т еfn o t e _ m e s s a gе= 2p i t c h b e n d- 81924096 × 12
Таким чином, ви можете отримати частоту ноти, яку відтворює синтезатор, з наступної формули:
440 × 2н о т е - 6912,0+ p i t c h b e n d- 81924096 × 12
Де note - 7-бітний номер ноти MIDI останнього отриманого повідомлення Note On ; і pitchbend - це 14- бітове значення останнього отриманого повідомлення про вигин Pitch . Синтезатор починається зі свого регістра вигину висоти, встановленого на 8192, і це значення також скидається під час прийому повідомлення "Скинути всі контролери".
Візьмемо наступний приклад. Ви хочете виразити трелі флейти із такою траєкторією частоти: 500 Гц, 510 Гц, 500 Гц, як повідомлення MIDI.
Основний номер ноти:
r o u n d( 69 + 12 × лог2( 500 / 440 ) ) = 71 .
Таким чином, ви надсилаєте повідомлення "на замітку" з приміткою №, що дорівнює 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
- ПІТЧ БЕНД 9090
- ...
- ПІТЧ БЕНД 10454
- ...
- ПІТЧ БЕНД 9090
Ви можете вважати номер примітки MIDI як "невід'ємну" частину кроку; а крок вигинається як надмірна "дробова" частина поля.