Serwisy partnerskie:
Close icon
Serwisy partnerskie

64-klawiszowa klawiatura MIDI na bazie Arduino, część 1

Article Image
Elmax
Ten prosty projekt zamienia Arduino w matrycę klawiszy MIDI. Są one popularne wśród muzyków do wyzwalania sampli, ale komercyjne wersje są kosztowne. Nasz projekt kosztuje ułamek tej kwoty i można go dowolnie modyfikować, zmieniając oprogramowanie płytki Arduino. Stosuje zwykłe lub podświetlane przyciski i może być również, między innymi, zaprogramowany do pracy jako mostek MIDI.

Ten projekt został zainspirowany prośbą Czytelnika o opracowanie przez Redakcję SC czegoś podobnego do projektu Infrared Remote Control Assistant z lipca 2020 r. (siliconchip.com.au/Article/14505), ale dla MIDI. (Polska wersja artykułu ukazała się w tegorocznym czerwcowym wydaniu EdW).

MIDI to standard umożliwiający komunikację między instrumentami muzycznymi a komputerami. Na wypadek, gdybyś nie wiedział, MIDI to skrót od Musical Instrument Digital Interface. Koder MIDI pobiera dane wejściowe z instrumentu muzycznego (takiego jak choćby elektroniczny instrument klawiszowy – „keyboard”) i konwertuje je do formatu MIDI. Takie urządzenie może być podłączone do komputera w celu nagrywania muzyki czy koncertu, lub do syntezatora, aby przekształcić dane MIDI z powrotem na muzykę.

Takie urządzenia zwykle zawierają matryce przycisków 8×8 do generowania do 64 różnych komunikatów MIDI. Skutecznie emulują 5-oktawową klawiaturę z kilkoma zapasowymi klawiszami. Pozwala to na łatwe połączenie z syntezatorem lub cyfrową stacją roboczą audio (DAW – Digital Audio Workstation) w celu generowania muzyki z rzeczywistych komend wejściowych.

Społeczność Arduino wykonała już znaczną część pracy w tym zakresie, opracowując biblioteki, które mogą generować komendy MIDI zarówno sprzętowo (jako dane szeregowe), jak i jako wirtualne urządzenie USB MIDI (które może odczytać wiele aplikacji komputerowych DAW). Podstawowy system można zaimplementować za pomocą zestawu zawierającego niewiele więcej niż płytkę rozwojową Arduino Leonardo. Moduł Arduino Leonardo zawiera mikroprocesor ATmega32U4, który ma moduł USB. Wraz z biblioteką Arduino znacznie ułatwia to zadanie.

Arduino Leonardo skanuje kolumny przypisane do ośmiu swoich portów I/O i sprawdza, czy zostały one zwarte z dowolnym z ośmiu innych portów I/O, przypisanym do rzędu przycisków, dając w ten sposób do 64 kombinacji. Te 16 portów I/O jest następnie podłączanych do matrycy przycisków dotykowych, lub przycisków, które działają jak klawisze.

Ten prosty system nie może wykryć więcej niż jednego „przyciśnięcia” na raz, więc każdy stan, który jest identyfikowany jako wykazujący więcej niż jeden naciśnięty przycisk, jest zgłaszany jako „nic nie naciśnięto”. Niektóre, ale nie wszystkie, kombinacje wielu przycisków mogą zostać zidentyfikowane, ale w tym projekcie Redakcja SC postawiła na prostotę. Prawidłowe wykrywanie jednoczesnego naciśnięcia więcej niż jednego klawisza wymagałoby zamontowania diody lub dwóch w każdym przycisku (a także znacznie skomplikowałoby nasze proste urządzenie).

Każde naciśnięcie klawisza (zamknięcie lub zwolnienie) powoduje wysłanie zdarzenia MIDI przez USB. W projekcie używamy sprzętowego portu szeregowego Leonardo do generowania sprzętowego sygnału MIDI. Sygnał ten może być następnie przesyłany przez naszą nakładkę MIDI, opisaną dalej, w celu przekonwertowania go na prawidłowy format elektryczny dla syntezatora itp.

Pamiętaj, że jeśli chcesz tylko wysyłać zdarzenia (polecenia, komendy) MIDI do komputera przez USB, nie musisz nawet budować nakładki. Ale prawdopodobnie będziesz chciał złożyć naszą płytkę PCB matrycy przycisków, również opisaną dalej, ponieważ ręczne podłączanie przycisków byłoby bardzo pracochłonne!

Aby uczynić ten projekt bardziej użytecznym, dodaliśmy również do Leonardo elementarny syntezator. Sygnał PWM jest generowany na wyjściu 13, naśladując przebieg sinusoidalny o częstotliwości odtwarzanego dźwięku. Kształt przebiegu jest zdefiniowany w tablicy, więc można go zmienić, aby uzyskać inny dźwięk. Dźwięk ten można usłyszeć, podłączając przetwornik piezoelektryczny między wyjściem 13 a masą układu Leonardo, choć urządzenia te nie reagują zbyt dobrze na niższe częstotliwości. Dlatego też nasza nakładka MIDI zawiera również scalony wzmacniacz audio, który może zasilać głośnik (im większy, tym lepiej – takie mają zwykle większą efektywność) w celu uzyskania lepszej jakości dźwięku.

Skoro już przy tym jesteśmy, pomyśleliśmy również o dodaniu do nakładki wejścia MIDI. W pokazanej tutaj formie, jedyne do czego można go użyć, to powielanie odebranych danych i przesyłanie ich przez optoizolator do wyjścia MIDI, co pozwala temu urządzeniu działać jako podstawowy przedłużacz sygnału. Jednak sprzęt jest skonfigurowany tak, aby mikroprocesor modułu Leonardo mógł odbierać i dekodować przychodzące dane MIDI, więc przy odpowiednim oprogramowaniu może wykonywać wiele innych zadań.

Aby przeczytać ten artykuł kup e-wydanie
Kup teraz
Firma:
Tematyka materiału: klawiatura MIDI, 64-klawiszowa klawiatura, Arduino, Musical Instrument Digital Interface, Arduino Leonardo, Digital Audio Workstation, Nakładka enkodera MIDI, Matryca przycisków, Nadajnik MIDI, Odbiornik MIDI, Arduino IDE, MIDI Library, MIDIUSB
AUTOR
Źródło
Elektronika dla Wszystkich grudzień 2023
Udostępnij
Zobacz wszystkie quizy
Quiz weekendowy
Edukacja
1/10 Jak działa rezystor LDR?
UK Logo
Elektronika dla Wszystkich
Zapisując się na nasz newsletter możesz otrzymać GRATIS
najnowsze e-wydanie magazynu "Elektronika dla Wszystkich"