MIDIBox (2). Niezwykły kontroler MIDI

MIDIBox (2). Niezwykły kontroler MIDI

W poprzednim wydaniu "Elektroniki Praktycznej" omawialiśmy modularną budowę projektu MIDIBox Thorstena Klose. Tym razem przyjrzymy się poszczególnym projektom MIDIBoxa. Każdy z nich składa się z dwóch podstawowych elementów: konfiguracji sprzętowej i aplikacji działającej pod kontrolą systemu MIOS.

Na stronie www.uCapps.de znaleźć można galerię pokazującą praktyczne realizacje różnych projektów, często bardzo dopracowane pod względem wyglądu. Projekty na stronie podzielone są na dwie kategorie: projekty wciąż wspierane oraz projekty stare, porzucone ze względu na ograniczenia sprzętu lub/i oprogramowania. Zanim jednak przejdziemy do projektów, warto przyjrzeć się rdzeniowi oprogramowania.

MIOS8 i MIOS32

Oprogramowanie MIDIBoxa rozwijane było już od roku 1998, ale w 2002 powstał system operacyjny IOS. Do 2008 roku MIOS działał tylko na mikrokontrolerach PIC, ale w ciągu kolejnych dwóch lat powstała też wersja 32-bitowa. Aplikacje dla MIOS8 pierwotnie pisane były w asemblerze, co mocno utrudniało zrozumienie, jak właściwie one działają, ale w zamian oferowało nieco wyższą wydajność. Pojawienie się MIOS32 i wsparcia dla mikrokontrolerów ARM pozwoliły na tworzenie aplikacji w języku C/C++ bez straty wydajności. Wręcz odwrotnie, wydajność jest znacząco wyższa, biorąc pod uwagę, iż mikrokontrolery PIC oferują maksymalnie 10 MIPS, podczas gdy STM32F103RE, czyli pierwszy wspierany przez MIOS32 mikrokontroler, oferuje 90 DMIPS. Szersza szyna danych i bardziej rozbudowane ALU dodatkowo jeszcze tę wydajność podnoszą względem ośmiobitowych PIC-ów w obliczeniach używających liczb większych niż ośmiobitowe. Nie wspominając już o przewadze w ilości pamięci RAM czy pamięci programu, oraz dzięki portowi USB, który znacząco ułatwia współpracę z komputerem - nie potrzeba (dobrego) interfejsu USB-MIDI.

Mimo wielu zalet wariantu 32-bitowego ja bym jednak nie odrzucał MIOS8 i mikrokontrolerów PIC. Na pewno wielką zaletą jest niższa cena, zwłaszcza że wariant 32-bitowy bazuje na płytkach developerskich, które są droższe, a i z ich dostępnością bywa różnie. MIOS8 i mikrokontrolery PIC oferują wystarczającą wydajność dla wielu użytecznych aplikacji, pod warunkiem że nie przeszkadza nam brak USB (ale i na to jest sposób, o czym będzie dalej). Wszystkie podstawowe aplikacje, jak kontrolery MIDI, sekwencery i syntezatory, powstały najpierw w wersji dla MIOS8. Co ważniejsze, nie każda aplikacja jest dostępna dla MIOS32, jak też nie każda jest dostępna dla MIOS8. Trzeba na to zwrócić uwagę, zanim zacznie się planować budowę swojego wymarzonego urządzenia MIDI.

Ważnym elementem całej platformy jest aplikacja MIOS Studio. Jeśli tylko mikrokontroler ma załadowany odpowiedni bootloader, MIOS Studio pozwoli na załadowanie systemu MIOS8 (przez MIDI) lub MIOS32 (przez USB), a także wybranej aplikacji. MIOS Studio pozwala też na konfigurowanie naszego urządzenia MIDI, odczyt i zapis ustawień zapisanych w pamięci BankStick lub na karcie SD, i na wiele więcej. Oczywiście po zaprogramowaniu i skonfigurowaniu kontrolera nie trzeba już z tej aplikacji korzystać, ale może się ona przydać do zarządzania zachowanymi konfiguracjami urządzenia (zapisanymi w modułach BankStick lub na karcie SD).

Rzeczą, o której warto pamiętać, jest to iż MIDIBox jest projektem otwartym i niekomercyjnym. Otwartość oznacza, że każdy może zgłębić tajniki kodu źródłowego i napisać własne aplikacje dla MIOS8 czy MIOS32, a także zaprojektować własne moduły czy wręcz całe kontrolery. Na stronie Thorstena Klose znajdziemy projekty od użytkowników oraz galerię zrealizowanych kontrolerów. Niekomercyjna natura licencji projektu oznacza jednak, że te kontrolery nie mogą się pojawić w szerszej dystrybucji ani w formie gotowych urządzeń, ani nawet jako kity. Inaczej pisząc, każda zainteresowana osoba musi samodzielnie wszystko wykonać. Moim zdaniem jest to wada znacząco ograniczająca popularność MIDIBoxów. Szkoda, bo projekty są bardzo użyteczne. Dzielą się na dwie kategorie: bieżące i archiwalne. Istnieje też trzecia kategoria, projekty użytkowników, ale należy je traktować bardziej jako przykłady realizacji.

Projekty bieżące

Te projekty są wciąż aktywnie wspierane. Część jest realizowana dla platform 32-bitowych, a część jest dostępna tylko dla wariantu ośmiobitowego. Zaczniemy od projektów z mikrokontrolerami 32-bitowymi.

Pierwszym z nich jest MIDIBox SEQ V4 Lite. Jest to bardzo prosty, choć mimo wszystko potężny sekwencer MIDI, czyli urządzenie pozwalające na zapisanie i odtwarzanie sekwencji poleceń MIDI, które kontrolują syntezatory i inne urządzenia MIDI. SEQ V4 Lite zawiera jedynie 48 przycisków i 64 diody LED, lecz jest to wystarczające, by zapisywać i odtwarzać różne sekwencje oraz dodawać do nich efekty oparte na poleceniach MIDI.

Fotografia 1. Sekwencer MIDIBox SEQ V4 Lite

Fotografia 1 i rysunek 1 prezentują wykonany sekwencer oraz jego schemat.

Rysunek 1. Schemat połączeń dla sekwencera MIDIBox SEQ V4 Lite

Jeśli jednak ktoś potrzebuje większej kontroli i więcej funkcji, to do wyboru jest MIDIBox SEQ V4. Ten sekwencer (fotografia 2) jest dużo bardziej rozbudowany, ma do czterech wejść MIDI i do 12 wyjść, podwójny wyświetlacz LCD niezbędny do obsługi wszystkich zaawansowanych funkcji, czy 17 enkoderów (po jednym na ścieżkę plus obsługa menu). SEQ V4 odtwarza cztery sekwencje naraz, każda składa się z czterech ścieżek, a każda ścieżka z 16 różnych "warstw", czyli kontrolowanych parametrów.

Fotografia 2. Sekwencer MIDIBox SEQ V4

Rozbudowany Arpeggiator pozwala zmienić pojedynczą nutę lub akord w serię nut tworzących predefiniowany wzorzec, dzięki czemu grany utwór nabiera większej głębi.

Humanizer losowo zmienia wprowadzone wartości tak, by grane sekwencje nie brzmiały "jak z komputera", tylko były nieco bardziej "ludzkie".

Same ścieżki mają wiele dodatkowych funkcji kontrolnych, jak zapętlanie i skoki, co przypomina MOD Trackery (programy do tworzenia muzyki) z lat 80. i 90.

SEQ V4 jest tak bardzo rozbudowany, że mógłbym mu poświęcić cały osobny artykuł. Ograniczę się jednak do stwierdzenia, że z pomocą tego sekwencera można zmienić średniej klasy keyboard w odpowiednik profesjonalnego instrumentu do komponowania i grania na żywo, jak seria Yamaha Tyros.

Projekt MIDIBox NG ma nieco inne przeznaczenie. Nie służy bowiem do kontrolowania innych instrumentów (choć technicznie rzecz biorąc, może to robić), lecz do kontrolowania programów DAW (Digital Audio Workstation - cyfrowa stacja robocza audio) oraz pluginów VST (Virtual Studio Technology - format stworzony przez firmę Steinberg).

Każda osoba zainteresowana tworzeniem muzyki kojarzy takie programy, jak GarageBand, Ableton Live, FL Studio (dawniej FruityLoops, ale musieli zmienić nazwę, by nikt nie mylił programu z marką płatków kukurydzianych), Logic Pro czy Cubase. Posiadanie fizycznego kontrolera bardzo ułatwia zarówno tworzenie muzyki, jak i występowanie na żywo, i właśnie do tego przeznaczony jest MIDIBox NG. Nazwa oznacza następną generację kontrolera, gdyż projekt ten bazuje na projektach MIDIBox 64 V2 i 64E V2, o których opowiem w dalszej części artykułu.

MIDIBox NG korzysta w pełni z możliwości 32-bitowych mikrokontrolerów, by obsługiwać nawet 2048 przycisków czy diod LED. Ale to nie wszystko, bo można też podłączyć do 128 enkoderów, 128 potencjometrów i do 32 potencjometrów zmotoryzowanych (których pozycja jest kontrolowana też przez oprogramowanie, jak w profesjonalnych stołach mikserskich). Niestety, sam projekt jest jeszcze w wersji beta, więc nie wszystko może działać poprawnie. Na stronie brakuje też dokładnych informacji na temat budowy tego kontrolera, a i instrukcja obsługi nie jest jeszcze skończona.

Warto w tym miejscu wspomnieć jeszcze o MIDIO128 V3, projekcie opracowanym po to, by dodać funkcjonalność kontrolera MIDI instrumentom i urządzeniom niemającym takiej możliwości. Typowym przykładem są organy - wersje klasyczne (piszczałkowe), elektromechaniczne (elektroniczna klawiatura kontroluje zawory pneumatyczne w skrzyniach wiatrowych) czy całkowicie elektroniczne - używające jakiejś formy syntezy (jak organy Hammonda) czy odtwarzania dźwięku (jak Mellotron). Z pomocą MIDIO 128 V3 możemy zamienić manuały i pedały oraz przełączniki czy suwaki w takich organach na sygnały kontrolne MIDI dla organów wirtualnych (pluginów VST). Może to też działać w drugą stronę, pozwalając komputerowi kontrolować fizyczny instrument normalnie niemający tej opcji.

Jednym z dwóch aktywnych projektów z 8-bitowym mikrokontrolerem PIC jest syntezator MIDIBox SID V2. Na fotografii 3 widać bardzo dopracowany pod względem wykonania egzemplarz zrobiony przez Wilbę. Syntezator ten używa dwóch układów SID firmy MOS, znanych z komputerów Commodore 64, do polifonicznej syntezy dźwięku. Są też wersje używające nawet ośmiu układów. Sam syntezator jest bardzo rozbudowany, i daje autentyczne brzmienie muzyki lat 80., ale z powodu wysokiej ceny oryginalnych układów SID jego wykonanie może być poza zasięgiem typowego hobbysty. Można użyć zamiennika w rodzaju emulacji SwinSID, ale "puryści syntezy" nie będą takiej wersji poważać (niesłusznie).

Fotografia 3. Syntezator MIDIBox SID V2 wykonany przez Wilbę

Drugim projektem wciąż bazujacym na układzie 8-bitowym jest inny syntezator - MIDIBox FM Synth. W tym przypadku do wytwarzania dźwięku używany jest układ firmy Yamaha, YMF262, zwany też OPL3. Układ ten odpowiada za 16-bitowe brzmienie wielu gier końca lat 80. i początku lat 90. Co więcej, ze względu na mnogość urządzeń produkowanych z tym układem, jego ceny są relatywnie niskie, i nie ma aż tak dużych problemów z dostępnością. Na stronie poświęconej modułowi OPL3 wypisane są modele kart dźwiękowych, w których znajdziemy YMF262 i współpracujące z nim układy YAC512. Sam projekt oferuje 6 głosów i 5 instrumentów perkusyjnych. Każdy głos jest ze swej natury monofoniczny, ale syntezator może użyć dwóch lub więcej głosów jako jednego instrumentu celem uzyskania polifonii.

Zarówno MIDIBox SID V2, jak i MIDIBox FM Synth same z siebie "nie grają" i potrzebują źródła komunikatów MIDI, jak klawiatura sterująca, komputer z programem DAW czy sekwencer (jak wspomniany wyżej SEQ V4/V4 Lite). Za to użytkownik może kontrolować wszystkie parametry obu syntezatorów "na żywo", by osiągnąć pożądane brzmienie. Ciekawą opcją jest rozbudowanie projektu MIDIBox FM Synth o moduły AOUT pozwalające na użycie bloków, głównie filtrów sterowanych napięciem, z analogowych syntezatorów modularnych (jak Moog) do dalszej modyfikacji brzmienia.

Projekty archiwalne

Te projekty są umieszczone na dedykowanej im podstronie głównie ze względu na to, że imć Klose skupił się na 32-bitowych wersjach niektórych z nich. Moim zdaniem jednak te projekty są jak najbardziej wartościowe i mogą wzbudzić zainteresowanie osoby o ograniczonym budżecie. O problemach z dostępnością zestawów rozwojowych z 32-bitowymi mikrokontrolerami nie wspominając.

Pierwszym z tych archiwalnych projektów jest odpowiedzialny za moje zainteresowanie całą platformą MIDIBox64E V2 i pokrewne mu MIDIBox64 V2 oraz MIDIBox16E. MIDIBox64 V2 to dość rozbudowany kontroler MIDI udostępniający do 64 potencjometrów, przycisków i diod LED. Latencja na potencjometrach jest poniżej 1 ms, co jest świetnym wynikiem, biorąc pod uwagę użycie ośmiobitowego mikrokontrolera. Fotografia 4 pokazuje przykładową realizację, fotografia 5 kontroler programu DJskiego Traktor zbudowany przez Pay.C na bazie MIDIBox64E. MIDIBox16E i 64E V2 to dwa pokrewne projekty, które zamieniają potencjometry na enkodery.

Fotografia 4. Kontroler MIDI na bazie MIDIBox64 wykonany przez Patricka

MIDIBox 16E miał ich szesnaście, stąd nazwa, plus dodatkowe 8 przycisków. To wystarcza, by regulować do 128 parametrów na jeden bank ustawień poprzez wybranie jednej z ośmiu "stron" parametrów. Wersja "wypasiona" może mieć 64 enkodery - przyciski obsługi menu są podłączone do portu J6 na płytce mikrokontrolera PIC. Dla mnie wariant, mający 32 enkodery z przyciskami plus kolejne 32 przyciski dodatkowe, wydaje się najbardziej optymalnym rozwiązaniem pod względem kosztów i możliwości.

Dodatkowo wokół każdego enkodera można umieścić pierścień z maksymalnie 16 diod LED do wskazywania bieżącej nastawy danego parametru. Oczywiście przełączenie się na kolejną "stronę" lub bank aktualizuje te wartości.

Swego czasu zaprojektowałem własną płytkę pod budowę MIDIBoxa 64E V2, na której zintegrowane zostały wszystkie moduły DIN i DOUT oraz sam mikrokontroler, by zredukować liczbę połączeń. Ze wszystkich projektów rodziny MIDIBox najbardziej polecam na początek właśnie 64E V2. Warto też wspomnieć o projekcie MIDIBox LC, który pozbawiony jest jakiegokolwiek opisu poza diagramami połączeń, ale który pozwala na budowę dość rozbudowanych kontrolerów.

Wśród archiwalnych projektów znajdziemy też wcześniejsze wersje sekwencerów, z czego najbardziej rozbudowanym wariantem jest oczywiście MIDIBox SEQ V3. Ze względu na ograniczenia sprzętu ten sekwencer ma 16 ścieżek w czterech grupach (patternach), z czego każda ma tylko trzy "warstwy" parametrów. Są też inne ograniczenia, jak długość sekwencji w każdej ścieżce licząca maksymalnie 32 kroki. Mimo tych i innych ograniczeń ten projekt jest wart uwagi, gdyż jest wystarczający do współpracy z syntezatorami MIDIBox SID V2 i MIDIBox FM Synth.

Fotografia 5. Kontroler programu Traktor na bazie MIDIBox64E wykonany przez Pay.C

Wśród tych projektów jest też MIDIbox 808, czyli SEQ V3 zoptymalizowany do pracy w roli sekwencera perkusyjnego, opracowany na potrzeby projektu MB808, ale może współpracować również z komputerami, syntezatorami i modułami dźwiękowymi MIDI mającymi stosowne brzmienia. Układ YMF262/OPL3 ma 5 brzmień perkusyjnych uzyskiwanych drogą uproszczonej syntezy FM, ale nie są one rewelacyjne. Układ SID też potrafi wytwarzać brzmienia perkusyjne. Ale lepszą drogą może być użycie analogowych modułów tworzących dźwięki perkusyjne w połączeniu z kolejnym, archiwalnym projektem, MIDIBox CV V1, który zamienia komunikaty MIDI na napięcia kontrolne dla syntezatorów analogowych w stylu Mooga. Niestety, syntezatory analogowe w tym stylu są wyjątkowo drogie, zwłaszcza na polskim rynku, więc taki interfejs nie każdemu się przyda. Oczywiście można samodzielnie zbudować taki syntezator - nie brakuje schematów i gotowych projektów DIY, a i ceny w częściach zwykle nie są wygórowane, ale sumaryczny koszt rozsądnego zestawu modułów może być znaczny.

Na koniec chciałbym wspomnieć o małym projekcie, którego nie znajdziecie w sekcji projektów, lecz w sekcji nieaktualnych modułów. Chodzi dokładniej o moduł/projekt oznaczony jako MBHP_USB_PIC. Jest to specjalna wersja firmware dla 8-bitowych PIC-ów używanych przez MIDIBoxa, zmieniająca je w całkiem dobry interfejs USB-MIDI. Ten projekt zrealizowałem pod koniec 2012 r. po tym, jak tani kabel interfejsowy rozczarował mnie opóźnieniami na poziomie nawet pół sekundy, zaś ceny dobrych interfejsów USB-MIDI były zbyt wysokie na mój skromny budżet. Projekt ten dostarcza jedno wejście i jedno wyjście MIDI, ale można go rozbudować, dokładając do czterech modułów IIC MIDI, by mieć łącznie pięć par portów. Na własne potrzeby zaprojektowałem dedykowaną płytkę (fotografia 6). Układ po zlutowaniu działał od razu i zapewniał sprawną komunikację bez żadnych odczuwalnych opóźnień. Co ciekawe, projekt jest zoptymalizowany pod kątem przesyłania konfiguracji i programów dla MIOS8, z czym tańsze interfejsy MIDI sobie zupełnie nie radzą.

Fotografia 6. Interfejs USB-MIDI MBHP_USB_PIC w wykonaniu autora artykułu

Podsumowanie

MIDIBox to przykład, jak używając relatywnie tanich komponentów i prostych modułów, można stworzyć budżetowy odpowiednik kosztownych i dość niszowych produktów. Gdy sam po raz pierwszy zainteresowałem się budową lub zakupem kontrolera MIDI, urządzenia takie, nawet budżetowe, kosztowały po kilkaset złotych prawie 20 lat temu. Obecnie ceny prostych urządzeń są podobne, ale modele bardziej rozbudowane są wciąż sporo droższe.

Nadal budowa własnego urządzenia, pod własne potrzeby, jest opłacalna, zwłaszcza gdy dostępnych jest wiele darmowych lub darmowych z ograniczeniami programów DAW (Cakewalk, Waveform Free, LMMS, Reaper - wieczny trial, czy Studio One Prime). MIDIBoxy w wersji ośmiobitowej są szczególnie wdzięcznymi projektami na początek, gdyż koszt jest niski, a możliwości ogromne. Plus, mając już programator układów PIC, dość łatwo można rozpocząć przygodę z tą przeogromną i bogatą rodziną układów ośmio-, szesnasto- i trzydziestodwubitowych. Przed erą Arduino to właśnie PIC były najczęściej używanymi układami w amatorskich projektach w USA, bo były tanie i dostępne.

Na przykładzie MIDIBoxa widać też, jak przemyślany projekt o konstrukcji modularnej może przekształcić się w mnogość gotowych urządzeń i wariantów realizacji skrojonych pod potrzeby konkretnych osób. Realizację własnego projektu na bazie MIDIBoxa w obecnych czasach ułatwi też dostęp do produkcji małych serii (5-10 szt.) profesjonalnie wykonanych płytek drukowanych z Chin czy rozpowszechnienie się tanich, aczkolwiek dobrych drukarek 3D, przecinarek i ploterów laserowych czy frezarek CNC, oraz usług z nimi związanych. Kompletną obudowę wedle własnego projektu można wyciąć ze sklejki, a front wyciąć w akrylu lub poliwęglanie, zaś wszystkie inne części wydrukować, używając tworzyw w rodzaju PLA czy PET-G.

MIDIBox może być dobrym startem, a zarazem motywacją do realizacji bardziej rozbudowanego urządzenia DIY. Dlatego właśnie lubię MIDIBoxa i polecam go każdemu elektronikowi-hobbyście zainteresowanemu też tworzeniem muzyki.

Paweł Kowalczyk
urgon@wp.pl

Artykuł ukazał się w
Elektronika Praktyczna
styczeń 2024

Elektronika Praktyczna Plus lipiec - grudzień 2012

Elektronika Praktyczna Plus

Monograficzne wydania specjalne

Elektronik kwiecień 2024

Elektronik

Magazyn elektroniki profesjonalnej

Raspberry Pi 2015

Raspberry Pi

Wykorzystaj wszystkie możliwości wyjątkowego minikomputera

Świat Radio maj - czerwiec 2024

Świat Radio

Magazyn krótkofalowców i amatorów CB

Automatyka, Podzespoły, Aplikacje kwiecień 2024

Automatyka, Podzespoły, Aplikacje

Technika i rynek systemów automatyki

Elektronika Praktyczna kwiecień 2024

Elektronika Praktyczna

Międzynarodowy magazyn elektroników konstruktorów

Elektronika dla Wszystkich maj 2024

Elektronika dla Wszystkich

Interesująca elektronika dla pasjonatów