Komunikaty systemowe (System Messages)

Komunikaty systemowe (System Messages) odnoszą się do całego systemu, a nie do konkretnego kanału MIDI, dlatego bajt sterujący tych komunikatów nie zawiera informacji o numerze kanału. Możemy wyróżnić następujące Komunikaty systemowe: Komunikaty wspólne (System Common Messages)Komunikaty synchronizacji czasu rzeczywistego (System Real Time Messages), Komunikaty niestandardowe (System Exclusive Messages) oraz Komunikaty specjalne (System Reserved Messages).

Komuniaty wspólne są przeznaczone dla wszystkich odbiorników w systemie. Komunikaty synchronizacji czasu rzeczywistego są wykorzystywane do synchronizacji pomiędzy instrumentami i urządzeniami MIDI wykorzystującymi zegar (clock-based MIDI components). Komunikaty niestandardowe zawierają kod identyfikujący producenta (Manufacturer’s ID code) i używane są do transferu dowolnych porcji danych w formacie określonym przez danego producenta.

Komunikaty wspólne (System Common Messages)

Możemy wyróżnić następujące komunikaty wspólne: MTC Quarter FrameSong SelectSong Position PointerTune Request i End Of Exclusive (EOX). Komunikat MTC Quarter Frame stanowi część informacji o MIDI Time Code wykorzystywanej do synchronizacji urządzeń MIDI z innymi urządzaniami, takimi jak urządzenia taśmowe audio lub video. Song Select jest wykorzystywany z urządzeniami MIDI takimi jak sekwencery i automaty perkusyjne, które mogą zapamiętać i odtworzyć wiele różnych utworów. Wskaźnik pozycji w utworze (Song Position Pointer) służy do ustawienia sekwencera i rozpoczęcia odtwarzania utworu od pewnego miejsca, innego niż początek. Wartość Song Position Pointer odnosi się do liczby cykli zegara (MIDI clocks), które upłynęłyby od początku utworu do pożądanego punktu w utworze. Ten komunikat może być wykorzystywany tylko z urządzeniami, które rozpoznają komunikaty synchronizacji czasu rzeczywistego (System Real Time Messages). Komunikat Tune Request jest generalnie wykorzystywany do żądania od analogowego syntezatora przestrojenia jego wewnętrznych oscylatorów. W dobie cyfrowych syntezatorów, ten komunikat jest w zasadzie niepotrzebny. Komunikat EOX służy do oznaczenia końca komunikatu SysEx, który może zawierać zmienną (tzn. dowolną) ilość bajtów danych.

Komunikaty synchronizacji czasu rzeczywistego (System Real Time Messages)

Komunikaty synchronizacji wykorzystywane są do zsynchronizowania wszystkich urządzeń bazujących na zegarze MIDI w systemie, takich jak sekwencery i automaty perkusyjne. Instrumenty i syntezatory zwykle ignorują większość komunikatów synchronizacji. Aby zapewnić precyzyjną synchronizację, komunikaty synchronizacji mają wyższy priorytet niż pozostałe. W efekcie, te jednobajtowe komunikaty mogą pojawić się gdziekolwiek w strumieniu danych (komunikat synchronizacji może np. „wstrzelić” się pomiędzy bajtem sterującym i bajtem danych jakiegoś innego komunikatu).

Oto lista komunikatów synchronizacji: Timing ClockStartContinueStopActive Sensing i System ResetTiming Clock jest to główny zegar, który odpowiada za ustalenie tempa odtwarzania utworu. Komunikat Timing Clock jest wysyłany 24 razy w ciągu trwania jednej ćwierćnuty. Komunikaty StartContinue i Stop pozwalają kontrolować odtwarzanie utworu. Active Sensing służy do eliminowania zablokowanych nut (stuck notes), z którymi możemy mieć do czynienia wówczas, gdy odłączymy kabel MIDI podczas odtwarzania utworu. Jeżeli kabel zostanie odłączony podczas odtwarzania, niektóre noty mogą grać nadal (w nieskończoność), ponieważ zostały one aktywowane przez komunikat Note On, lecz instrument nie odebrał już odpowiedniego komunikatu Note OffSystem Reset, jak wskazuje nazwa, służy do resetowania i inicjalizowania każdego urządzenia, które odbierze ten komunikat. Urządzenia transmitujące nie wysyłają automatycznie tego komunikatu. Musi on zostać wywołany ręcznie przez użytkownika.

Komunikaty niestandardowe (System Exclusive Messages)

Komunikaty niestandardowe, nazywane w skrócie SysEx, mogą być używane do wysyłania pomiędzy urządzeniami MIDI danych takich jak parametry paczy (ang. patch) lub dane o samplach. Producenci urządzeń MIDI mogą definiować swoje własne formaty danych SysEx. Każdy producent ma zapewniony niepowtarzalny numer (ID nadawany przez jedną z organizacji: MMA lub JMSC), który to numer stanowi część komunikatu SysEx. Następnie występuje szereg bajtów danych, zakończony komunikatem EOX oznaczającym koniec transmisji. Producenci mają obowiązek publikowania szczegółowego opisu swoich formatów danych SysEx, tak aby inni producenci mogli swobodnie wykorzystywać te formaty, przy założeniu, że nie zmienią ani nie wykorzystają tego formatu niezgodnie z oryginalną specyfikacją.

Pewne określone SysEx ID są zarezerwowane dla specjalnych protokołów. Wśród nich można wymienić MIDI Sample Dump Standard, który jest formatem danych System Exclusive określonym w specyfikacji MIDI i zarezerwowanym na potrzeby transmisji sampli pomiędzy urządzeniami MIDI. Inne przykłady to MIDI Show Control i MIDI Machine Control.

Running Status

Ponieważ dane MIDI są przesyłane szeregowo, istnieje możliwość, że zdarzenia muzyczne, które początkowo miały miejsce dokładnie w tym samym czasie, nie zostaną zagrane przez syntezator równocześnie. Przy prędkości transmisji na poziomie 31250 bitów na sekundę i uwzględniając fakt, że bajt danych MIDI składa się z 10 bitów, można przyjąć, że przesłanie komunikatu Note On lub Note Off o objętości 3 bajtów, zajmie 1 ms. Jest to wystarczająco krótki czas, żeby dźwięki były odebrane przez ludzkie ucho jako zagrane równocześnie. Jeżeli muzyk grający na klawiaturze MIDI uderzy równocześnie w 10 klawiszy, to czas przesłania odpowiednich komunikatów nie powinien przekroczyć 10 ms – taka różnica w czasie również powinna pozostać niewyczuwalna dla ludzkiego ucha.

Warto jednak pamiętać, że dane MIDI wysyłane z sekwencera mogą dotyczyć wielu śladów jednocześnie. Przy dużym tempie utworu, może wystąpić tak duża liczba równoczesnych zdarzeń muzycznych, że opóźnienia wynikające z szeregowości transmisji tych informacji staną się słyszalne.

Jedną z metod redukcji ilości danych transmitowanych w strumieniu MIDI, jest technika Running StatusRunning Status wykorzystuje fakt, że w strumieniu komunikatów MIDI często zdarza się ciąg następujących po sobie komunikatów tego samego typu. Na przykład, kiedy gramy akord na klawiaturze, może zostać wygenerowanych 10 następujących po sobie komunikatów Note On, a następnie – po puszczeniu klawiszy – 10 komunikatów Note Off. Gdy korzystamy z Running Status, bajt sterujący jest przesyłany tylko dla tych komunikatów, które są innego typu niż bezpośrednio je poprzedzający komunikat na tym samym kanale. Bajt sterujący dla kolejnych komunikatów tego samego typu może zostać pominięty (dla kolejnych komunikatów tego samego typu są wysyłane tylko bajty danych).

Efektywność techniki Running Status może być dodatkowo zwiększona poprzez wysyłanie komunikatów Note On z wartością parametru Velocity równą zero, zamiast wysyłania komunikatów Note Off. Dzięki temu, zwiększamy prawdopodobieństwo wystąpienia długich ciągów komunikatów tego samego typu (Note On). Zmiany wartości niektórych kontrolerów MIDI, a nawet intensywne ruchy pokrętła Pitch Bend Wheel mogą wygenerować zawrotną liczbę komunikatów głosowych (Channel Voice) i w tych przypadkach technika Running Status może odegrać kluczową rolę przy redukcji liczby przesyłanych danych.

Dodaj komentarz