XII Konferencja Sieci i Systemy Informatyczne Łódź, październik 2004 DOMINIK KŁYS WOJCIECH ZABIEROWSKI ANDRZEJ NAPIERALSKI Katedra Mikroelektroniki i Technik Informatycznych Politechniki Łódzkiej APLIKACJA WYKORZYSTUJĄCA KOMUNIKATY MIDI, ODZWIERCIEDLENIE DA- NYCH W POSTACI PROSTEGO ZAPISU NUTOWEGO Streszczenie W artykule przedstawiono podział i strukturę komunikatów MIDI, dzięki którym urządzenia pracujące w tym standardzie mogą się ze sobą komunikować. Opisano także podstawowe założenia, które muszą spełniać dane urządzenia, aby komunikacja mogła mieć miejsce. W celu zaprezentowania efektu komunikacji, zaprezentowana została prosta aplikacja realizująca komunikację między komputerem, a zewnętrznym urządzeniem MIDI (syntezatorem). Pozwala ona na analizę struktury odebranych danych, jak również na wysyłanie wybranych komunikatów na zewnętrzny syntezator. Główny obszar roboczy przedstawia także reprezentację odbieranych danych w postaci prostej notacji nutowej, w celu weryfikacji poprawności transmisji. Celem artykułu jest zapoznanie czytelnika z założeniami standardu General MIDI Level 1 oraz zwrócenie uwagi, że komunikacja między komputerem, a syntezatorem to tylko przykład połączenia. Zamiast zewnętrznego syntezatora może pojawić się inne urządzenie posiadające kontroler MIDI i wykonujące zupełnie inne operacje od tych, wykonywanych przez urządzenia muzyczne. 1. Trochę historii MIDI (Musical Instrument Digital Interface) definiuje jednocześnie cały zbiór zasad komunikowania się urządzeń MIDI, włączając w to specyfikację odpowiedniego interfejsu, dzięki któremu urządzenia są połączone ze sobą. MIDI jest przede wszystkim kojarzone z urządzeniami muzycznymi. Już od kilkudziesięciu lat na rynku światowym są obecne elektroniczne instrumenty muzyczne, ale można by powiedzieć, że ilu producentów, tyle różnych rozwiązań, niestety często niekompatybilnych ze sobą. Dlatego też na początku lat 80-tych postanowiono wprowadzić jeden podstawowy standard, który miał definiować jednoznacznie sposób połączeń urządzeń pracujących w systemie MIDI oraz język komunikacji. Ze swoją propozycją wystąpiła firma ROLAND i na konferencji w 1991 roku został przyjęty podstawowy standard MIDI (General MIDI Level 1). 2. Założenia standardu General MIDI Level 1: urządzenie udostępnia przynajmniej 24 głosową polifonię dynamicznie rozmieszczaną na wszystkie kanały: polega to na tym, że każdy kanał MIDI może grać innym brzmieniem i odbierać informacje dotyczące wartości siły uderzenia w klawisze, urządzenie udostępnia 16 kanałów MIDI, przy czym kanał o numerze 10 jest zarezerwowany dla instrumentów perkusyjnych, teoretycznie dziewięć numerów kanałów poniżej perku-
D. Kłys, W. Zabierowski, A. Napieralski APLIKACJA WYKORZYSTUJĄCA KOMUNIKATY MIDI, ODZWIERCIEDLENIE... syjnego jest przeznaczonych dla instrumentów melodycznych, jednak standard GM wymaga, aby urządzenie udostępniało wszystkie 16 kanałów, urządzenie obsługuje następujące komunikaty: MODULATION WHEEL - modulacja dźwięku, AFTERTOUCH informacje dotyczące wartości dociskania klawisza, EXPRESSION PEDAL - kontroler pedału ekspresji, ALL NOTES OFF - wyłączenie wszystkich nut, RESET ALL CONTROLERS - przywracanie fabrycznych wartości wszystkim kontrolerom, PITCH BEND - płynna zmiana wysokości dźwięku, PITCH BEND SENSITIVITY - czułość pitch-bendera, MAIN VOLUME poziom głośności, PAN umiejscowienie dźwięku w panoramie stereo, SUSTAIN podtrzymanie dźwięku, możliwość zmiany parametrów Coarse Tuning i Pitch Bend Range za pomocą kontrolerów RPN, standardowy zakres wysokości sterowanej komunikatem PITCH BEND powinien wynosić +/- 2 półtony, istnieje specjalny komunikat SYSTEM EXCLUSIVE umożliwiający włączenie i wyłączenie standardu GM w danym instrumencie, dźwięk C razkreślne powinien odpowiadać nucie o numerze 60, minimum 128 brzmień podstawowych instrumentów ułożonych w odpowiedniej kolejności, brzmienia podzielone są na 16 grup tematycznych, każda zawiera po 8 różnych brzmień (bank brzmień), minimum 47 brzmień perkusyjnych przypisanych do właściwych klawiszy nut. Jeśli chodzi o sam interfejs, czyli sposób połączenia ze sobą urządzeń, konsekwencją wprowadzenia MIDI było pojawienie się w każdym urządzeniu (zgodnym z tym standardem) odpowiednich gniazd o znajomym skądinąd kształcie - złącze DIN-5 wykorzystywane było bowiem wcześniej m.in. do łączenia sprzętu muzycznego. Do poprawnego funkcjonowania urządzeń połączonych w systemie MIDI potrzebne są trzy typy gniazd [1]: MIDI IN wejście MIDI, MIDI OUT wyjście MIDI, MIDI THRU wyjście, przejmujące dane bezpośrednio z wejścia, tzw. przelotka (nie jest montowane we wszystkich urządzeniach).
XII Konferencja Sieci i Systemy Informatyczne Łódź, październik 2004 Rys. 1. Gniazda MIDI IN i MIDI OUT w instrumencie klawiszowym Z biegiem lat rozszerzano możliwości MIDI. Dzięki niemu można było przesyłać coraz więcej informacji. Wyposażono również komputery w odpowiedni port MIDI, co pociągnęło za sobą rozwój przemysłu informatycznego w dziedzinie tworzenia aplikacji pozwalających komunikować się komputerom z innymi urządzeniami pracującymi w systemie MIDI. Rys. 2. Standardowy kabel MIDI (dwa wtyki DIN-5 oraz wtyk do portu gier w karcie muzycznej komputera)
D. Kłys, W. Zabierowski, A. Napieralski APLIKACJA WYKORZYSTUJĄCA KOMUNIKATY MIDI, ODZWIERCIEDLENIE... 3. Wybrane sposoby połączeń urządzeń pracujących w systemie MIDI Poniższy rysunek przedstawia tzw. połączenie handshake, dzięki któremu urządzenia mogą sterować się nawzajem. Rys. 3. Połączenie handshake Select Instrument: 000 Acoustic Grand Piano In Out Thru Select Instrument: 000 Acoustic Grand Piano In Out Thru A B Select Instrument: 000 Acoustic Grand Piano In Out Thru Poniżej przedstawione jest połączenie instrumentu MIDI z komputerem. Aby skomunikować ze sobą oba urządzenia potrzebny jest jeszcze program sekwenserowy, który będzie miał możliwość odbierania i wysyłania komunikatów MIDI. 4. Klasyfikacja komunikatów MIDI Rys. 4. Połączenie instrumentu MIDI z komputerem Podziału dokonano w zależności od tego, jakiej sfery systemu MIDI komunikat dotyczył. W związku z tym wyodrębniono dwie główne grupy komunikatów MIDI: komunikaty kanałowe (ang. Channel Messages): komunikaty głosowe (ang. Voice Messages), komunikaty trybu pracy (ang. Mode Messages), komunikaty systemowe (ang. System Messages): komunikaty niestandardowe (ang. System Exclusive Messages), komunikaty wspólne dla wszystkich kanałów (ang. System Common Messages), komunikaty w czasie rzeczywistym (ang. System Real Time Messages). Poniżej została przedstawiona tabela ze strukturą komunikatów kanałowych. TABELA 1 Struktura komunikatów kanałowych Bajt statusu Pierwszy bajt danych Drugi bajt danych Nazwa komunikatu
XII Konferencja Sieci i Systemy Informatyczne Łódź, październik 2004 Hex Binary 8n 1010nnnn 9n 1010nnnn An 1010nnnn Bn 1010nnnn Cn 1010nnnn Dn 1010nnnn En 1010nnnn nr dźwięku nr dźwięku nr dźwięku nr kontrolera nr programu intensywność wybrzmiewania Pitch Bend MSB siła siła intensywność wybrzmiewania 0 lub 127, wartość parametru Note Off Note On Polyphonic Key Pressure (Aftertouch) Control Change - Program Change - Pitch Bend LSB n/nnnn nr kanału MIDI heksadecymalnie/binarnie 5. Aplikacja Channel Pressure (Aftertouch) Pitch Bend (Pitch Wheel) Głównym celem aplikacji był odczyt danych z zewnętrznego syntezatora i reprezentacja ich w postaci notacji nutowej na ekranie monitora. Rys. 5 Fragment zapisu nutowego wygenerowanego przez aplikację W przypadku zapisu nutowego zostały obsługiwane tylko dwa komunikaty: Note On oraz Note Off. W przypadku syntezatora z klawiaturą dynamiczną rejestrowana jest także siła wciśnięcia klawisza. Całość mamy możliwość zapisania w formacie pliku MIDI na dysku komputera i odtworzenia sekwencji. Aplikacja posiada także możliwość rejestrowania większej gamy komunikatów MIDI. Są to komunikaty należące do każdej z wymienionych grup. Aplikacja rozpoznaje rodzaj komunikatu na podstawie jego bajtu lub bajtów statusowych oraz prezentuje poszczególne składowe stanowiące strukturę komunikatu. Istnieje także możliwość wyfiltrowania określonych komunikatów z otrzymanej sekwencji (Rys. 7)
D. Kłys, W. Zabierowski, A. Napieralski APLIKACJA WYKORZYSTUJĄCA KOMUNIKATY MIDI, ODZWIERCIEDLENIE... Rys. 6 Fragment sekwencji komunikatów MIDI wraz z ich strukturą Rys. 7 Filtrowanie komunikatów Należałoby przedstawić w tej chwili moduł realizujący transmisję w drugą stronę, czyli z komputera na zewnętrzny syntezator. Aby móc zaobserwować efekt, wybrane zostały proste, ale zarazem łatwe do oceny ich roli, komunikaty. Mianowicie wysyłany jest komunikat Note On
XII Konferencja Sieci i Systemy Informatyczne Łódź, październik 2004 i w trakcie wybrzmiewania dźwięku, możemy regulować jego modulacją, położeniem w panoramie stereo, a także odchyleniem od ustalonej wysokości w górę i w dół. Rys. 8 Wysyłanie komunikatów MIDI na zewnętrzny syntezator Oczywiście wybrany przez użytkownika dźwięk wybrzmiewa na jednym z 16 kanałów MIDI, również przez niego określonym, z ustawioną głośnością oraz barwą. Wszystkie wartości parametrów są jasno określone w standardzie General MIDI Level 1. Aplikacja daje także możliwość graficznej reprezentacji wciskanych klawiszy na zewnętrznym syntezatorze w postaci wirtualnej klawiatury. Rys. 9 Wirtualna klawiatura Wciśnięcie odpowiednich klawiszy jest ilustrowane na ekranie monitora w postaci czerwonej kropki na danym klawiszu oraz odpowiednio umieszczonych nut na pięciolinii. Wciskając lewy klawisz myszy na odpowiednim klawiszu, wysyłam także komunikat w drugą stronę na wybrany wcześniej port MIDI Out.
D. Kłys, W. Zabierowski, A. Napieralski APLIKACJA WYKORZYSTUJĄCA KOMUNIKATY MIDI, ODZWIERCIEDLENIE... 6. Podsumowanie W artykule zaprezentowana została aplikacja realizująca połączenie dwukierunkowe komputera z zewnętrznym urządzeniem. Językiem komunikacji był język MIDI. Mimo tego, iż standard MIDI jest kojarzony z instrumentami muzycznymi i innymi wykorzystywanymi w tej dziedzinie, to jednak podłączenie do niego komputera może otwierać nowe możliwości zastosowania języka komunikacji, jakim jest języki MIDI. Na pewno zaletą jest prostota budowy komunikatów. Wykorzystując kartę dźwiękową komputera, możemy sterować zewnętrznym urządzeniem, którym zamiast instrumentu muzycznego może stać się każde inne. Wystarczy zaimplementować w nim własny kontroler MIDI, czyli moduł, który odbierałby komunikaty od komputera. Poza prostotą samego języka, należy również zwrócić uwagę na to, że aplikacja taka nie musi angażować dużych zasobów komputera i nie jest konieczne instalowanie w nim dodatkowych urządzeń, np. kart sterujących. W dzisiejszych komputerach karta dźwiękowa zgodna ze standardem MIDI jest częścią integralną, co eliminuje zbędne koszty. Nasze dalsze badania będą miały na celu usprawnienie samych algorytmów odbioru danych przez komputer, a w dalszym etapie podjęcie próby zastąpienia instrumentu muzycznego własnym urządzeniem. Literatura [1] F. Rumsey, MIDI Systems and Control, Focal Press 1990 [2] The Downloadable Sounds Level 1 Specification, version 97.1, MIDI Manufactures Association, 1997 [3] The Complete MIDI 1.0 Detailed Specification, version 96.1, MIDI Manufactures Association, 1996 [4] The Complete MIDI 1.0 Detailed Specification, Japanese version 98.1, Association of Musical Electronics Industry, 1998 [5] Microsoft Windows Multimedia Programmers Reference, Microsoft Press, 1991 [6] http://www.midi.org/ - specification of MIDI Level 1 DOMINIK KŁYS dklys@dmcs.p.lodz.pl WOJCIECH ZABIEROWSKI wojtekz@dmcs.p.lodz.pl ANDRZEJ NAPIERALSKI napier@dmcs.p.lodz.pl Katedra Mikroelektroniki i Technik Informatycznych Politechnika Łódzka 93-590 Łódź, Al. Politechniki 11 tel. (42) 631 26 45, fax. (42) 636 03 27