Komunikaty kanałowe (Channel Messages)

Komunikaty kanałowe odnoszą się do konkretnego kanału MIDI (jego numer jest określony w bajcie sterującym). Zgodnie z obowiązującą systematyką, komunikaty kanałowe można podzielić na Komunikaty głosowe (Channel Voice Messages)Komunikaty zmiany kontrolera (Control Change Messages) oraz Komunikaty trybu pracy (Channel Mode Messages).

Komunikaty głosowe zawierają dane zapisanego utworu muzycznego i zwykle to właśnie one powodują największy ruch w strumieniu danych MIDI. Komunikaty zmiany kontrolera umożliwiają sterowanie szeroką gamą funkcji syntezatora – ich opanowanie wymaga szczególnego skupienia ale warto, bo przy ich pomocy można osiągnąć interesujące efekty, które często nie są dostępne „z poziomu gałek” w instrumencie. Z kolei Komunikaty trybu pracy określają sposób, w jaki instrument odbierający dane ma odpowiadać na komunikaty głosowe.

Komunikaty głosowe (Channel Voice Messages)

Komunikaty głosowe służą do przekazywania informacji o utworze muzycznym. W tej kategorii możemy wyróżnić następujące komunikaty: Note OnNote OffPolyphonic Key PressureChannel PressurePitch Bend ChangeProgram Change oraz Control Change.

Note On / Note Off (Velocity)

Z punktu widzenia systemu MIDI, włączenie i wyłączenie konkretnej nuty to dwa osobne zdarzenia. Kiedy naciskamy klawisz w instrumencie MIDI, wysyłany jest komunikat Note On do portu MIDI OUT instrumentu. Instrument możemy skonfigurować tak, że będzie on wysyłał dane na jednym z 16 logicznych kanałów MIDI – informacja o kanale, na którym wysyłamy dane, jest zawarta w bajcie sterującym komunikatu Note On. Po bajcie sterującym komunikatu Note On następują dwa bajty danych, które określają numer klawisza (który klawisz został wciśnięty) oraz tzw. Velocity (siła, z jaką został wciśnięty dany klawisz).

Syntezator, w oparciu o Numer klawisza, włącza odpowiednią nutę z głośnością odpowiadającą parametrowi Velocity. Kiedy puścimy klawisz, instrument wyśle komunikat Note Off. Komunikat Note Off również zawiera dwa bajty danych określające Numer klawisza i Velocity („siłę, z jaką klawisz był puszczony”), chociaż w tym przypadku wartość parametru Velocity jest ignorowana.

Aftertouch (Polyphonic Key Pressure, Channel Pressure)

Niektóre instrumenty MIDI rozpoznają siłę, z jaką są przyciskane klawisze, od chwili ich wciśnięcia, aż do momentu ich puszczenia. Siła nacisku na klawisze (Aftertouch) może być wykorzystana do kontrolowania pewnych parametrów generowanego dźwięku (np. Vibrato). Jeżeli instrument jest wyposażony w czujnik nacisku dla każdego klawisza osobno, wówczas informacja o nacisku na poszczególne klawisze (Polyphonic Aftertouch) zostanie wysłana w formie komunikatów Polyphonic Key Pressure. Te komunikaty składają się z osobnych bajtów danych opisujących poszczególne numery klawiszy i siłę nacisku na nie. Pewna grupa instrumentów (zwłaszcza tych starszych) jest w stanie rozpoznawać jedynie pojedynczy poziom nacisku na całą klawiaturę. Informacja o nacisku na klawiaturę (Channel Aftertouch) jest wysyłana za pomocą komunikatu Channel Pressure, który wykorzystuje tylko jeden bajt danych do określenia tej siły.

Pitch Bend Change

Pitch Bend Change jest wysyłany przez instrument w odpowiedzi na ruchy wykonywane pokrętłem Pitch Bend Wheel. Komunikat ten służy do modyfikacji wysokości dźwięków odtwarzanych na określonym kanale MIDI i składa się z dwóch bajtów danych. Dwa bajty są potrzebne po to, żeby wystarczająco precyzyjnie (z wystarczającą rozdzielczością) odwzorować zmiany wysokości dźwięku, tak, aby wysokość dźwięku zmieniała się płynnie, a nie skokowo.

Program Change

Program Change pozwala na wybór instrumentu (brzmienia), który ma zostać użyty do grania dźwięków na określonym kanale. Komunikat ten wykorzystuje tylko jeden bajt danych, za pomocą którego określany jest numer nowego brzmienia (Program Number).

Komunikaty zmiany kontrolera (Control Change Messages)

Komunikaty Control Change umożliwiają sterowanie szeroką gamą funkcji syntezatora. Podobnie jak inne Komunikaty kanałowe (Channel Messages), Control Change odnoszą się wyłącznie do kanału MIDI, którego numer jest wskazany w bajcie sterującym. Po bajcie sterującym następują dwa bajty: pierwszy określa Numer kontrolera (Controller Number), drugi określa wartość parametru (Control Value). Numer kontrolera służy do określenia funkcji syntezatora, do której chcemy się odwołać poprzez komunikat. W następnych artykułach opublikuję dwie tabele: Listę kontrolerów MIDI oraz Parametry kontrolerów RPN. To są dwie ściągawki, które warto zawsze mieć pod ręką, chyba że ktoś nauczył się ich na pamięć ;)

RPN / NRPN

Jak wiadomo, standard MIDI obejmuje zbiór poleceń umożliwiających sterowanie parametrami dźwięku w bardzo szerokim zakresie i dających praktycznie pełną kontrolę nad materiałem dźwiękowym. I choć MIDI jest szerokim standardem, to jednak opiera się on na stabilnej i niezmiennej podstawie. Tę stabilność trzeba uznać za zaletę, gdyż – jak uczy praktyka – szybko zmieniające się standardy są źródłem niekompatybilności, a w rezultacie – frustracji użytkowników.

Ponieważ aplikacje MIDI podlegają ciągłej ewolucji, a producenci sprzętu nieustannie wypuszczają nowe modele instrumentów i urządzeń pracujących w standardzie MIDI, standard ten musi być otwarty i umożliwiać dokonywanie w nim rozszerzeń metodą ad hoc. Specyfikacja MIDI obejmuje dwa mechanizmy umożliwiające implementację rozszerzeń specyficznych dla konkretnych urządzeń i aplikacji. Jednym z nich są kontrolery NRPN, drugim zaś komunikaty niestandardowe (SysEx) , którym poświęcimy osobny artykuł.

RPN (Registered Parameter Numbers) to te parametry, które mają przypisane pewne konkretne funkcje, np. kontrolę czułości Pitch Bend albo funkcję strojenia syntezatora (Master Tuning). Parametry te stanowią standard zaakceptowany przez stowarzyszenia MIDI Manufacturers Association (MMA i Japan MIDI Standards Committee (JMSC).

NRPN (Non-Registered Parameter Number) działają tak samo jak kontrolery RPN. Jedyna różnica polega na tym, że kontrolery NRPN mają przypisane niestandardowe funkcje, definiowane różnie przez różnych producentów. W zależności od producenta instrumentu, będziemy mieli do czynienia z różnie zdefiniowanymi kontrolerami NRPN (ich lista powinna być zamieszczona w dokumentacji urządzenia).

Aby ustawić parametry kontrolerów RPN lub NRPN, należy najpierw określić parametr, który ustawiamy – przy użyciu pary kontrolerów 98 i 99 (dla NRPN) lub 100 i 101 (dla RPN). W kolejnym kroku ustawiamy wartość danego parametru, przy użyciu: kontrolera 6 (Data Entry MSB), opcjonalnie kontrolera 38 (Data Entry LSB), albo poprzez względne zwiększenie lub zmniejszenie wartości parametru przy użyciu kontrolera 96 (RPN Increment) lub 97 (RPN Decrement).

Standard MIDI określa, że instrument, w chwili jego uruchomienia, powinien mieć nieaktywną funkcję odbierania komunikatów NRPN (ze względu na możliwość konfliktu w implementacji komunikatów NRPN w urządzaniach różnych producentów). Użytkownik ma możliwość uaktywnienia tej funkcji. W przypadku komunikatów RPN (które są objęte standardem MIDI, a więc są identyczne we wszystkich urządzeniach), standard MIDI zakłada, że instrument w chwili włączenia ma aktywne odbieranie komunikatów RPN.

Za pomocą kontrolerów RPN i NRPN i ich poszczególnych parametrów, można edytować próbki brzmień instrumentów (Sound Patches) i wiele innych danych.

Bank Select

Kontrolery 0 (MSB – Most Significant Byte) i 32 (LSB – Least Significant Byte) pozwalają na wybór banku brzmień. Dzięki tej metodzie w wielu syntezatorach mamy dostęp do większej liczby instrumentów. Sam komunikat Program Change pozwala na wybór jedynie spośród 128 możliwych brzmień (Program Numbers). Dlatego komunikat Program Change należy poprzedzić komunikatem Control Change, za pomocą którego określamy nową wartość dla kontrolerów 0 i 32 (co daje nam teoretycznie dostęp do 16 384 banków, po 128 brzmień w każdym).

Ponieważ specyfikacja MIDI nie opisuje sposobu mapowania w syntezatorach banków brzmień za pomocą komunikatów Bank Select, nie istnieje żadna standardowa metoda pozwalająca na wybranie konkretnego banku za pomocą tego komunikatu. Niektórzy producenci, np. Yamaha (w standardzie „XG”) czy Roland (w swoim standardzie „GS”), zastosowali własne metody zapewniające pewną standaryzację – przynajmniej w ramach linii własnych produktów.

Komunikaty trybu pracy (Channel Mode Messages)

Komunikaty Channel Mode (kontrolery od 121 do 127) określają sposób, w jaki instrument odpowiada na dane MIDI. Kontroler 121 umożliwia reset wszystkich kontrolerów. Kontroler 122 umożliwia włączanie i wyłączanie lokalnej kontroli syntezatora (Local Control). W syntezatorze MIDI, który ma swoją własną klawiaturę, funkcje kontrolera klawiatury i syntezatora mogą być wyłączone poprzez wyłączenie lokalnej kontroli (Local Control Off). Kontrolery od 124 do 127 służą do włączania i wyłączania trybu (Omni Mode On/Off), oraz do wyboru pomiędzy trybami pracy instrumentu Mono Mode i Poly Mode.

Przy włączonym trybie Omni Mode (Omni Mode On), syntezator będzie odpowiadał na dane MIDI otrzymywane na wszystkich kanałach. Wyłączenie trybu Omni Mode (Omni Mode Off) powoduje, że syntezator odpowiada tylko na komunikaty MIDI otrzymywane tylko na jednym z kanałów. Kiedy włączymy tryb Poly, otrzymywane komunikaty Note On są grane polifonicznie. Oznacza to, że gdy syntezator odbierze kilka komunikatów Note On, każda nuta będzie miała przyporządkowany swój własny głos (w zależności od liczby głosów dostępnych w syntezatorze). W rezultacie, syntezator w tym trybie może grać wiele nut równocześnie, na tym samym kanale MIDI.

Kiedy aktywny jest tryb Mono Mode, do każdego kanału MIDI przyporządkowana jest jedna nuta. Innymi słowy, w tym trybie syntezator może na jednym kanale MIDI równocześnie odtwarzać tylko jedną nutę. Większość współczesnych syntezatorów MIDI jest standardowo ustawiona w trybie pracy Omni On/Poly. W takim ustawieniu, syntezator gra nuty w odpowiedzi na komunikaty przesyłane na dowolnym kanale MIDI i na każdym kanale nuty są grane polifonicznie.

W trybie Omni Off/Poly, syntezator odbiera komunikaty tylko na jednym kanale i gra nuty na tym kanale polifonicznie. Tryb ten jest przydatny, gdy mamy kilka syntezatorów podłączonych równolegle poprzez złącze MIDI THRU. Za pomocą tego trybu, możemy każdy z syntezatorów ustawić na odtwarzanie jednego (innego) śladu. Wówczas odbiera on i odtwarza dane MIDI tylko na jednym kanale, a informacje przesyłane na pozostałych kanałach po prostu ignoruje.

Warto wspomnieć, że każdy instrument MIDI ma jeden kanał MIDI, tzw. Basic Channel. W niektórych instrumentach Basic Channel jest zdefiniowany na stałe, a w niektórych można go zmienić. Kanał ten jest przeznaczony do odbierania Komunikatów trybu pracy (Mode Messages). Komunikaty te mogą być odbierane tylko na tym kanale.

Dodaj komentarz