Sterownik MIDI - midiMaster

Sterownik MIDI - midiMaster

Prezentowane urządzenie to jedno z tych rozwiązań, które jest moim ukłonem w kierunku Czytelników, których jednym z hobby jest gra na instrumentach muzycznych. Nie powinno to szczególnie dziwić osób, które śledzą moje poczynania konstrukcyjne, gdyż w portfolio moich projektów znajduje się całkiem pokaźna grupa tych wyposażonych w muzyczny interfejs MIDI. I nie ma się czemu dziwić. Interfejs MIDI to moim zdaniem doskonały przykład rozwiązania praktycznego, które, mimo że ma kilkadziesiąt lat, nadal spełnia swoje zadania, przez co jest chętnie stosowane nawet w najnowszych konstrukcjach instrumentów muzycznych.

Podstawowe parametry:
  • obsługa komunikatów MIDI typu CC, PC,
  • obsługa 16 kanałów MIDI,
  • 2 wyjściowe interfejsy MIDI,
  • 6 pokręteł regulacyjnych oraz 6 przycisków przeznaczonych do pracy w roli foot-switchy,
  • każdy potencjometr reguluje wartość wybranego kontrolera CC, lub PC,
  • każdy foot-switch wysyła wartość wybranego kontrolera CC (oddzielnie dla krótkiego i długiego przyciśnięcia przycisku) oraz wartość wybranego kontrolera PC,
  • 14 banków pamięci – 13 presetów plus bieżące ustawienia,
  • interfejs użytkownika zrealizowany z użyciem wyświetlacza graficznego i impulsatora,
  • zasilanie napięciem 5...9 VDC, pobór prądu ok. 25 mA

Interfejs MIDI, choć wymyślony w latach 80., jest na tyle uniwersalny, że z powodzeniem jest stosowany w najnowszych urządzeniach estradowych. W praktyce prawie każde urządzenie estradowe korzysta z dobrodziejstw tego medium transmisyjnego, zaś jednym z powodów użycia technologii MIDI jest szeroka dostępność i uniwersalność takich sterowników. To swego rodzaju ewenement, gdyż trudno znaleźć w świecie informatyki drugie takie ponadczasowe rozwiązanie! Zatem, zanim przejdę do opisu projektu, w skrócie przypomnę podstawowe informacje dotyczące sprzęgu MIDI.

Interfejs MIDI

Jest szeregowym interfejsem komunikacyjnym pracującym z szybkością 31250 (±1%) bits/s, w którym dane przesyłane są w paczkach po 8 bitów, z jednym bitem startu i jednym bitem stopu, bez bitów kontroli parzystości. Układ wejściowy interfejsu MIDI wykonuje się zwykle przy użyciu szybkiego transoptora (6N138), który zamienia prąd w linii (ok. 5 mA) na przebiegi napięciowe, zaś interfejs wyjściowy to zwykle para rezystorów ograniczających prąd diody LED w urządzeniu odbiorczym. W standardzie MIDI dane przesyłane są grupowo w formie tzw. komunikatów (Messages), przy czym wprowadzono bardzo prosty sposób na odróżnienie bajtów poleceń sterujących (Status Byte) od bajtów danych (Data Byte): bajty poleceń mają ustawiony najstarszy bit (0xFF...0x80), a bajty danych najstarszy bit mają wyzerowany (0x7F...0x00). Zwykle informacje przesyłane są w kolejności: bajt polecenia i po nim jeden lub dwa bajty danych (w zależności od rodzaju polecenia). Polecenia wysyłane są tylko przy zmianie danego elementu sterującego. Bajt polecenia określa jedną ze standardowo zdefiniowanych funkcji, którą instrument ma wykonać (4 najstarsze bity), np. Note On/Off (włącz/wyłącz nutę), Control Change (zmień parametr urządzenia), Program Change (zmień rodzaj brzmienia), oraz numer kanału MIDI, na którym informacja ma być odebrana (pozostałe 4 bity określające jeden z 16 kanałów MIDI).

Dla porządku należy wspomnieć o możliwości ograniczenia transferu danych poprzez usunięcie redundancji, z której korzysta metoda Running Status. Polega ona na wysłaniu jednego bajta polecenia i wielu bajtów danych (bez każdorazowego ponawiania bajta polecenia) w przypadku przesyłania tego samego rodzaju sygnałów sterujących jeden za drugim, np. sygnały wywołane zmianą jednego i tego samego regulatora.

Budowa i działanie

MidiMaster to sterownik MIDI, który integruje w sobie zalety typowego sterownika MIDI wyposażonego w szereg konfigurowalnych pokręteł dających dostęp do ustawień sterowanego instrumentu, ze sterownikiem typu foot-switch, który nader chętnie stosowany jest przez gitarzystów z racji swoich właściwości użytkowych. Schemat urządzenia midiMaster pokazano na rysunku 1.

Rysunek 1. Schemat ideowy sterownika midiMaster

Zaprojektowano bardzo prosty system mikroprocesorowy z niewielkim mikrokontrolerem firmy Microchip (dawniej Atmel) o oznaczeniu ATmega328PB taktowany zewnętrznym rezonatorem kwarcowym o częstotliwości 8 MHz. Zastosowanie rezonatora kwarcowego jako źródła taktowania mikrokontrolera wynikało z potrzeby zapewnienia dużej dokładności prędkości transmisji MIDI (±1%).

Mikrokontroler jest odpowiedzialny za obsługę 2 kanałów wyjściowego interfejsu MIDI (z użyciem wbudowanych w jego strukturę 2 interfejsów USART), obsługę 6 potencjometrów regulacyjnych oraz 6 foot-switchy (złącze SW) odpowiedzialnych za wysyłanie komunikatów MIDI, obsługę enkodera ze zintegrowanym przyciskiem oraz obsługę graficznego wyświetlacza LCD o organizacji 128×64, stanowiącego wraz z enkoderem, graficzny interfejs użytkownika.

Uważny Czytelnik zapewne zwróci uwagę na fakt zastosowania dwóch interfejsów wyjściowych MIDI. To celowy zabieg, którego implementacja miała przede wszystkim zwiększyć możliwości konfiguracyjne prezentowanego urządzenia. Jak się później okaże, każdy element regulacyjny (foot-switch czy potencjometr) możemy przyporządkować do wybranego wyjścia MIDI, co daje możliwość sterowania pracą dwóch urządzeń wyjściowych za pomocą tego samego sterownika MIDI.

Program sterujący i obsługa

Tyle w kwestiach sprzętowych. Przejdźmy zatem do zagadnień programowych. Tak jak wspomniano wcześniej, wbudowane potencjometry służą do regulacji wybranych kontrolerów MIDI w czasie rzeczywistym. Każdy z potencjometrów może pracować w jednym z dwóch trybów: CC (Control Change) lub PC (Program Change). W pierwszym trybie wybrany potencjometr reguluje wartość wybranego kontrolera Control Change, zaś w drugim trybie wartość kontrolera Program Change. Dostępne ustawienia dla obu trybów pracy regulatorów zostaną omówione w części opisu systemu menu urządzenia.

Podobnie wygląda obsługa przycisków foot-switch, dla których, jak dla potencjometrów, przewidziano dwa tryby pracy: CC lub PC. W pierwszym trybie wybrany foot-switch wysyła wartość wybranego kontrolera Control Change (oddzielnie dla krótkiego i długiego przyciśnięcia przycisku), zaś w drugim trybie wartość wybranego kontrolera Program Change. Podobnie jak poprzednio dostępne ustawienia dla obu trybów pracy foot-switchy zostaną omówione w części opisu systemu menu urządzenia.

Rysunek 2. Sposób obsługi urządzenia midiMaster

Przejdźmy zatem do systemu menu urządzenia midiMaster. Dostępne ekrany menu urządzenia pokazano na rysunku 2. Jak widać, zaprojektowano bardzo intuicyjne i atrakcyjne wizualnie menu urządzenia. Standardowo urządzenie midiMaster pracuje w trybie menu nazwanym MAIN_SCREEN. W trybie tym pokazywane są podstawowe ustawienia pokręteł regulacyjnych i foot-switchy. Dla foot-switchy pokazywane są (od lewej do prawej): numer wyjścia MIDI, które obsługuje wybrany foot-switch (1/2), numer foot-switcha (1…6), rodzaj kontrolera MIDI obsługiwanego przez wyświetlany element (CC lub PC) oraz numer kontrolera MIDI (0…127).

Dla potencjometrów pokazywane są (od lewej do prawej): numer wyjścia MIDI, które obsługuje wybrany potencjometr (1/2), numer potencjometru (1…6), rodzaj kontrolera MIDI obsługiwanego przez wyświetlany element (CC lub PC) oraz wartość tego kontrolera MIDI (ustawienie potencjometru). W trybie menu MAIN_MENU pokazywane są dostępne opcje menu urządzenia: SETUP, SAVE i LOAD. W trybie SETUP, czyli w trybie ustawień elementów regulacyjnych (potencjometrów lub foot-switchy) pokazywane są nastawy wybranego elementu regulacyjnego. Co oczywiste, nastawy te zależne są od rodzaju elementu regulacyjnego (potencjometr lub foot-switch) oraz jego typu (CC lub PC). Dla foot-switcha typu CC dostępne są następujące nastawy:

  • Type: CC – to rodzaj kontrolera obsługiwanego przez foot-switch,
  • CCnr – to numer kontrolera wysyłanego przez foot-switch (0…127),
  • CCval – to wartość kontrolera wysyłanego przez foot-switch przy krótkim naciśnięciu (0…127),
  • CChold – to wartość kontrolera wysyłanego przez foot-switch przy długim naciśnięciu (0…127),
  • MIDIout – to numer wyjścia MIDI, dla którego wysyłane są komunikaty MIDI (1/2),
  • MIDIchn – to numer kanału MIDI, dla którego wysyłane są komunikaty MIDI (1…16).

Dla foot-switcha typu PC dostępne są następujące nastawy:

  • Type: PC – to rodzaj kontrolera obsługiwanego przez foot-switch,
  • PCnr – to numer kontrolera wysyłanego przez foot-switch (0…127),
  • MIDIout – to numer wyjścia MIDI, dla którego wysyłane są komunikaty MIDI (1/2),
  • MIDIchn – to numer kanału MIDI, dla którego wysyłane są komunikaty MIDI (1…16).

Dla potencjometru typu CC dostępne są następujące nastawy:

  • Type: CC – to rodzaj kontrolera obsługiwanego przez potencjometr,
  • CCnr – to numer kontrolera wysyłanego przez potencjometr (0…127),
  • CCmax – to wartość maksymalna kontrolera wysyłanego przez potencjometr (0…127),
  • MIDIout – to numer wyjścia MIDI, dla którego wysyłane są komunikaty MIDI (1/2),
  • MIDIchn – to numer kanału MIDI, dla którego wysyłane są komunikaty MIDI (1…16).

Dla potencjometru typu PC dostępne są następujące nastawy:

  • Type: PC – to rodzaj kontrolera obsługiwanego przez potencjometr,
  • MIDIout – to numer wyjścia MIDI, dla którego wysyłane są komunikaty MIDI (1/2),
  • MIDIchn – to numer kanału MIDI, dla którego wysyłane są komunikaty MIDI (1…16).
Ustawienia Fuse-bitów (ważniejszych):
EESAVE: 0
CKDIV8: 1
SUT[1:0]: 11
CKSEL[3:0]: 1101

W trybie menu SAVE_PRESET/SCENE i LOAD_PRESET/SCENE pokazywane są dostępne numery banków pamięci urządzenia (wszystkich ustawień urządzenia) przeznaczone do operacji zapisu lub odczytu (13 banków danych). Należy jednak wspomnieć o dość istotnej funkcjonalności dotyczącej wykonywanych operacji. W trybie zapisu oprócz ustawień urządzenia zapisywane są również bieżące ustawienia wszystkich potencjometrów regulacyjnych. W trybie odczytu możliwe jest przywołanie samych ustawień urządzenia (tzw. preset) lub też ustawień urządzenia wzbogaconych o zapamiętane pozycje potencjometrów (tzw. sceny). Co ważne, w trakcie odczytu tychże ustawień potencjometrów są one równocześnie wysyłane poprzez interfejs MIDI urządzenia.

Tyle, jeśli chodzi o dostępne ekrany systemu menu. Przejdźmy zatem do obsługi urządzenia, która realizowana jest w sposób bardzo nowoczesny, a mianowicie za pomocą enkodera z wyczuwalnym skokiem i zintegrowanym przyciskiem. Krótkie przyciśnięcie ośki enkodera powoduje przejście do wybranej pozycji menu, długie przyciśnięcie ośki enkodera powoduje wyjście do poziomu powyżej, zaś pokręcanie ośką enkodera powoduje regulację wybranej pozycji menu. Jedyne odstępstwo od tej reguły zachodzi w przypadku wyboru i wyjścia z wyboru parametru poddawanego regulacji, co zawsze odbywa się poprzez krótkie przyciśnięcie ośki enkodera i wynika z chęci uproszczenia sposobu regulacji wielu parametrów urządzenia.

Rysunek 3. Dostępne ekrany Menu sterownika midiMaster

Sposób obsługi urządzenia midiMaster pokazano na rysunku 3. Nie uwzględniono tam akcji towarzyszącej pokręcaniu ośką enkodera, o czym napisano powyżej. Ma to szczególne znaczenie w przypadku pokręcania ośką enkodera na ekranie głównym aplikacji. Tutaj, w wyniku doświadczeń zebranych w pracy na estradzie ww. urządzenia, wprowadzono szybki dostęp do odczytu presetów/scen, co możliwe jest dzięki pokręcaniu wspomnianej ośki. Pokręceniu w prawo towarzyszy przejście do odczytu presetów, zaś pokręceniu w lewo towarzyszy przejście do odczytu scen urządzenia. Wybraną akcję uruchamiamy w tym przypadku poprzez krótkie przyciśnięcie ośki enkodera, zaś długie przyciśnięcie tejże ośki powoduje wyjście do ekranu głównego.

Warto zaznaczyć, że bieżące ustawienia urządzenia (wszystkich elementów sterujących) zapisywane są każdorazowo w nieulotnej pamięci EEPROM mikrokontrolera i wczytywane podczas uruchamiania urządzenia. Ponadto, o czym wspomniano powyżej, przewidziano 13 dodatkowych banków pamięci (PRESET/SCENE), które przeznaczone są do archiwizowania ustawień urządzenia i położenia potencjometrów regulacyjnych. Tyle w kwestiach implementacyjnych. Przejdźmy zatem do zagadnień montażowych.

Montaż i uruchomienie

Schemat montażowy urządzenia midiMaster pokazano na rysunku 4. Jak widać, zaprojektowano bardzo zwarty obwód drukowany przeznaczony w zdecydowanej większości do montażu przewlekanego. Montaż urządzenia rozpoczynamy od wlutowania mikrokontrolera, jako że jest to jeden z niewielu elementów przeznaczonych do montażu SMD. Dalej montujemy stabilizator, następnie rezonator kwarcowy, pozostałe elementy bierne a na końcu elementy mechaniczne w rodzaju potencjometrów, enkodera czy gniazd połączeniowych (PWR, SW, MIDI1 i MIDI2).

Rysunek 4. Schemat montażowy sterownika midiMaster

Ostatnim etapem procesu montażu urządzenia jest przylutowanie graficznego wyświetlacza LCD wraz z dołączonym do niego podświetleniem. Wykonując tę czynność, należy mieć na uwadze oczekiwaną odległość płaszczyzny wyświetlacza od obwodu PCB w stosunku do położenia zamocowanych elementów regulacyjnych. Poprawnie zmontowany układ nie wymaga żadnych regulacji i powinien działać po włączeniu zasilania. Zmontowane urządzenie midiMaster tuż przed przylutowaniem wyświetlacza graficznego pokazano na fotografii 1.

Fotografia 1. Zmontowane urządzenie midiMaster tuż przed przylutowaniem wyświetlacza graficznego

Urządzenie midiMaster jest niejako połączeniem typowego foot-switcha z kontrolerem MIDI. W związku z tym może być przygotowane jako jedno niezależne lub dwa zależne od siebie urządzenia. W pierwszym przypadku foot-switche montowane są w zakresie tego samego panelu urządzenia, zaś w drugim przypadku możemy zaimplementować dwa, połączone ze sobą urządzenia: kontroler MIDI wyposażony w 6 pokręteł regulacyjnych i foot-switch wyposażony w 6 przycisków, oba połączone za pomocą wielożyłowej taśmy.

Rysunek 5. Widok przykładowego panelu czołowego urządzenia midiMaster

Docelowe rozwiązanie zależy wyłącznie od naszych preferencji i zgodnie z nimi implementujemy konkretny design. Widok przykładowego panelu czołowego urządzenia midiMaster pokazano na rysunku 5.

Robert Wołgajew, EP

Wykaz elementów:
Rezystory: (obudowa miniaturowa 1/8 W, raster 0,2”)
  • R1: 47 kΩ
  • R2: 3,3 kΩ
  • R3, R4: 10 kΩ
  • R5: 33 Ω
  • R6…R9: 150 Ω
  • P1…P6: potencjometr obrotowy 10 kΩ/A typu R9011-1-10K (długość osi 18 mm)
Kondensatory:
  • C1…C3, C6, C16, C17: 100 nF
  • C9…C15: 220 nF
  • C4, C5: 22 pF
  • C7, C8: 100 μF/16 V elektrolityczny
  • C18…C26: 1 μF
Półprzewodniki:
  • U1: ATmega328PB (TQFP32)
  • U2: NCP1117DT33G (TO-252)
  • LCD: wyświetlacz graficzny LCD-AG-C128064CF-DIW
Pozostałe:
  • Q1: rezonator kwarcowy 8 MHz niski
  • L1: dławik osiowy 10 μH
  • EDIT: enkoder z przyciskiem (długość osi 15 mm)
  • SW: gniazdo IDC męskie proste 2×5 + wtyk żeński na taśmę + przewód płaski
  • SW1…SW6: przycisk nożny typu FC71055 CLIFF lub podobny
  • MIDI1, MIDI2: gniazdo DIN-5 żeńskie, kątowe 90°, THT typu DC-205
  • PWR: złącze śrubowe AK500/2
Artykuł ukazał się w
Elektronika Praktyczna
luty 2022
DO POBRANIA
Materiały dodatkowe

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