Polski

Ściąga wiadomości MIDI: każdy typ, status byte i zakres

Pobierz InputConfig z Mac App StoreTa aplikacja jest całkowicie darmowa. Nie trzeba zakładać konta. Nie ma subskrypcji ani skomplikowanych pobrań, a nic nie jest zablokowane. Zoptymalizowana pod Apple Silicon.

Wiadomość MIDI 1.0 to status byte, który mówi, czym jest wiadomość, a po nim zero, jeden lub dwa data byte. Jest siedem wiadomości kanałowych, od Note Off pod 80 hex do Pitch Bend pod E0, każda niesie kanał w ostatniej cyfrze, oraz zestaw wiadomości systemowych od F0 do FF, które nie mają żadnego kanału. Tabele poniżej obejmują każdą z nich, z zakresami każdego data byte, a każdy wiersz linkuje do strony na tym serwisie, która tłumaczy daną wiadomość dogłębnie.

Wartości pochodzą z podsumowania wiadomości MIDI 1.0 od MIDI Association i jej listy Control Change, czytanych 27 października 2026. Tworzę InputConfig, darmową aplikację na Maca, która czyta i wysyła MIDI, więc jedna tabela mówi, które z tych wiadomości obsługuje.

Kroki

  1. Odczytaj pierwszy bajt wiadomości w hex.
  2. Jeśli to 80 do EF, pierwsza cyfra nazywa wiadomość, a druga to kanał, 0 dla kanału 1 aż do F dla kanału 16.
  3. Jeśli to F0 do FF, to wiadomość systemowa bez kanału, więc znajdź ją w tabeli systemowej.
  4. Odczytaj data byte, które następują, każdy od 0 do 127, według tabeli kanałowej.
  5. Dla Control Change znajdź numer kontrolera w tabeli CC.

Odróżnij status byte od data byte

Każdy bajt w MIDI 1.0 jest albo status byte, albo data byte, a decyduje o tym najwyższy bit. W tabeli MIDI Association każdy status byte jest zapisany od 1 w systemie dwójkowym, a każdy data byte od 0.

  • Status byte. 80 do FF hex, 128 do 255. Zaczynają wiadomość.
  • Data byte. 00 do 7F hex, 0 do 127. Dlatego prawie każda wartość w MIDI kończy się na 127.
  • Kanał. W wiadomości kanałowej druga cyfra hex to kanał, 0 do F, który aplikacje pokazują jako kanały 1 do 16. Czyli 90 to Note On na kanale 1, a 9F to Note On na kanale 16.
  • Wartości 14-bitowe. Gdy 128 kroków nie wystarcza, dwa data byte łączą się: drobna połowa, LSB, i gruba połowa, MSB. Razem biegną od 0 do 16383, a Pitch Bend umieszcza swój środek na 8192, czyli 2000 hex.

Bajt 128 lub więcej zaczyna wiadomość, a bajt poniżej 128 niesie wartość. Kanały MIDI i MSB i LSB idą dalej w obu sprawach.

Przeczytaj wiadomości kanałowe

Te siedem niesie muzykę: nuty, nacisk, pokrętła, zmiany brzmień i kółko pitch. Kolumna statusu jest w hex, a niską cyfrę ustala kanał.

WiadomośćStatus (hex)Data byte 1Data byte 2Więcej
Note Off80 do 8FNumer nuty, 0 do 127Velocity zwolnienia, 0 do 127numery nut
Note On90 do 9FNumer nuty, 0 do 127Velocity, 0 do 127 (0 działa jak Note Off)velocity
Polyphonic key pressureA0 do AFNumer nuty, 0 do 127Nacisk, 0 do 127aftertouch
Control ChangeB0 do BFKontroler, 0 do 119Wartość, 0 do 127lista CC
Program ChangeC0 do CFProgram, 0 do 127Brakprogram change
Channel pressureD0 do DFNacisk, 0 do 127Brakaftertouch
Pitch BendE0 do EFDrobna połowa (LSB), 0 do 127Gruba połowa (MSB), 0 do 127pitch bend

Note On z velocity 0 liczy się jako Note Off, czego używa własny przewodnik MIDI Association po Arduino do kończenia nuty. Numer kontrolera Control Change kończy się na 119, bo 120 do 127 zajmują wiadomości trybu kanału poniżej. Zakresu Pitch Bend w półtonach nie ma w wiadomości wcale: ustala go odbiornik, a tabela MIDI zauważa, że można go ustawić przez RPN 0. Program Change i channel pressure niosą jeden data byte, a pozostałe pięć niesie dwa.

Poznaj wiadomości trybu kanału

Wiadomości trybu kanału używają status byte Control Change, B0 do BF, z numerami kontrolerów 120 do 127. Zmieniają to, jak kanał się zachowuje, a nie jak brzmi.

KontrolerNazwaCo robi
120All Sound OffWycisza wszystkie głosy naraz
121Reset All ControllersPrzywraca kontrolery do stanu domyślnego
122Local Control0 to wyłączone, 127 to włączone: czy klawisze grają własnym brzmieniem syntezatora
123All Notes OffZwalnia każdą trzymaną nutę
124 i 125Omni Mode Off i OnCzy urządzenie słucha na jednym kanale, czy na wszystkich
126 i 127Mono Mode On i Poly Mode OnJedna nuta na kanał albo akordy

Lista MIDI Association zauważa, że 124 do 127 też wyłączają wszystkie nuty. Przycisk panic to głównie CC 123 i CC 120 wysłane na wszystkich 16 kanałach. MIDI panic wymienia dokładne bajty.

Przeczytaj wiadomości systemowe

Wiadomości systemowe zaczynają się od F i nie niosą kanału, więc może je czytać każde urządzenie na kablu. F0 do F7 to wiadomości wspólne systemu, a F8 do FF to wiadomości czasu rzeczywistego, jedyne dozwolone w środku wiadomości SysEx.

Status (hex)WiadomośćDaneWięcej
F0System ExclusiveMaker ID, potem dowolna liczba data byte, aż do F7SysEx
F1MIDI Time Code quarter frameJeden bajt: kawałek time code
F2Song Position PointerDwa bajty: 14-bitowa liczba beatów od początku, gdzie beat to 6 zegarów
F3Song SelectJeden bajt: który utwór lub sekwencja
F6Tune RequestBrak. Prosi syntezatory analogowe o dostrojenie oscylatorów
F7End of ExclusiveBrak. Kończy wiadomość SysEx
F8Timing ClockBrak. Wysyłany 24 razy na ćwierćnutęzegar MIDI
FA, FB, FCStart, Continue, StopBrakzegar MIDI
FEActive SensingBrak. Opcjonalny, co najmniej co 300 ms, gdy urządzenie zacznie go wysyłać
FFResetBrak. Przywraca odbiorniki do stanu po włączeniu

F4, F5, F9 i FD są niezdefiniowane. Clock, Start i Stop to wiadomości systemowe, więc nigdy nie niosą kanału. O zrzutach SysEx i aplikacjach, które je wysyłają, zobacz stronę SysEx librarian na Maca.

Poznaj numery CC warte zapamiętania

Wiele ze 120 numerów Control Change zostało niezdefiniowanych, ale kilka ma nazwy w standardzie MIDI, których trzymają się syntezatory i aplikacje. Pochodzą z listy Control Change od MIDI Association.

CCNazwaWięcej
0 i 32Bank Select, MSB i LSBMSB i LSB
1Modulation wheellista CC
2Breath controller
4Foot controller
6 i 38Data Entry, MSB i LSBNRPN i RPN
7Channel Volume
10Pan
11Expression
64Pedał sustain (damper): 0 do 63 wyłączony, 64 do 127 włączonypedał sustain
65, 66, 67Portamento, Sostenuto i pedał Soft, włączony lub wyłączony
98 i 99Numer NRPN, LSB i MSBNRPN i RPN
100 i 101Numer RPN, LSB i MSBNRPN i RPN

Kontrolery 32 do 63 to drobne połowy, LSB, kontrolerów 0 do 31, i tak Bank Select staje się CC 0 plus CC 32. CC 64 to przełącznik, więc każda wartość od 64 w górę znaczy, że pedał jest wciśnięty. Lista MIDI CC wymienia każdy numer.

Zobacz, co InputConfig czyta i wysyła

InputConfig zamienia MIDI z klawiatury, kontrolera padów albo DAW w klawisze, kliknięcia, głośność Maca i więcej, a MIDI z kontrolera do gier lub klawiatury wysyła przez wirtualny port o nazwie InputConfig. Oto uczciwa lista, wiadomość po wiadomości.

WiadomośćPrzypisz jako wejścieWyślij jako wyjście
Note On i OffTak, jako trzymany przyciskTak, z velocity ustawionym w wierszu
Control ChangeTak, jako przełącznik, pokrętło albo obrótTak, stała wartość albo położenie gałki lub spustu
Pitch BendTak, plus i minus jak gałkaTak, z osi gałki albo z przycisku
AftertouchTakNie
Program ChangeTak, i może aktywować presetTak
Start, Continue, StopTakTak
Timing ClockNieNie
System ExclusiveNieNie
NRPN i RPNNieNie, wysyła pojedyncze wiadomości

Dwa szczegóły potykają ludzi. Przyciski nie czują velocity, więc każde wyjście MIDI Note gra z velocity ustawionym w jego wierszu, od 1 do 127, a spust na CC 11 to sposób na dynamikę. A pokrętło w trybie Switch strzela, gdy wartość przekroczy połowę, co zamienia pedał sustain w przełącznik włącz i wyłącz.

Live Visualizer InputConfig w widoku MIDI z presetem MIDI: Knob Deck, pokazujący klawiaturę, pokrętła i ostatnie wiadomości.
Figure 1. Live Visualizer nazywa każde pokrętło jego numerem CC, więc CC 7, 10, 64, 71 i 1 tutaj odczytujesz wprost z tabeli powyżej.
Edytor InputConfig pokazujący wiersze D-pada, z których każdy wysyła Program Change, jeden z Bank Select przed nim.
Figure 2. CC 0 i Program Change działające razem. D-pad w górę wysyła Bank Select, potem Program Change, jednym naciśnięciem.

Jeśli element steruje nutą, CC, pitch bend albo Program Change, InputConfig potrafi go przypisać. MIDI na klawisz i wyjście MIDI opisują konfigurację.

Gdy wiadomość nie jest taka, jak oczekiwano

Większość niespodzianek bierze się z numeracji, a nie ze zepsutego sprzętu. Idź tą drabiną, od najmniejszego kroku:

  1. Sprawdź liczenie kanałów. Bajt mówi od 0 do 15, a aplikacja od 1 do 16. Urządzenie na kanale 10 wysyła 99 dla Note On.
  2. Sprawdź liczenie programów. Wiadomość niesie od 0 do 127, a wiele list brzmień pokazuje od 1 do 128, więc brzmienie 1 jest wysyłane jako 0.
  3. Sprawdź ukryty Note Off. Note On z velocity 0 kończy nutę, więc log pełen Note On nadal może zwalniać klawisze.
  4. Zdekoduj surowe bajty. Wklej je do dekodera wiadomości MIDI albo obserwuj, jak przychodzą w testerze MIDI.

Błąd o jeden to najczęstszy błąd w MIDI.

Idź głębiej w jedną wiadomość

Każda strona tutaj bierze jeden wiersz tabel i tłumaczy go na przykładach. Jeśli to wszystko jest dla Ciebie nowe, zacznij od czym jest MIDI.

Krótka wersja

  • Najpierw status. Bajt 80 hex lub więcej zaczyna wiadomość, a bajty po nim to wartości od 0 do 127.
  • Wiadomości kanałowe. 80 do EF, z kanałem w ostatniej cyfrze.
  • Wiadomości systemowe. F0 do FF, bez kanału: SysEx, zegar, Start, Stop i reszta.
  • Duże liczby. Dwa data byte dają 0 do 16383, jak w Pitch Bend.

Odczytaj pierwszą cyfrę status byte, a wiesz, jakiego rodzaju jest wiadomość.

Pytania

Ile jest typów wiadomości MIDI?

MIDI 1.0 ma siedem wiadomości kanałowych (Note Off, Note On, polyphonic pressure, Control Change, Program Change, channel pressure i Pitch Bend), wiadomości trybu kanału na CC 120 do 127 oraz wiadomości systemowe od F0 do FF.

Czym jest status byte MIDI?

To pierwszy bajt wiadomości, od 80 do FF hex. Mówi, czym jest wiadomość, a dla wiadomości kanałowych, na którym z 16 kanałów się znajduje.

Czym różni się CC od NRPN?

CC to jedna wiadomość z numerem kontrolera i wartością od 0 do 127. NRPN wybiera parametr przez CC 99 i 98 i ustawia go przez Data Entry na CC 6 i 38, więc jedna zmiana to trzy lub cztery wiadomości.

Które wiadomości MIDI obsługuje InputConfig?

Przypisuje nuty, Control Change, pitch bend, aftertouch, Program Change oraz Start, Continue i Stop, a wysyła nuty, Control Change, pitch bend, Program Change i transport. Nie obsługuje zegara, SysEx ani NRPN.

Czy zegar MIDI jest wiadomością kanałową?

Nie. Timing Clock, F8, to systemowa wiadomość czasu rzeczywistego bez kanału, wysyłana 24 razy na ćwierćnutę.

Więcej po polsku

Pełne poradniki, po angielsku

Kto pisze. Ryleigh Newman tworzy InputConfig i na co dzień steruje własnym Makiem za pomocą kontrolera, bo ręce nie działają najlepiej. Ta strona jest przetłumaczona z angielskiego. Główne przyciski i menu aplikacji są po polsku, gdy Mac jest ustawiony na polski. Reszta aplikacji i witryny jest po angielsku.

Ta strona w innych językach: English, Deutsch, Español, Français, Italiano, 日本語, 한국어, Português, Русский, ไทย, 繁體中文, 简体中文

Pobierz InputConfig z Mac App StoreZa darmo. macOS 14 lub nowszy. Bez konta, nic nie opuszcza Twojego Maca. Open source na GitHubie.