MIDI cz.3.pdf

(432 KB) Pobierz
midi_cz3.indd
K U R S
MIDI – cyfrowy interfejs
instrumentów muzycznych ,
część 3
Skrót MIDI jest prawdopodobnie
wszystkim Czytelnikom dobrze
znany. Choć kojarzymy go
głównie z plikami dźwiękowymi,
jego znaczenie w świecie muzyki
i sztuki jest nieporównywalnie
większe. W niniejszym cyklu
artykułów postaramy się
przybliżyć standard MIDI
od strony technicznej. Po
teorii przyjdzie czas na
narzędzia, które ułatwiają
samodzielną budowę urządzeń
wyposażonych w ten interfejs.
Na koniec zaprezentujemy układ
interfejsowy, który posłuży za
bazę w pełni funkcjonalnego
instrumentu.
Wiadomości systemowe
Do kategorii wiadomości systemo-
wych należą komunikaty przesyłane
poza podziałem kanałowym. Są to
wiadomości niezwiązane bezpośrednio
z generacją dźwięku, przeznaczone dla
całego systemu urządzeń. Przykłado-
wo, umożliwiają one dostrojenie oscy-
latorów w syntezatorach, skonfigurowa-
nie sekwencera itp.
Zestawienie wiadomości syste-
mowych przedstawiono w tab. 7 . Do
komunikatów tych zalicza się rów-
nież wiadomości specjalne ( System
Exclusive ). Ich znaczenie oraz obję-
tość pola informacyjnego są w ogól-
nym przypadku nieokreślone i zależą
od producenta danego urządzenia.
Jednak niektóre rozszerzenia MIDI
(np. SDS, MTC itd.) wykorzystują
komunikaty specjalne do przesyła-
nia danych lub informacji w sposób
standaryzowany, o czym dalej.
Tab. 8. Wiadomości czasu rzeczywistego
Wiadomość
Bajt
statusu
Komentarz
zegara
muzycznego
(timing clock)
0xF8
Przesyłana 24 razy na każdą nutę ćwiartkę, jeśli istnieje taka potrzeba
(np. gdy konieczne jest zsynchronizowanie pracy dwóch sekwencerów).
zegara
absolutnego
(timing tick)
0xF9 Przesyłana co 10 ms, jeśli istnieje taka potrzeba.
Wiadomości czasu
rzeczywistego
Kolejnymi wiadomościami prze-
syłanymi z pominięciem mechani-
zmu kanałowania są komunikaty
czasu rzeczywistego. Do kategorii
tej należą wiadomości synchroni-
zujące pracę połączonych urządzeń
oraz sterujące pracą sekwencerów –
krótko opisano je w tab. 8 . Wszyst-
kie komunikaty tej grupy składają
się wyłącznie z bajtu statusu. Na-
leży zauważyć, że dokonywana
za ich pomocą synchronizacja ma
charakter muzyczny (na daną nutę
przypada określona liczba wiado-
mości zegarowych).
Jak wskazuje nazwa, istotny jest
moment, w którym przesyłany jest
tego typu komunikat. W związku
odtwarzania
utworu
(start)
0xFA
Rozpoczyna odtwarzanie wybranego utworu od jego początku. Wybór
utworu zachodzi poprzez odpowiednią wiadomość systemową (patrz
tabela 7).
kontynuacji
utworu
(continue)
0xFB
Rozpoczyna odtwarzanie wybranego utworu od miejsca, w którym
zostało ono zakończone, lub które zostało wskazane wiadomością
zmiany pozycji odtwarzania (patrz tabela 7).
wstrzymania
utworu
(stop)
0xFC
Wstrzymuje odtwarzanie utworu. Ponowne odtwarzanie może zajść od
miejsca zatrzymania utworu za sprawą wiadomości kontynuacji (kod
0xFB) lub od jego początku (0xFA).
aktywnego
połączenia
(active sensing)
0xFE
Po pierwszym wysłaniu tej wiadomości syntezator będzie oczekiwał jej
transmisji przynajmniej raz na 300 ms w stanie nieaktywności interfejsu
(gdy żadne inne wiadomości nie będą przesyłane). Jeśli przez czas
dłuższy niż 300 ms nie zostanie wysłany żaden komunikat, syntezator
powinien wygasić wszystkie wybrzmiewające dźwięki i wyłączyć tryb
oczekiwania na wiadomość aktywnego połączenia. Mechanizm ten
ma na celu wyłączenie wybrzmiewających dźwięków (stuck notes)
w przypadku uszkodzenia połączenia, lecz jest rzadko wykorzystywany.
zerowania
urządzeń
(reset)
0xFF
Przywraca połączone urządzenia w stan domyślny (tj. taki, jaki mają
one po włączeniu zasilania). Wiadomość ta nie powinna być przesyłana
automatycznie (w szczególności nie po włączeniu zasilania).
Elektronika Praktyczna 1/2006
105
682291433.019.png 682291433.020.png 682291433.021.png 682291433.022.png
K U R S
Tab. 7. Wiadomości systemowe
Wiadomość
Bajt
statusu
I bajt danych II bajt danych Komentarz
Zmiany pozycji
odtwarzania
utworu
(song position
pointer)
0xF2
0nnn nnnn
n – pozycja
w utworze
[LSB]
0nnn nnnn
n – pozycja
w utworze
[MSB]
Przesyłana sekwencerowi w celu wyboru miejsca, od którego rozpocznie się odtwarzanie
utworu. Pozycja jest określana liczbą nut szesnastek liczonych od początku utworu
(każdej szesnastce odpowiada sześć zegarów MIDI). Przesłanie wiadomości nie
rozpoczyna odtwarzania.
Wyboru utworu
(song select)
0xF3
0mmm
mmmm
m – numer
utworu
[brak]
Przesyłana sekwencerowi w celu wyboru utwóru, który ma zostać przygotowany do
odtworzenia. Przesłanie wiadomości nie rozpoczyna odtwarzania.
Żądania
dostrojenia
(tune request)
0xF6 [brak] [brak]
Praktycznie nieużywany już komunikat, służący dawniej do dostrajania oscylatorów
w syntezatorach analogowych.
Specjalna
(początek)
(system
exclusive start)
0xF0
0iii iiii
i
– identyfikator
producenta
dowolna
ilość danych
o dowolnym
znaczeniu
Rozszerza funkcjonalność interfejsu MIDI. Pierwszy jej bajt powinien stanowić
identyfikator producenta sprzętu, przyznany mu przez organizację MMA. Dalsza częścią
może być nieokreślona liczba danych o dowolnym znaczeniu (próbki brzmień, ustawienia
itp.). Wiadomość tę powinien kończyć komunikat końca wiadomości specjalnej (patrz
niżej). Choć w ogólności przeznaczenie tego komunikatu jest dowolne (jest on rozumiany
tylko w obrębie urządzeń jednego producenta), istnieją tzw. uniwersalne wiadomości
specjalne – tabela 9.
specjalna
(koniec)
(system
exclusive end)
0xF7 [brak] [brak]
Powinna kończyć wiadomość specjalną. Przesłanie innego bajtu statusu również spełnia
tę funkcję, lecz nie jest zalecane.
Ćwiartki ramki
SMPTE
(quarter frame)
0xF1
0nnn dddd
n – numer
przesyłanej
wiadomości
(0...7)
d – częściowa
informacja
o czasie
[brak]
Stanowi część podprotokołu MTC (opis w dalszej części artykułu). Jeśli to konieczne,
powinna być przesyłana czterokrotnie (w równych odstępach czasu) w trakcie upływu
jednej ramki SMPTE. Bajt danych tej wiadomości stanowi ósmą część informacji
o aktualnym czasie SMPTE. Kolejne wiadomości ćwiartki ramki posiadają wyższy numer
w części „n” i zawierają kolejne części informacji czasowej w „d”:
n=0: d – LSB numeru ramki,
n=1: d – MSB numeru ramki,
n=2: d – LSB sekund,
n=3: d – MSB sekund,
n=4: d – LSB minut,
n=5: d – MSB minut,
n=6: d – LSB godzin,
n=7: d – MSB godzin (bit d0) i typ SMPTE (d2 i d1).
Jeśli czas jest odmierzany wstecz, kolejność przesyłu wiadomości jest odwracana. Typ
SMPTE to informacja o ilości ramek na sekundę – 24 fps (d2d1=00), 25 fps (01), 30
fps z poślizgiem (10) lub 30 fps (11).
z tym wiadomości czasu rzeczywi-
stego mają specjalne prawa – mogą
być „wstrzeliwane” w wiadomości
innego typu (dźwiękowe i syste-
mowe). Inaczej rzecz ujmując, je-
śli istnieje taka konieczność, wia-
domość czasu rzeczywistego może
być przesyłana pomiędzy bajtami
danych komunikatu innego typu
(nie przerywa ona także trybu bie-
żącego).
Rozszerzenia funkcjonalności
Interfejs MIDI w ogólności nie
jest zawiły, ale i jego możliwości nie
są bardzo imponujące. Na szczęście
w standardzie pozostawiono furtkę
dla jego rozszerzeń. Mowa o wia-
domości specjalnej , należącej do
kategorii wiadomości systemowych.
Jak już mówiliśmy, wiadomość ta
może posiadać dowolne znaczenie
i zawartość, musi się ona tylko od-
powiednio rozpoczynać i kończyć
(tab. 7). W dalszej części artykułu
skupimy się na standaryzowanych
rozszerzeniach, które opierają się
na komunikatach specjalnych.
Pierwszym bajtem przesyłanym
wewnątrz wiadomości specjalnej po-
winien być identyfikator producenta
( maufacturer’s ID ). Powinna go stano-
wić wartość 1– lub 3–bajtowa (w dru-
gim przypadku pierwszy z trójki baj-
Rys. 5. Schemat konwertera GamePort – MIDI DIN
106
Elektronika Praktyczna 1/2006
682291433.001.png 682291433.002.png 682291433.003.png 682291433.004.png 682291433.005.png
K U R S
Tab. 9. Uniwersalne wiadomości specjalne
Wiadomość Ciąg bajtów Parametry
Komentarz
wywodzi się stąd, że wiadomość ta
przesyłana jest czterokrotnie (w rów-
nych odstępach czasu) dla jednej
tzw. ramki SMPTE. Jest ona krótka,
więc nie zajmuje interfejsu w sposób
znaczący, a w jej wnętrzu przesyła-
ne są informacje dotyczące czasu
– godziny, minuty, sekundy, numer
ramki i liczba ramek na sekundę, co
przedstawiono w tab. 7. Proces prze-
syłu pełnej informacji zajmuje aż
osiem wiadomości ćwiartki ramki,
gdyż w każdej przesyłana jest jedy-
nie informacja częściowa. Jeśli czas
odmierzany jest wstecz, kolejność
przesyłu wiadomości ćwiartki ramki
(składających się na pełną informa-
cję SMPTE) jest odwracana.
Poza komunikatem ćwiartki ram-
ki istnieją oczywiście inne wiado-
mości MTC, lecz te zaimplemento-
wano już jako uniwersalne wiado-
mości specjalne. Najbardziej przy-
datne zebrano w tab. 10 .
MTC definiuje pojęcie zdarzeń ,
czyli akcji podejmowanych w wybra-
nej chwili czasu. Chodzi tu przy-
kładowo o sterowanie urządzeniem
nagrywającym lub odtwarzającym.
Zarządzenie zdarzeniami zachodzi
poprzez wiadomość konfiguracji zda-
rzenia (ostatnia pozycja w tab. 10).
Jednym z jej parametrów jest rozkaz,
determinujący sposób konfiguracji
(kody rozkazów wraz z ich opisami
znajdują się w tab. 11 ). Kolejnymi
parametrami tego komunikatu są:
czas SMPTE, w którym zdarzenie
ma zostać wyzwolone, oraz jego
numer. Numer zdarzenia służy póź-
niejszej jego identyfikacji, np. przy
dalszej konfiguracji lub usuwaniu.
Od strony urządzenia podrzędnego
mechanizm obsługi zdarzeń można
wyobrazić sobie jako przeglądanie
chronologicznej tablicy ponumerowa-
nych zadań, które mają być podjęte
w określonym momencie. Urządzenie
nadrzędne ma prawo zarządzania
tą tablicą, tj. może ją modyfikować
oraz włączać i wyłączać jej obsługę.
blokująca
system GM
( GM system
enable )
0xF0
0x7E
param. 1.
0x09
param. 2.
0xF7
1. bajt kanału wiadomości
specjalnej (0x00 – 0x7F),
2. bajt informujący o wyłączeniu
(0x00) lub włączeniu (0x01)
systemu GM.
Umożliwia przełączenie urządzenia
w tryb niezgodny z GM, w którym
mogą być dostępne dodatkowe
banki brzmień.
głośności
absolutnej
( master
volume )
0xF0
0x7F
param. 1.
0x04
0x01
param. 2.
0xF7
1. bajt kanału wiadomości
specjalnej (0x00 – 0x7F),
2. dwa bajty informujące
o głośności (0x0000 – 0x3F).
Umożliwia regulację głośności
urządzenia (tj. wszystkich kanałów
jednocześnie).
żądania
identyfikacji
( identity
request )
0xF0
0x7E
param. 1.
0x06
0x01
0xF7
1. bajt kanału wiadomości
specjalnej (0x00 – 0x7F).
Pozwala na zidentyfikowanie
sprzętu dołączonego do łańcucha.
W wyniku odbioru wiadomości
żądania identyfikacji urządzenie
powinno odpowiedzieć niżej
przedstawionym komunikatem.
odpowiedzi
identyfikującej
( identity
answer )
0xF0
0x7E
param. 1.
0x06
0x02
param. 2.
0xF7
1. bajt kanału wiadomości
specjalnej (0x00 – 0x7F),
2. dziewięć bajtów
identyfikujących urządzenie
w następującej kolejności:
– bajt identyfikatora producenta,
– dwa bajty kodu rodziny,
– dwa bajty modelu,
– cztery bajty wersji.
Odpowiedź na przedstawiony
powyżej komunikat żądania
identyfikacji.
tów posiada wartość zerową). Identy-
fikatory są nadawane przez organiza-
cję MMA i – jak łatwo się domyślić
– są płatne. Na potrzeby edukacyjne
i rozwojowe można wykorzystywać
identyfikator okodzie 0x7D. Jednak
jeśli implementujemy wiadomość, co
do której mamy pewność, że jest
ona stosowana w sprzęcie pewnego
producenta, to wykorzystywanie jego
identyfikatora jest legalne. Tworzenie
nowych typów wiadomości leży jed-
nak wyłącznie w gestii producenta,
do którego należy identyfikator, iwia-
domości takie mogą mieć (wewnątrz
szkieletu wiadomości specjalnej) do-
wolną postać i przeznaczenie.
Przez wzgląd na popularność
niektórych komunikatów specjalnych
postanowiono je zestandaryzować,
tworząc uniwersalne wiadomości
specjalne . Przeznaczono dla nich
dwa identyfikatory: jeden dla wiado-
mości krytycznych czasowo – 0x7F
( realtime ID ), drugi dla komunika-
tów zwykłych – 0x7E ( non–realtime
ID ). Bajtem przesyłanym po identy-
fikatorze powinien być numer kana-
łu (0...127), na którym wiadomość
jest przesyłana. Tak więc również
tutaj wprowadza się mechanizm ka-
nałowania i to na aż 128 kanałach
(urządzenia mogą ignorować wiado-
mości specjalne, nadawane na kana-
łach innych niż ich własny). Przy
tym kanałowi ostatniemu (o numerze
127) odpowiada adresowanie wszyst-
kich połączonych urządzeń. Koniec
nagłówka wiadomości specjalnej po-
winny stanowić dwa bajty informu-
jące o znaczeniu wiadomości ( Sub
ID bytes ). Podstawowe komunikaty
tego typu zebrano w tab. 9 .
Poza uniwersalnymi komunikata-
mi specjalnymi wprowadzono kilka
dodatkowych, znacznie ciekawszych
rozszerzeń. Także one opierają się
na wiadomościach specjalnych i to
ich dotyczyć będzie dalsza część
artykułu.
MTC – synchronizacja
Choć podstawowy standard MIDI
przewiduje możliwość synchronizacji
pracy dwóch urządzeń, to możliwo-
ści tego rozwiązania są dość ogra-
niczone. Przy tym synchronizacja
zachodzi na płaszczyźnie muzycznej
(synchronizacja nut, taktów) a nie
czasu bezwzględnego, co nie zawsze
bywa wygodne (np. przy współpracy
z analogowym sprzętem nagrywająco
– odtwarzającym). W elektronicznym
świecie sztuki rozpowszechniony
jest standard synchronizacji czasu,
znany pod skrótem SMPTE ( Society
of Motion Picture and Television En-
gineers ). Postanowiono zaadoptować
go dla interfejsu MIDI, a nowemu
tworowi nadano nazwę MIDI Time
Code (MTC).
MTC jest podprotokołem, na któ-
rego potrzeby wprowadzona została
dodatkowa wiadomość systemowa
komunikat ćwiartki ramki ( qu-
arter frame message). Jego nazwa
MMC i MSC – sterowanie
Jednymi z ciekawszych – z na-
szego punktu widzenia – podpro-
tokołów MIDI są: MMC i jego bar-
dziej rozbudowana odmiana – MSC.
MMC ( MIDI Machine Control ) wyko-
rzystuje się głównie do sterowania
urządzeniami takimi, jak magnetofo-
ny i dyski twarde, na których utwo-
ry mogą być zapisywane lub z nich
odtwarzane. MSC natomiast ( MIDI
Show Control ) to podprotokół wyko-
Elektronika Praktyczna 1/2006
107
682291433.006.png 682291433.007.png 682291433.008.png
K U R S
Tab. 10. Wiadomości specjalne podprotokołu MTC
Wiadomość Ciąg bajtów Parametry
Komentarz
pełnej ramki
(full frame)
0xF0
0x7F
param. 1.
0x01
0x01
param. 2.
0xF7
1. bajt kanału wiadomości specjalnej (0x00 – 0x7F),
2. cztery bajty czasu w formacie SMPTE w następującej kolejności:
– godziny (0...12) oraz typ SMPTE,
– minuty (0...59),
– sekundy (0...59),
– ramki (0...29),
przy czym bity 6 i 5 bajtu godzin informują o typie SMPTE, tj. ilości ramek
na sekundę – 24 fps (b6b5=00), 25 fps (01), 30 fps z poślizgiem (10) lub
30 fps (11).
Przesyłana w celu poinformowania
urządzenia podrzędnego o zmianie czasu
SMPTE (przy inicjalizacji, przewijaniu itp.).
informacji
dodatkowej
(user bits)
0xF0
0x7F
param. 1.
0x01
0x02
param. 2.
param. 3.
0xF7
1. bajt kanału wiadomości specjalnej (0x00 – 0x7F),
2. osiem bajtów z wyzerowaną starszą tetradą (0000 aaaa), w kolejności
MSB...LSB, stanowiących informację dodatkową (SMPTE binary group 1...8),
3. bajt w formacie 0000 00ff, gdzie „f” decyduje o formacie informacji
dodatkowej (SMPTE group flag bits).
Dostarcza dodatkowej informacji, dotyczącej
przykładowo odtwarzanej kasety. Jej
wartość (bity „a”) mogą składać się na 4
znaki ASCII lub 8 cyfr BCD.
informacji
o metrum
(time
signature)
0xF0
0x7F
param. 1.
0x03
param. 2.
param. 3.
param. 4.
param. 5.
param. 6.
0xF7
1. bajt kanału wiadomości specjalnej (0x00 – 0x7F),
2. równy 0x02, jeśli metrum ma być zmienione natychmiast, lub równy
0x42, jeśli metrum ma być zmienione po zakończeniu bieżącego taktu,
3. bajt informujący o sumarycznej objętości parametrów 4., 5. i 6. (zwykle
0x03),
4. dwa bajty, określające kolejno licznik i mianownik metrum, przy czym
mianownik określa się, przesyłając wartość wykładnika liczby 2,
5. bajt określający liczbę nut trzydziestek dwójek, przypadających na 24
zegary MIDI (zwykle 0x08),
6. opcjonalne pary bajtów w formacie parametru 4, stanowiące addytywne
składniki metrum.
Dostarcza informacji o aktualnym metrum
(4/4, 3/4 itp.).
początku
taktu
(bar marker)
0xF0
0x7F
param. 1.
0x03
0x01
param. 2.
0xF7
1. bajt kanału wiadomości specjalnej (0x00 – 0x7F),
2. dwa bajty określające numer aktualnego taktu, oba w formacie 0nnn
nnnn, składające się na wartość 14–bitową ze znakiem (U2), w kolejności
LSB–MSB; wartości ujemne oznaczają odliczanie przed rozpoczęciem utworu,
maksymalna wartość ujemna – zatrzymanie, a maksymalna wartość dodatnia
– odtwarzanie bez rozróżnienia taktów.
Pozwala wprowadzić opóźnienie
w odtwarzaniu utworu poprzez nastawę
ujemnego numeru taktu lub przyśpieszenie
przy nastawie numeru dodatniego.
konfiguracji
zdarzenia
(setup
message)
0xF0
0x7F
param. 1.
0x04
param. 2.
param. 3.
param. 4.
param. 5.
0xF7
1. bajt kanału wiadomości specjalnej (0x00 – 0x7F),
2. bajt stanowiący kod rozkazu (patrz tabela 11),
3. pięć bajtów określających czas zdarzenia w formacie SMPTE,
w następującej kolejności:
– godziny (0...12) oraz typ SMPTE,
– minuty (0...59),
– sekundy (0...59),
– ramki (0...29),
– setne części ramki (0...99),
przy czym typ SMPTE definiuje się jak przy wiadomości pełnej ramki,
4. dwa bajty w formacie 0nnn nnnn, w kolejności LSB...MSB, określające
numer zdarzenia.
5. opcjonalna informacja dodatkowa w formacie 0000 aaaa, o nieokreślonej
długości, w kolejności LSB...MSB, przesyłana tylko dla wybranych zdarzeń.
Umożliwia konfigurowanie zdarzeń MTC,
tj. dodanie informacji o akcji do tablicy
zdarzeń. Dostępne rodzaje zdarzeń zostały
zebrane w tabeli 11.
Słowniczek
controller – sterownik – „wirtualne pokrętło”,
umożliwiające m.in. wywieranie wpływu
na sposób syntezy dźwięku (np. nastawa
głośności, wybór banku brzmień, przestrajanie
tonu itp.)
message – wiadomość, komunikat
– pojedynczy pakiet protokołu MIDI; składa
się z pewnej liczby bajtów danych (zakres
0...127), poprzedzonych bajtem statusu
(128...256), określającym typ wiadomości i jej
przeznaczenie
monophony – monofoniczny – zdolny do
generowania jednego dźwięku w jednej chwili
lub na jednym kanale (dotyczy syntezatora
lub trybu działania kanału)
multitimbral – wielobrzmieniowy – zdolny
do generowania wielu dźwięków różnych
instrumentów w jednej chwili (dotyczy
syntezatorów i samplerów)
patch, porogram, timbre – brzmienie
– sposób syntezy dźwięku; parametryzacji
podlegają m.in.: zawartość harmonicznych
i kształt obwiedni (dla syntezy FM) lub zbiór
próbek (dla syntezy odtwórczej)
polyphony – polifoniczny – zdolny do
generowania wielu dźwięków w jednej chwili
lub na jednym kanale (dotyczy syntezatora
lub trybu działania kanału)
sampler – sampler – urządzenie
syntetyzujące dźwięk w odpowiedzi na
komunikaty MIDI na drodze odtwarzania
i przetwarzania próbek zapisanych
w wewnętrznej pamięci nieulotnej
sequencer – sekwencer – urządzenie
umożliwiające zapisywanie i odtwarzanie
sekwencji MIDI w sposób cyfrowy
sound module – moduł dźwiękowy – sampler
lub syntezator
synthesizer – syntezator – urządzenie
syntetyzujące dźwięk w odpowiedzi na
komunikaty MIDI lub uderzenia klawiszy na
drodze syntezy FM (może być wyposażone
w klawiaturę muzyczną lub nie)
voice – dźwięk – efekt procesu syntezy
dźwięku, przeprowadzanego w odpowiedzi na
wiadomość generacji dźwięku
rzystywany do sterowania urządze-
niami automatyzującymi przedsta-
wienia (światła, efekty dymne itp.).
Podobnie jak MTC, podprotoko-
ły MMC i MSC definiują dodatko-
we uniwersalne wiadomości specjal-
ne. Przy tym każdemu urządzeniu
w łańcuchu MIDI przyporządkowywa-
ny jest unikalny numer (ID) o 7–bi-
towej szerokości (sposób kanałowa-
nia wiadomości specjalnych). Każda
uniwersalna wiadomość specjalna
podprotokołu MMC musi zawierać
w swym wnętrzu numer urządzenia,
do którego jest ona adresowana. Po-
nownie adresowi najwyższemu (127)
odpowiada adresowanie wszystkich
urządzeń połączonych w łańcuch.
Najczęściej wykorzystywane roz-
kazy MMC przedstawiono w tab. 12 .
Ogólna postać wszystkich wiadomości
108
Elektronika Praktyczna 1/2006
682291433.009.png 682291433.010.png 682291433.011.png 682291433.012.png 682291433.013.png
K U R S
Tab. 11. Rozkazy MTC (dla wiadomości konfiguracji zdarzenia)
Rozkaz MTC
Kod Komentarz
Specjalny
(special)
0x00
Pozwala na ogólne zarządzanie zdarzeniami. Czas określany przy rozkazie specjalnym
(przesyłany jako 3 parametr wiadomości konfiguracji zdarzenia) nie ma znaczenia, poza
przypadkiem pierwszym i ostatnim (dla numerów 0x0000 i 0x0005). Numer zdarzenia
(przesyłany jako parametr 4) informuje tutaj o rodzaju podejmowanej akcji:
0x0000: time code offset – nastaw względne przesunięcie czasu (powoduje, że czasy
w urządzeniu nadrzędnym i podrzędnym są interpretowane współbieżnie mimo ich stałego
przesunięcia; przesunięcie przesyłane jest jako parametr 3 wiadomości konfiguracji),
0x0001: enable event list – odblokuj funkcję obsługi zdarzeń,
0x0002: disable event list – zablokuj funkcję obsługi zdarzeń,
0x0003: clear event list – zeruj listę zdarzeń,
0x0004: system stop – wyłącz urządzenie podrzędne,
0x0005: event list request – żądaj przesłania listy zaprogramowanych zdarzeń (zostanie ona
odesłana w postaci ciągu wiadomości konfiguracji zdarzeń, począwszy od czasu SMPTE
określonego we wiadomości żądania).
ustaw punkt początku nagrywania
(punch in)
0x01
ustaw punkt końca nagrywania
(punch out)
0x02
Pozwalają ustawić lub skasować zdarzenie włączenia lub wyłączenia urządzenia nagrywającego
w określonej chwili czasu SMPTE (zależnej od parametru 3 wiadomości konfiguracji). Zdarzeń
tego typu można skonfigurować wiele, lecz muszą się one różnić numerem (parametrem 4
wiadomości konfiguracji).
skasuj punkt początku nagrania
(delete punch in)
0x03
skasuj punkt końca nagrania
(delete punch out)
0x04
ustaw punkt początku akcji
(event start)
0x05
ustaw punkt końca akcji
(event stop)
0x06
ustaw punkt początku akcji z informacją
(event start with info)
0x07
Mają podobne znaczenie jak wyżej opisywane, lecz mogą dotyczyć dowolnej akcji (np.
odtwarzania). Wiadomość konfiguracji zdarzenia zinformacją powinna posiadać dodatkowy
parametr 5, który może określać dowolne parametry definiowanego zdarzenia (np. głośność
odtwarzania).
ustaw punkt końca akcji z informacją
(event stop with info)
0x08
skasuj punkt początku akcji
(delete event start)
0x09
skasuj punkt końca akcji
(delete event stop)
0x0A
ustaw punkt akcji
(cue point)
0x0B
Konfigurują zdarzenia jednorazowe. Ich numer (parametr 4 wiadomości konfiguracji) może
określać rodzaj podejmowanej akcji. Wiadomość konfiguracji zdarzenia zinformacją powinna
posiadać dodatkowy parametr 5, który może określać dowolne parametry definiowanego
zdarzenia.
ustaw punkt akcji z informacją
(cue point with info)
0x0C
skasuj punkt akcji
(delete cue point)
0x0D
nadaj nazwę zdarzeniu
(event name with info)
0x0E
Pozwala nadać etykietę tekstową zdarzeniu o numerze zgodnym z numerem wiadomości
konfigurującej nazwę. Wiadomość konfiguracji powinna posiadać dodatkowy parametr 5,
w którym przesyłana powinna być etykieta tekstowa w formacie ASCII rozdzielonym na tetrady
(bajty parametru 5 powinny mieć zawsze starszą tetradę wyzerowaną, np. dla „A”=0x41
należy przesłać kolejno 0x01, 0x04).
tego podprotokołu jest następująca:
0xF0, 0x7F, <ID>, 0x06, <roz-
kaz i parametry z tab. 12>, 0xF7
starczania informacji o brzmieniach
itd.), a przy tym – z naszego punk-
tu widzenia – mało interesujący.
Jego dokładny opis zostaje więc
tutaj pominięty, a o alternatywnych
źródłach informacij powiemy w dal-
szej części artykułu.
Pliki SMF ( Standard MIDI File )
są zgodne ze standardem IFF ( In-
terchangeable File Format ). Mają
one postać binarną i składają się
z tzw. „kawałków” ( chunks ), roz-
dzielanych nagłówkami. W ich wnę-
trzu przechowywane są wiadomości
MIDI wraz z informacją o czasie ich
odbioru, przy czym czas jest od-
mierzany względnie pomiędzy pa-
rami sąsiednich komunikatów. Poza
tą oczywistą zawartością, pliki SMF
mogą przechowywać wiele informa-
cji dodatkowych. Wymienić można
SDS – transmisja próbek
Współczesne syntezatory posiada-
ją opcję ładowania banków brzmień
próbkami dostarczonymi przez użyt-
kownika. Jednym z możliwych mediów
transferu jest dyskietka – syntezatory
wyposażane są często w odpowiednie
stacje. Sposób wolniejszy – choć cza-
sem wygodniejszy – polega na trans-
misji próbek banku brzmień poprzez
interfejs MIDI. Specjalnie w tym celu
zdefiniowano protokół SDS.
SDS ( Sample Dump Standard )
jest kolejnym podprotokołem opar-
tym na uniwersalnych wiadomo-
ściach specjalnych. Jest on jednak
dość skomplikowany (zdefiniowano
w nim różne sposoby potwierdeń,
kontroli poprawności transmisji, do-
Standardowe pliki MIDI
Jak już wielokrotnie wspomi-
nano, transmisja MIDI może być
nagrywana. Sposób jej zapisu jest
standaryzowany, a standard znany
jest pod skrótem SMF.
Akronimy
GM General MIDI
MIDI Musical Instrument Digital Interface
MMA MIDI Manufacturers Association
MMC MIDI Machine Control
MSC MIDI Show Control
MTC Midi Time Code
NRPN Non–Registered Parameter Number
RPN Registered Parameter Number
SDS Sample Dump Standard
SMF Standard MIDI File
SMPTE Society of Motion Picture and
Television Engineers
SysEx System Exclusive
VCA Voltage Controlled Amplifier
VCF Voltage Controlled Filter
VCO Voltage Controlled Oscillator
Elektronika Praktyczna 1/2006
109
682291433.014.png 682291433.015.png 682291433.016.png 682291433.017.png 682291433.018.png
Zgłoś jeśli naruszono regulamin