Prawie czterdzieści lat po pierwszym wprowadzeniu cyfrowego protokołu muzycznego MIDI, w 2020 roku ogłoszono protokół MIDI 2.0 jako gruntowny przegląd tego powszechnie używanego standardu przez urządzenia muzyczne. Wysłana dzisiaj duża seria poprawek przygotowuje sterowniki dźwięku jądra Linuksa do MIDI 2.0.
MIDI 2.0 pozwala na wyższą rozdzielczość, lepszą artykulację, Universal MIDI Packet (UMP) do pakowania wielu komunikatów MIDI w celu łatwiejszego transportu, mniejszego jittera i różnych innych nowych funkcji i ulepszeń. Specyfikacje MIDI 2.0 zostały udostępnione przez Stowarzyszenie MIDI pod adresem MIDI.org, podczas gdy dziś rano po raz pierwszy zobaczyłem rozszerzenie sterowników jądra Linuksa o MIDI 2.0.
Opiekun podsystemu dźwiękowego Linuksa, Takashi Iwai z SUSE, wysłał zestaw 36 poprawek — i około sześciu tysięcy linii nowego kodu — do przygotowania jądra dla MIDI 2.0, głównie z USB Audio i surowe sterowniki MIDI.
Takashi Iwai wyjaśnił w seria łatek:
„To jest (duży) zestaw łatek do dodania obsługi funkcjonalności MIDI 2.0, przeznaczony głównie dla Urządzenia USB. MIDI 2.0 to kompletna przeróbka 40-letniego MIDI 1.0. W przeciwieństwie do strumienia bajtów MIDI 1.0, MIDI 2.0 wykorzystuje pakiety w 32-bitowych słowach dla protokołu UMP (Universal MIDI Packet). Obsługuje zarówno polecenia MIDI 1.0 w celu zapewnienia kompatybilności, jak i rozszerzone polecenia MIDI 2.0 dla wyższych rozdzielczości i większej liczby funkcji.
Do obsługi UMP, zestaw poprawek rozszerza istniejące interfejsy rawmidi i sekwencera ALSA oraz dodaje obsługę USB MIDI 2.0 do standardowego sterownika audio USB.
Rawmidi dla UMP ma inną nazwę urządzenia (/dev/snd/umpC*D*) i odczytuje/zapisuje dane pakietowe UMP w 32-bitowej endianności natywnej dla procesora. W przypadku starych aplikacji MIDI 1.0 dostępny jest również interfejs rawmidi.
Domyślnie sterownik USB-audio przyjmuje alternatywne ustawienie dla interfejsu MIDI 2.0, a kompatybilność z MIDI 1.0 zapewnia wspólna warstwa rawmidi. Jednak użytkownik może pozwolić sterownikowi na powrót do starego interfejsu MIDI 1.0 również za pomocą opcji modułu.
Urządzenie Rawmidi obsługujące UMP może utworzyć odpowiedniego klienta sekwencera ALSA do obsługi połączeń UMP Endpoint i UMP Group. Ze względu na naturę sekwencera ALSA dozwolone są dowolne połączenia między klientami/portami, a rdzeń sekwencera ALSA wykonuje automatyczne konwersje dla połączeń między nowym klientem sekwencera UMP a starszym klientem sekwencera MIDI 1.0. Pozwala istniejącej aplikacji na korzystanie z urządzeń MIDI 2.0 bez zmian.
MIDI-CI, które jest kolejnym ważnym rozszerzeniem w MIDI 2.0, nie jest objęte tym zestawem poprawek. Zostałby zaimplementowany raczej w przestrzeni użytkownika.”
Kod MIDI 2.0 dla jądra Linuksa jest obecnie weryfikowany i jeśli wszystko pójdzie dobrze, może potencjalnie zostać włączony do cyklu v6.5 w tym roku lato.