Podstawą MIDI jest reprezentacja muzyki jako dyskretnych zdarzeń nutowych, z których każda ma statyczny ton. Jest to idealne rozwiązanie do przedstawiania muzyki odtwarzanej na instrumentach klawiszowych. Możesz przekonwertować dowolną częstotliwość odpowiadającą nucie w temperowanej skali na numer nuty MIDI, używając:
69+12×log2frequency440
Przy założeniu, że odbiornik MIDI jest skalibrowany dla A4 = 440 Hz.
Ta reprezentacja jest odpowiednia w przypadku muzyki fortepianowej, ale problem polega na tym, jak reprezentować wysokości, które nie są odwzorowane na temperowaną skalę (muzyka niezachodnia, dźwięki niemuzyczne) oraz jak reprezentować zmiany wysokości w trakcie trwania nuty (glissando, vibrato).
Odbywa się to w MIDI za pomocą „komunikatów pitch bend”, które instruują syntezator, aby przesunąć wysokość aktualnie odtwarzanej nuty o mały odstęp. Większość syntezatorów jest domyślnie skalibrowana dla +/- 2 półtonów w całym zakresie komunikatów wysokości tonu (0 .. 16383). 8192 odpowiada brakowi gięcia wysokości - emitowana wysokość jest dokładnie równa wartości nuty. Odwzorowanie między wartością zgięcia wysokości a współczynnikiem przesunięcia częstotliwości jest określone przez:
femitted_notefnote_message=2pitchbend−81924096×12
W ten sposób można uzyskać częstotliwość nuty granej przez syntezator z następującego wzoru:
440×2note−6912.0+pitchbend−81924096×12
Gdzie nuta jest 7-bitowym numerem nuty MIDI ostatnio odebranej wiadomości Note On ; a pitchbend to 14-bitowa wartość ostatnio odebranej wiadomości Pitch Bend . Syntezator uruchamia się z rejestrem pitch bend ustawionym na 8192, a ta wartość jest również resetowana podczas odbierania komunikatu „Resetuj wszystkie sterowniki”.
Weźmy następujący przykład. Chcesz wyrazić tryl fletu z następującą trajektorią częstotliwości: 500 Hz, 510 Hz, 500 Hz, jako komunikaty MIDI.
Numer nuty bazowej to:
round(69+12×log2(500/440))=71 .
Tak więc wysyłasz wiadomość „uwaga na” z uwagą # równą 71. Odpowiada to wysokości:
440×2(71−69)/12=493.88
Który jest najbliższym skokiem na temperowanej skali. Musisz wysłać komunikat pochylenia wysokości, aby podnieść wysokość dźwięku o współczynnik:
500493.88=1.0124
I weź 500 Hz. Odpowiednia wartość pochyłości skoku wynosi:
round(8192+4096×12×log21.0124)=9065
Aby uzyskać 510 Hz, wartość pitch bend wynosiłaby:
round(8192+4096×12×log2510493.88)=10469
Zatem twoja sekwencja komunikatów MIDI dla 500, 510, 500 Hz wyglądałaby następująco:
- UWAGA 71
- PITCH BEND 9065
- ...
- PITCH BEND 10469
- ...
- PITCH BEND 9065
Możesz myśleć o numerze nuty MIDI jako „integralnej” części wysokości; a pitch bend jako redundantna „ułamkowa” część pitch.
autocorrelate
, która wydaje mi się, że jest to wyjściowa nuta MIDI. Czy zauważyszmidi2pitch
tablicę we wzorze? Jeśli mam rację, oznacza to, że nadal nie mambend
wartości ani rzeczywistej wartości wysokości dźwięku do oszacowania wartości zgięcia i nie mam możliwości ich uzyskania, chyba że mam plik MIDI. Prosty przypadek zbyt wielu zmiennych i zbyt małej liczby równań. Jak oszacować zgięcie, rzeczywistą wartość skoku ivelocity
w tym przypadku?MIDI to protokół, który pozwala (głównie) syntezatorom kontrolować lub być kontrolowany przez inne syntezatory lub komputery.
Jest to protokół szeregowy, który umożliwia wymianę komunikatów, takich jak „klawisz C1 w górę”, „klawisz D4 w dół”, „prędkość klawisza”, „zmiana dźwięku” itp. Wiele kontrolerów ma „koło podziałowe”, które jest joystickiem lub kółkiem modulacji. odtwarzacz do interaktywnej zmiany wysokości aktualnie odtwarzanej nuty w celu ręcznego tworzenia vibrato lub ciągłego „przesuwania się” od jednej nuty do drugiej. Ponieważ jest to często wykonywane przez gitarzystów poprzez zginanie struny lewą ręką, jest to często nazywane pitch bending i stąd nazwa.
Komunikat MIDI pitch bend to sposób na przekazanie informacji o tym, ile przesunięć tonów powinno nastąpić w danym momencie. Syntezator (oprogramowanie lub sprzęt) odbierający komunikat zmiany wysokości ma zmienić wysokość wszystkich bieżących nut odtwarzanych o podaną wartość.
Komunikat kontrolera zawiera argument z przedziału od -8192 do 8191, aw standardowych plikach MIDI ma on obejmować zakres od -200 centów do 200 centów, gdzie 1 cent to 1/100 półtonu, tj. Stosunek 2 ^ ( 1/1200) = 1.000577789506555. Przykład: aby utworzyć przesunięcie wysokości w dół, aby uzyskać 93% częstotliwości nominalnej, wartość kontrolera wynosiłaby
lub -5146 w tym przypadku. 0,93 to pożądany stosunek, 12 liczba półtonów na oktawę, 2 maksymalny zakres zgięcia skoku (w tym przypadku 200 centów lub 2 półtony), a log2 () logarytm z podstawą 2.
Jednak w większości syntezatorów zakres jest konfigurowalny i prawdopodobnie nie należy zakładać, że wszystkie syntezatory zachowują się tak samo.
Oto wykres konwersji, który może pomóc. http://www.elvenminstrel.com/music/tuning/reference/pitchbends.shtml
źródło