Jak mówić MIDI
Pierwotnie napisałem ten artykuł w maju 2019 r., ale przeniosłem go tutaj po wycofaniu mojej starej witryny. Cieszyć się!
Zawartość
- Czym jest MIDI
1.1 Czym MIDI nie jest - Jak to działa
2.1 Oddzielanie wiadomości
2.2 Bajty statusu i bajty danych - Typy komunikatów
3.1 Note Off / Note On (0x8n, 0x9n)
→ 3.1.1 Informacje o numerach tonacji MIDI
3.2 Zmiana sterowania (0xBn)
3.3 Pitch Bend (0xEn)
3.4 Nacisk klawisza polifonicznego i naciskanie kanału (0xAn, 0xDn)
3.5 Zmiana programu (0xCn) )
3.6 Układ (0xFn) - Informacje o systemie szesnastkowym
- Zastosowany przykład: V Symfonia Beethovena
- Dodatkowa lekcja: Bieganie
Dodatek I: Komunikaty trybu kanału
Dodatek II: Wykres tonu MIDI
Dodatek III: Standardowe przypisania CC
Dodatek IV: Komunikaty zmiany banku
Dodatek V: Dodatkowe zasoby
MIDI jest stare, ale cholernie przydatne. Steruje klawiaturami, które można zobaczyć w Guitar Center, steruje oświetleniem i efektami pirotechnicznymi na koncertach¹ i był używany do tworzenia muzyki do praktycznie każdego filmu w ciągu ostatnich kilku dekad.
Jeśli jesteś nowoczesnym muzykiem, niezbędna jest praktyczna znajomość MIDI. Jeśli należysz do osób, które czytają takie posty na blogu, istnieje duże prawdopodobieństwo, że masz już pewne doświadczenie w pracy z nimi; myślę jednak, że warto wiedzieć nie tylko, jak go używać, ale także jak go czytać, na poziomie bit po bicie. Tłumaczenie i składanie własnych komunikatów MIDI może początkowo wydawać się zniechęcające, ale w rzeczywistości jest naprawdę łatwe i myślę, że jest to ważna umiejętność dla każdego współczesnego kompozytora. To tak, jakbyś wiedział, jak działają mikrofony jako inżynier dźwięku.
Ten artykuł posłuży jako wyczerpujące wprowadzenie i przewodnik po komunikatach MIDI, które mają zastosowanie do produkcji muzycznej. Ten przewodnik nie jest samouczkiem dotyczącym kompozycji MIDI lub korzystania z edytora MIDI w programie DAW. Jednak ten przewodnik jest przeznaczony wyłącznie dla kompozytorów, ponieważ przekonasz się, że podstawowa wiedza na temat MIDI bardzo pomoże w znalezieniu bardziej zaawansowanych (i skomplikowanych) narzędzi MIDI. Zacznijmy.
1. Czym jest MIDI
Lubię uczyć rzeczy od początku. Jeśli jednak wiesz już, czym jest MIDI i do czego służy, możesz przejść do rozdziału Jak to działa , gdzie przejdziemy od razu do sedna. W przeciwnym razie przeanalizujmy.
MIDI to akronim oznaczający „cyfrowy interfejs instrumentu muzycznego”. Zasadniczo jest to sposób, w jaki komputery opisują i przesyłają sobie nawzajem występy muzyczne. Właściwie to jest sposób . Jeśli urodziłeś się po latach 80-tych, prawdopodobnie każdy instrument klawiszowy lub perkusyjny, jaki kiedykolwiek widziałeś, używa MIDI. Chociaż na przestrzeni lat podjęto wiele prób przeglądu lub zastąpienia MIDI, producenci instrumentów i programiści po prostu nie dbają o używanie czegokolwiek innego.
Dzięki MIDI możesz:
- Nagrywaj występy muzyczne i edytuj je z chirurgiczną precyzją
- „Łatka” występ na dowolnym instrumencie przy niewielkim lub zerowym nakładzie pracy
- Proceduralnie generuj lub zmieniaj kolejność występów
- Organizuj występy zespołowe za pomocą jednego połączenia
- Wykonaj podstawowe miksowanie, wraz z „automatyzacją”
I to jeśli partytura zostanie w ogóle wykonana. Podczas gdy wirtualne orkiestry z lat 80-tych brzmiały śmiesznie sztucznie, nowoczesne instrumenty brzmią tak dobrze, że zwykli słuchacze nawet nie są w stanie dostrzec różnicy. I to zmieniło wszystko. W niskobudżetowych filmach i programach telewizyjnych ścieżka dźwiękowa w ostatecznej wersji często wykorzystuje orkiestry MIDI, a widzowie nie są mądrzejsi. I o dziwo, takie narzędzia są dostępne dla muzyków na niemal każdym poziomie dochodów.
1.1 Czym MIDI nie jest
Zanim przejdziemy dalej, chcę rozwiać kilka błędnych przekonań, jakie czasami mają nowicjusze. To nie potrwa długo.
Po pierwsze, MIDI nie tworzy muzyki: po prostu mówi innym urządzeniom, jak tworzyć muzykę. Ale może też robić inne rzeczy. Na przykład w profesjonalnym oprogramowaniu wideo komunikaty MIDI służą do kontrolowania parametrów animacji. Wiele studyjnych powierzchni kontrolnych używa MIDI do sterowania oprogramowaniem do miksowania, a to fantazyjne pianino wykorzystuje go do wyzwalania automatycznych siłowników. Chodzi mi o to, że chociaż dane MIDI są używane głównie do sterowania instrumentami wirtualnymi, tak naprawdę mogą być używane do wszystkiego i same nie „brzmią” jak nic.
Po drugie, dane MIDI to nie tylko „nuty dla komputerów”, jakkolwiek użyteczna może być ta analogia. Podczas gdy zachodnie nuty są medium, które zakodowało całą najbardziej ekspresyjną muzykę w historii, prawda jest taka, że pozostawia spore pole do interpretacji — a komputery nie radzą sobie zbyt dobrze z niejednoznacznością.
Zamiast tego MIDI jest prawdopodobnie najlepiej postrzegane jako język programowania, a edytor MIDI jako wizualne środowisko programistyczne. Edytory MIDI przedstawiają polecenia MIDI jako kształty na rolkach fortepianu, zamiast tego, czym są w rzeczywistości: gloryfikowanymi instrukcjami cyfrowymi. I podobnie jak wszystkie języki programowania, MIDI jest podatne na wszelkiego rodzaju błędy i usterki. Na przykład, jeśli komunikat „notatka włączona” nie jest prawidłowo sparowany z komunikatem „notatka wyłączona”, wówczas nuta będzie odtwarzana w nieskończoność, ponieważ komputerom brakuje zdrowego rozsądku, aby się zatrzymać.
W każdym razie, jestem zmęczony pisaniem tego wstępu. Zdejmijmy wszystkie te warstwy abstrakcji i nauczmy się, na podstawowym poziomie, Jak mówić MIDI.
2. Jak to działa
Jak prawie wszystko w komputerach, MIDI sprowadza się do kilku zer i jedynek. Każda cyfra nazywana jest bitem (skrót od „cyfry binarnej”), a osiem z nich tworzy bajt . Kiedy grasz na pianinie cyfrowym, komunikaty MIDI są generowane wewnętrznie i wysyłane do generatora brzmień instrumentu, gdzie są interpretowane i konwertowane na dźwięk słyszalny. Jeśli zerknąłeś na sygnał, wygenerowane wiadomości mogą wyglądać mniej więcej tak:
To jest binarna forma prostego wykonania MIDI: pierwsze cztery nuty Piątej Beethovena. Gdybyś nagrał tę sekwencję i powtórzył ją na innym instrumencie MIDI dokładnie tak, jak została dostarczona, rezultatem byłaby identyczna kopia wykonania. Jeśli namieszałeś w timingu, zmieniłeś tempo występu. Wszystko inne dotyczące wydajności jest zakodowane w samych danych.
Ciekawie jest zdać sobie sprawę, że współcześni kompozytorzy zasadniczo spędzają czas na tworzeniu, edytowaniu i poprawianiu tego, co sprowadza się do dostarczania liczb w określonym czasie. W każdym razie podzielmy zadanie interpretacji tego bałaganu, krok po kroku.
2.1 Rozdzielanie wiadomości
Pierwszą rzeczą, którą należy wiedzieć o komunikatach MIDI jest to, że prawie zawsze zajmują więcej niż jeden bajt. Ma to sens, jeśli weźmie się pod uwagę, że istnieje tylko 256 unikalnych 8-bitowych liczb i prawdopodobnie musimy zakodować znacznie więcej informacji, aby opisać coś tak ekspresyjnego, jak wydarzenie muzyczne.
Jeśli więc otrzymujesz wiadomość w kilku małych paczkach, być może wszystkie naraz, skąd wiesz, gdzie kończy się jedna wiadomość, a zaczyna następna? Realistycznie, jeśli wiesz, ile bajtów należy oczekiwać na wiadomość i zaczynasz od góry, powinieneś być w stanie je rozróżnić, o ile żaden z nich nie zostanie utracony podczas transmisji. Jednak MIDI oferuje nam pewny sposób na przeanalizowanie każdej wiadomości: przez poświęcenie pierwszego bitu każdego bajtu sprawie.
ZASADA 1: Jeśli pierwszym bitem bajtu MIDI jest 1 , to bajt ten jest bajtem stanu , który oznacza pierwszą część komunikatu MIDI. Jeśli pierwszym bitem jest 0 , to jest to bajt danych , który stanowi treść wiadomości.
Łatwo. Za każdym razem, gdy bajt zaczyna się od 1 , wiemy, że czytamy początek nowej wiadomości i możemy interpretować kolejne bajty zgodnie z pierwszym. Użyjmy tej reguły, aby podzielić powyższą wydajność MIDI na dyskretne komunikaty.
Teraz, gdy patrzymy na coś bardziej uporządkowanego, możesz zauważyć kilka pojawiających się wzorców. Po pierwsze, istnieją tylko dwie unikalne wersje każdego bajtu. Wiedząc, że te komunikaty reprezentują pierwsze cztery nuty V Symfonii Beethovena, czy potrafisz odgadnąć, co one oznaczają?
2.2 Bajty stanu i bajty danych
Bajt stanu komunikatu MIDI służy jako jego nagłówek, a więc jest najważniejszą częścią. Mówi nam, co robi wiadomość i jak interpretować kolejne bajty danych. To, co zakodują bajty danych, zależy od komunikatu, ale zwykle dostarczają one informacji ważnych dla wykonania komunikatu. Jeśli bajt stanu mówi „skok”, bajty danych mogą powiedzieć ci, jak wysoko.
Ponieważ pierwszy bit każdego bajtu jest zarezerwowany do rozróżnienia dwóch typów bajtów, każdy z nich może wykorzystać tylko siedem bitów. Oto jak są używane:
ZASADA 2: Bity 2, 3 i 4 bajtu stanu identyfikują typ komunikatu . Bity 5–8 identyfikują kanał MIDI, do którego jest adresowany. Bajty danych pełnią różne funkcje w zależności od typu wiadomości.
Trzy bity określające typ komunikatu i cztery bity określające numer kanału oznaczają, że istnieje osiem różnych typów komunikatów i 16 możliwych kanałów. Bajty danych mogą zawierać dowolną wartość od 0 do 127 . Podczas gdy przytłaczająca większość wiadomości wykorzystuje dwa bajty danych, liczba ta może się różnić w zależności od potrzeb wiadomości. Na przykład komunikaty „zmiana programu” wymagają tylko jednego bajtu danych, a komunikaty „wyłączne dla systemu” mogą mieć dowolną liczbę.
Jeśli wcześniej pracowałeś z MIDI, prawdopodobnie znasz już kanały MIDI. Ale jeśli nie, każde połączenie MIDI może obsługiwać do 16 głosów. Bajt stanu określa w swoich czterech najmniej znaczących bitach, do którego z tych kanałów adresowana jest wiadomość3
3. Typy wiadomości
W poniższej tabeli przedstawiono różne typy komunikatów MIDI oraz sposób, w jaki wykorzystują one bajty danych. Przyjrzymy się każdemu z nich w poniższych podsekcjach.
3.1 Notatka wyłączona / uwaga włączona (0x8n, 0x9n)
Są to najbardziej podstawowe i najłatwiejsze do zrozumienia komunikaty MIDI. Kiedy chcesz zagrać nutę, wyślij wiadomość „Notatka włączona”, a kiedy chcesz ją zakończyć, wyślij wiadomość „Notatka wyłączona”. Te komunikaty używają dwóch bajtów danych: pierwszy identyfikuje ton , który chcesz kontrolować, a drugi identyfikuje dynamikę. ⁴ „Notatka włączona” z szybkością 0 nie wydaje dźwięku i jest równoważna z komunikatem „nuta wyłączona”.
Rozważania:
- Istnienie komunikatów „Note on” o zerowej prędkości oznacza, że komunikaty „Note off” są całkowicie niepotrzebne. Standard MIDI wyraźnie stwierdza, że komunikaty „nuta wyłączona” i „nuta włączona” o zerowej prędkości są równoważne i muszą być traktowane identycznie. W rezultacie jedno urządzenie może wyzwalać nuty inaczej niż inne.
- Podczas gdy nadajniki muszą używać tylko jednej metody wyzwalania nut, odbiorniki muszą być w stanie obsłużyć obie.
- Chociaż wartość dynamiki nie ma większego sensu w komunikacie „notatka wyłączona”, jest ona nadal częścią komunikatu i powinna zostać wysłana. Wartość jest nieużywana i jest odrzucana.
Numery tonów są mapowane na klawisze fortepianu zasadniczo jeden do jednego. Jednakże, ponieważ istnieje 128 możliwych wartości i tylko 88 klawiszy fortepianu, MIDI faktycznie obsługuje 40 półtonów, których nie ma na fortepianie. 19 z nich znajduje się powyżej najwyższej nuty C7, a 21 poniżej najniższej nuty A-1. Zakres tonacji MIDI jest mniej więcej wyśrodkowany wokół środkowego C, czyli nuty numer 60.
Należy pamiętać, że producenci nie zgadzają się co do liczby oktaw. Naukowa notacja wysokości tonu, używana przez muzyków analogowych, identyfikuje najniższe C na fortepianie jako C1 , co daje średnie C C4 . Z drugiej strony programiści często zaczynają liczyć od 0, więc dla nich najniższe C to C0 , a środkowe C to C3 . Jest to notacja, której zwykle używam, ponieważ jest używana przez wszystkie moje narzędzia MIDI. Jednak bez względu na to, jakiego systemu używasz, środkowe C to zawsze nuta numer 60.
W Dodatku II przedstawiam tabelę konwersji do iz numerów wysokości dźwięku MIDI.
3.2 Zmiana sterowania (0xBn)
Komunikaty „Zmiana sterowania” są używane do modyfikowania ciągłych kontrolerów kanału . Ciągły kontroler jest analogiczny do linii automatyzacji; umożliwia ciągłą kontrolę nad różnymi aspektami wydajności kanału.
Pierwszy bajt danych identyfikuje numer CC (0-119) , a drugi przypisuje mu wartość (0-127) .
Rozważania:
- W przeciwieństwie do nazwy, ciągłe dane kontrolera nie są ciągłe. Zamiast płynnej interpolacji między wartościami, jak robi to automatyzacja, bieżąca wartość pasa CC może zmieniać się tylko w dyskretnych krokach. Aby płynnie przejść do innej wartości, należy wysłać dużą liczbę komunikatów „zmiany sterowania”, zwiększając lub zmniejszając wartość w kontrolowanym tempie.
- Specyfikacja MIDI określa, do czego ma być używana większość ze 120 CC, chociaż bardzo niewiele urządzeń ma więcej niż garść. Przedstawiam tabelę wszystkich CC w Dodatku III .
- Ostatnie osiem liczb CC (120–127) w rzeczywistości w ogóle nie reprezentuje CC. Zamiast tego reprezentują specjalną kategorię komunikatów zwaną komunikatami w trybie kanału . Komunikaty w trybie kanału to wyspecjalizowane polecenia, które wpływają na całe urządzenie, które je odbiera. W praktyce nie będziesz musiał się o nie zbytnio martwić, ale więcej informacji na ich temat zamieszczam w Dodatku I.
- Numery CC 0 i 32 są używane przez wiele urządzeń do wybierania poprawek. Więcej informacji na ten temat znajduje się w Załączniku IV .
Wygina ton w górę lub w dół. Tak.
Pitch bend zachowuje się trochę jak CC. W rzeczywistości większość edytorów MIDI traktuje Pitch Bend jak kolejne CC. Jednak 7-bitowa wartość CC ze 128 możliwymi wartościami nie zapewnia wystarczającej rozdzielczości, aby sprzedać efekt pitch bend. Nasze uszy są niesamowite w rozpoznawaniu wysokości tonu, więc nawet gdy zbliżamy się do nowego tonu na 1/128 drogi na raz, nie brzmi to płynnie i organicznie.
Aby uzyskać dokładniejszą rozdzielczość, komunikaty typu „pitch bend” wykorzystują dwa bajty danych do przesłania jednej dużej wartości. Zasadniczo, jeśli zgniecisz razem siedem bitów jednej wiadomości i siedem bitów innej, możesz złożyć pojedynczą wartość 14-bitową, zwiększając rozdzielczość o współczynnik 2⁷, czyli 128.
Teraz, zamiast 128 możliwych wartości dla naszego pitch bend, mamy aż 16 384 — więcej niż wystarczająco kroków, aby uzyskać płynny efekt pitch bend. Prawa połowa jest dostarczana przez pierwszy bajt danych (najmniej znaczący bajt lub LSB), a lewa połowa jest dostarczana przez drugi (najbardziej znaczący bajt lub MSB).
Rozważania:
- Siła zagięcia tonu (ile półtonów w górę lub w dół odpowiada maksymalnemu zagięciu tonu) różni się w zależności od instrumentu. Często jest konfigurowalny.
- Pitch bend jest „wyśrodkowany” w punkcie 8192 (gdzie nie ma zmiany wysokości tonu).
- Pitch bendy wpływają na wszystkie grane nuty na kanale, tak jak robią to CC.
- Programowanie z MSB i LSB najlepiej wykonywać za pomocą operatorów bitowych. Nie będę ich tutaj omawiał, ale jeśli chcesz dowiedzieć się więcej, zamieściłem kilka zasobów w Dodatku V.
Niektóre kontrolery MIDI, takie jak Akai MPK225 , posiadają coś, co nazywa się aftertouch . Kontrolery Aftertouch są czułe nie tylko na prędkość każdego naciśnięcia klawisza, ale są stale wrażliwe na nacisk, z jakim trzymane są klawisze.
Aftertouch występuje w dwóch odmianach: aftertouch kanałowy i polifoniczny aftertouch . Channel aftertouch, znany również jako mono pressure , mierzy nacisk na całej klawiaturze, podczas gdy polifoniczny aftertouch mierzy nacisk niezależnie dla każdego klawisza. Ze względu na niższy koszt sprzętu, kanał aftertouch jest bardziej powszechny z tych dwóch. Komunikaty o ciśnieniu kanału wykorzystują tylko jeden bajt danych, który reprezentuje ogólny poziom ciśnienia. Polifoniczne komunikaty o naciskaniu klawiszy używają dwóch: pierwszy informuje o wysokości tonu (przy użyciu standardowych numerów tonu), a drugi o swoim nacisku.
Rozważania:
- Polifoniczny aftertouch to jedyny element sterujący, który można ustawić niezależnie dla każdego tonu. Każda inna kontrolka (oprócz włączenia lub wyłączenia nuty) wpływa na cały kanał.
- Rozszerzenie MIDI, zwane „MIDI Polyphonic Expression” (MPE), ma na celu umożliwienie stosowania CC i Pitch Bend również polifonicznie. MPE nie jest bardzo powszechne, ale zostało spopularyzowane przez urządzenia takie jak ROLI Seaboard . Podałem łącza do zasobów, które opisują to w Dodatku V.
Jeśli nie używasz dużo zewnętrznego sprzętu MIDI, prawdopodobnie nie będziesz używać tego typu komunikatów zbyt często. Komunikat „zmiana programu” nakazuje urządzeniu załadowanie nowego programu (nowego brzmienia lub ustawienia wstępnego). Wykorzystuje tylko jeden bajt danych, który określa indeks poprawki.
Ten typ wiadomości jest bardzo pomocny podczas komponowania z zewnętrznymi urządzeniami MIDI. Tak długo, jak twój sprzęt obsługuje ustawienia wstępne, twój projekt lub sesja poradzi sobie z ich wybieraniem i ładowaniem: po prostu sekwencjonuj odpowiednie komunikaty „zmiany programu” na początku.
Rozważania:
- Instrumenty z ponad 128 presetami zazwyczaj przechowują swoje patche w wielu bankach . Aby przywołać programy przechowywane w innych bankach, kody CC 0 i 32 są przekształcane w komunikaty „wyboru banku”. W dodatku IV omówię, jak to działa.
- Dzięki sprytnemu planowaniu komunikatów o zmianach programu, jedno urządzenie może używać więcej niż 16 różnych poprawek w jednym kawałku, o ile nie są one odtwarzane jednocześnie. Chociaż, aby być prawdziwym, prawdopodobnie powinieneś podzielić rzeczy na osobne przechwytywanie, jeśli chcesz wydoić tyle głosów z jednego urządzenia.
- Cubase i Nuendo oferują natywną obsługę komunikatów o zmianach programu w inspektorze ścieżek MIDI. Nie jestem pewien, ile innych programów DAW to obsługuje.
Komunikaty systemowe to zaawansowany temat, którego nie będę tutaj omawiał. Naprawdę zasługują na osobny artykuł. Są używane do wszelkiego rodzaju rzeczy; gigantyczne transfery danych (zwane „ zrzutami ”), synchronizację zegarów, przesyłanie kodu czasowego i nie tylko.
W przyszłości może napiszę przewodnik po komunikatach systemowych, ale na razie się nimi nie przejmuj. Pamiętaj tylko, że one istnieją i nie są zwykle używane w kompozycjach MIDI.
4. O systemie szesnastkowym
Zanim przejdziemy dalej, powinniśmy porozmawiać o wszystkich 0x, których użyłem w poprzedniej sekcji. Przedrostek 0x informuje, że liczba jest zapisana szesnastkowo.⁵ Gdy zagłębisz się w zaawansowane narzędzia MIDI i instrukcje obsługi urządzeń, zauważysz, że komunikaty MIDI są prawie zawsze reprezentowane w systemie szesnastkowym, a nie binarnym lub dziesiętnym. Na początku może się to wydawać sprzeczne z intuicją — mam na myśli, że jeśli w ogóle zamierzasz przekonwertować liczbę binarną, dlaczego nie po prostu przekonwertować na czytelną dla człowieka podstawę dziesiątą?
Odpowiedź brzmi, że jest to po prostu bardziej praktyczne. Chociaż uważam, że binarny jest najlepszym sposobem na rozpoczęcie nauki MIDI, jest to dość kłopotliwe w rzeczywistości. Rozłożenie każdego bajtu na osiem cyfr sprawia, że czytanie i pisanie jest uciążliwe, a ponieważ wszystko w systemie binarnym to tylko jedynki i zera, łatwo zgubić się podczas czytania długich sekwencji.
Tak więc programiści bitowi zwykle pracują w systemie szesnastkowym. Zmniejsza każdy bajt do zaledwie dwóch cyfr, a ponieważ 16 jest potęgą 2, każdy zmieniony bit wpływa tylko na jedną cyfrę w systemie szesnastkowym. To pozwala myśleć o każdej cyfrze szesnastkowej jako o własnej czterobitowej liczbie. Jeśli chciałbyś pracować bitowo na reprezentacji dziesiętnej, musiałbyś przekonwertować cały bajt na binarny iz powrotem.
Jest tylko kilka rzeczy, o których należy pamiętać podczas pracy z MIDI w systemie szesnastkowym.
- Ze względu na sposób, w jaki bity są pogrupowane szesnastkowo, możesz stwierdzić, do którego kanału MIDI adresowany jest bajt stanu, patrząc tylko na prawą cyfrę szesnastkową.
- Jeśli cyfra po lewej stronie bajtu jest
0x7lub mniejsza, wiesz, że jest to bajt danych, i podobnie, wiesz, że bajt zaczynający się od0x8lub większy jest bajtem stanu. - Maksymalna wartość bajtu danych, 127, jest
0x7Fzapisana w systemie szesnastkowym.
5. Zastosowany przykład: V Symfonia Beethovena
Kiedy ostatni raz zakończyliśmy ten przykład, właśnie podzieliliśmy surowy plik binarny na dyskretne komunikaty. Wyglądało to tak:
Aby to ułatwić, przekonwertujmy to na szesnastkowe. Zostawię bajty stanu na czerwono, a bajty danych na niebiesko.
Wiedząc to, co wiemy teraz, rozpoznajemy, że 0x9 i 0x8 na początku bajtów stanu identyfikują komunikaty odpowiednio jako „uwaga włączona” i „uwaga wyłączona”. Prawa cyfra bajtu mówi nam, że celują w kanał MIDI 1.⁶
Oto jak wygląda wydajność z przetłumaczonymi bajtami stanu.
W komunikatach typu „nuta włączona” i „notatka wyłączona” pierwszy bajt danych koduje wysokość tonu, a drugi prędkość. Wartość prędkości to tylko liczba. Aby określić wysokość, musimy odwołać się do tabeli nut MIDI . I pamiętaj, prędkości „notatki” są niewykorzystane.
Dokończmy tłumaczenie:
Otóż to! To są przetłumaczone instrukcje MIDI, kodujące pierwsze cztery nuty Piątej Beethovena. Dum dum dum duum!
Wiedząc to, co wiesz teraz, możesz ręcznie tworzyć i dekodować typowe komunikaty MIDI. Bardziej zaawansowane narzędzia, takie jak transformatory MIDI i edytory logiczne, są teraz dostępne. Jednak zawsze jest więcej do nauczenia się. Jeśli jesteś żarłokiem wiedzy, w Dodatku V umieściłem zasoby, których możesz użyć do dalszej nauki MIDI .
6. Dodatkowa lekcja: Bieganie
Istnieje poręczny skrót MIDI, o którym do tej pory nie wspominałem, aby zachować prostotę. Oto jak to działa: po wysłaniu bajtu stanu nie musisz wysyłać kolejnego, dopóki nie będzie się różnił od poprzedniego. Ostatni odebrany bajt stanu pozostaje w pewnym sensie „włączony” i jest używany do interpretacji wszystkich kolejnych bajtów danych. Jest to określane jako stan pracy .
Rozważ następujący ciąg bajtów:
To, na co patrzysz, to dokładnie to samo wykonanie Piątej Beethovena, które przetłumaczyliśmy w zastosowanym przykładzie, ale brakuje prawie wszystkich bajtów statusu. Jednak ze względu na Status Biegania, ta wydajność jest tak samo ważna jak pierwsza. Kiedy wysyłamy bajt statusu 0x90, staje się on Running Status, a każda następna para bajtów może być traktowana tak, jakby była poprzedzona własnym „ 0x90”.
To pozwala nam wyciąć wiele powtarzających się bajtów statusu, co może radykalnie skrócić nasze strumienie MIDI. W czasach, gdy komputery były wolniejsze, a szybkości transmisji bardziej restrykcyjne, było to niezwykle pomocne. Jednak obecnie komputery są tak szybkie, że korzystanie ze stanu pracy nie powoduje zauważalnej poprawy wydajności. Jednak wciąż o tym wspominam, ponieważ jeśli zdarzy ci się programować MIDI, powinieneś być przygotowany na to, że bajty statusu będą tu i ówdzie pomijane.
Zauważ, że ponieważ „nuta włączona” przy zerowej prędkości liczy się jako „nuta wyłączona”, możemy zarówno rozpoczynać, jak i kończyć nuty bez przerywania statusu uruchomionej; przynajmniej do czasu, gdy będziemy musieli wysłać zmianę sterowania lub wiadomość na inny kanał.
- Odbywa się to za pomocą rozszerzenia MIDI o nazwie MIDI Show Control.
- "To co widzisz Jest Tym Co dostajesz".
- Numery kanałów MIDI zaczynają się od 1, podczas gdy ich reprezentacja tutaj zaczyna się od 0. Wartość 0 oznacza kanał 1, a wartość 15 oznacza kanał 16.
- Szybkość można określić jako „mocne” uderzenie nuty.
- Innym powszechnym zapisem jest umieszczanie po numerze dużej litery „H”, jak w przypadku „78H”.
- Pamiętaj, nawet jeśli liczba w wiadomości to zero, odpowiada ona Kanałowi 1, ponieważ zaczynamy liczyć numery od 0, a kanały od 1.
Dodatek I: Komunikaty trybu kanału
Komunikaty „Tryb kanału” to specjalne polecenia, które zmieniają zachowanie całego urządzenia poprzez zmianę jego trybu MIDI . Cóż, w pewnym sensie.
W praktyce komunikaty „trybu kanału” służą tylko do włączania lub wyłączania niektórych funkcji i wysyłania określonych poleceń. To, co MIDI wylicza jako „tryby”, to zasadniczo po prostu różne konfiguracje przełączników Omni i Poly. Szczerze mówiąc, nie sądzę, aby „tryby” były bardzo trafnym sposobem myślenia o tych poleceniach; ale przynajmniej wyjaśnię, co robią polecenia.
Wiadomości w trybie kanału nie mają własnego typu wiadomości. Zamiast tego zmieniono przeznaczenie ośmiu ostatnich ciągłych numerów kontrolerów (CC 120–127). Komunikaty trybu kanału są następujące:
Aby urządzenie mogło odpowiadać na komunikaty w trybie kanału, musi je odbierać na swoim kanale podstawowym . Podstawowy kanał urządzenia jest jedynym kanałem MIDI, na którym komunikaty trybu kanału są uznawane za ważne. W przypadku wielu urządzeń ten kanał można konfigurować. W ten sposób komunikaty w trybie kanału mogą być kierowane do określonych urządzeń w łańcuchu.
Poniżej znajduje się krótkie podsumowanie każdego komunikatu trybu kanału. Dodatek V zawiera zasoby do dalszych badań.
- All Sound Off („CC” 120): Odcina cały dźwięk aktualnie wytwarzany przez instrument, w tym efekty wygaszania nut i pogłosu.
- Resetuj wszystkie kontrolery („CC” 121): Przywraca domyślne ustawienia wszystkich kontrolerów CC, przełączania kontrolerów, efektu Pitch Bend i Aftertouch. To, do jakiej wartości powraca każdy kontroler, zależy od kontrolera i jest zdefiniowane w specyfikacji MIDI.
- Sterowanie lokalne („CC” 122): Odłącza klawiaturę syntezatora od generatora brzmień. Pozwala to używać syntezatora jako kontrolera MIDI, jednocześnie sekwencjonując dla niego. Ustaw na
0x00, aby wyłączyć sterowanie lokalne i0x7Fwłączyć je ponownie. - Wszystkie notatki wyłączone („CC” 123): „przycisk paniki”. All Notes Off jest równoznaczne z wysyłaniem komunikatów „Note off” dla każdego tonu na każdym kanale. Jest to przydatne do rozwiązywania zablokowanych notatek. Nie ma to wpływu na nuty wyzwalane lokalnie.
- Tryb Omni wyłączony/włączony („CC's” 124, 125): Gdy tryb Omni jest włączony, każdy kanał odpowie na każdą wiadomość przychodzącą, bez względu na to, który kanał jest wskazany w bajcie stanu.
- Tryb Mono / Tryb Poly ("CC's" 126, 127): Wymusza zachowanie głosu lub głosów w sposób monofoniczny lub polifoniczny. Jeśli wartość „włączony tryb mono” jest ustawiona na
0x00, to kanał podstawowy i wszystkie kanały nad nim zostaną ustawione na tryb mono. Dla dowolnej innej wartości n kanały od n do n+m-1 będą ustawione na tryb mono (gdzie m jest wartością drugiego bajtu danych). Komunikat „tryb poli włączony” przywróci tryb poli na wszystkich kanałach.
Dodatek III: Standardowe zadania CC
Specyfikacja MIDI definiuje standardowe zastosowania CC, które skopiowałem tutaj. Wszystkie numery CC są zdefiniowane, z wyjątkiem: 3, 9, 14, 15, 20–31, 85–90 i 102–119 . Najszerzej obsługiwane CC to modulacja ( 0x01), kontroler nożny ( 0x04), głośność kanału ( 0x07), panorama ( 0x0A), ekspresja ( 0x0B) i podtrzymanie dźwięku ( 0x40).
Sprawdź zasoby w Dodatku V , jeśli chcesz dowiedzieć się więcej o tych CC.
Dodatek IV: Komunikaty o zmianie banku
Nowoczesne syntezatory mogą przechowywać i przywoływać o wiele więcej ustawień wstępnych, niż można zaadresować jednym komunikatem o zmianie programu. Aby to obejść, producenci często dzielą swoje programy na banki . Każdy bank ma maksymalnie 128 presetów i unikalny 7-bitowy lub 14-bitowy adres.
Aby przywołać patch z innego banku, musisz najpierw wysłać wiadomość „bank select” z jego adresem. Następnie wyślij jak zwykle wiadomość o zmianie programu, a załadowana poprawka przyjdzie z nowego banku.
Jak zapewne zauważyłeś, są to w rzeczywistości komunikaty „zmiany kontroli” dla CC 0 i 32 . W przypadku adresów 7-bitowych używane jest tylko CC 0 . Dla adresów 14-bitowych CC 0 reprezentuje MSB, a 32 LSB. Jeśli potrzebujesz podkładu na MSB i LSB, znajdziesz go w sekcji Pitch Bend w głównym artykule.
To, czy urządzenie używa adresów 7-bitowych, czy 14-bitowych, jest dość arbitralne i musisz sprawdzić instrukcję, aby wiedzieć, którego użyć podczas komunikacji z urządzeniem.
Dodatek V: Dodatkowe zasoby
- Stowarzyszenie MIDI : Stowarzyszenie MIDI to główne repozytorium informacji o technologii MIDI lub z nią związane. Rejestracja jest bezpłatna, a kiedy już to zrobisz, możesz pobrać pełną szczegółową specyfikację MIDI 1.0 tutaj .
- Bitwise Operation (Wikipedia) : Wiem, wiem, Wikipedia nie jest dobrym głównym źródłem informacji, ale podoba mi się ten artykuł, ponieważ jest neutralny językowo i nie zawiera reklam. Zapoznaj się z arytmetycznymi przesunięciami bitowymi i bitowym OR, które są przydatne podczas pracy z MSB i LSB.
- Co to jest MPE? : Artykuł w bazie danych wsparcia ROLI dotyczący MIDI Polyphonic Expression, który jest używany w wielowymiarowych kontrolerach, takich jak produkty Seaboard. MPE zostało formalnie przyjęte przez Stowarzyszenie Producentów MIDI w styczniu 2018 r., a łącze do pobrania specyfikacji jest dostępne tutaj .
- Tryby MIDI (Electronic Music Interactive v2, University of Oregon): Ta strona zawiera dobry, zwięzły przegląd czterech standardowych trybów MIDI. Jest to część dłuższego kursu online na temat muzyki elektronicznej.
- Lista MIDI CC (Nick Fever) : Lista standardowych CC z bardziej rozbudowanymi wyjaśnieniami. Jeśli po przejrzeniu listy Nicka nadal potrzebujesz więcej informacji, zapoznaj się z Pełną szczegółową specyfikacją MIDI 1.0, którą możesz pobrać tutaj .
- Wspólne komunikaty systemu MIDI , komunikaty systemu MIDI w czasie rzeczywistym i komunikat wyłączny systemu MIDI (RecordingBlogs Wiki): doskonałe wprowadzenie do każdego rodzaju komunikatów systemowych.
- Numer zarejestrowanego parametru MIDI (RecordingBlogs Wiki): Przegląd numerów zarejestrowanych parametrów, które można traktować jako rozszerzenie CC. Gdy zrozumiesz RPN, numery NRPN (Non-Registered Parameter Numbers) również staną się dla Ciebie dostępne.

![Czym w ogóle jest lista połączona? [Część 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































