Spisu treści:

Budowanie kontrolera Arduino MIDI: 9 kroków (ze zdjęciami)
Budowanie kontrolera Arduino MIDI: 9 kroków (ze zdjęciami)

Wideo: Budowanie kontrolera Arduino MIDI: 9 kroków (ze zdjęciami)

Wideo: Budowanie kontrolera Arduino MIDI: 9 kroków (ze zdjęciami)
Wideo: Produkcja muzyki klubowej (odc.13): Sound design - BAS 2024, Listopad
Anonim

Ta instrukcja została pierwotnie opublikowana na moim blogu 28 czerwca 2020 r

Lubię budować rzeczy, które zawierają elektronikę i zawsze chciałem zbudować coś przy użyciu Arduino.

Jednym z najczęstszych buildów dla początkujących, jakie znalazłem, był kontroler MIDI. Kontroler MIDI to dowolny sprzęt, który wysyła dane MIDI (Musical Instrument Digital Interface) do urządzenia w celu wyzwalania dźwięków i tworzenia muzyki.

Zauważyłem, że wiele implementacji jest skomplikowanych, nawet tych przeznaczonych dla początkujących. To było bardzo frustrujące, gdy odkryłem, że muszę użyć setek linijek nieczytelnego kodu. Albo że muszę w niektórych przypadkach przylutować rezystor, między innymi.

Projekt

Budując swój własny kontroler Arduino MIDI, moim zamiarem było stworzenie przyjemnego projektu, utrzymującego poziom szumów na jak najniższym poziomie. Coś, co może naśladować każdy początkujący. Aby to osiągnąć, użyłem MIDI Fighter 3D jako podstawowej inspiracji i usunąłem każdą nieistotną funkcję.

Całkowity koszt mojego projektu nie przekraczał 30 USD, a lista materiałów była naprawdę krótka (linki partnerskie):

  • Arduino Leonardo (lub klon): od 10 do 20 USD.
  • 16 x przyciski Sanwa 24 mm (lub klon): od 1 USD do 2,50 USD za przycisk.
  • Lutownica
  • Przewód elektryczny 22 AWG

Płytka Arduino

Kiedy zacząłem ten projekt, odkryłem, że istnieje kilka nowych modeli Arduino (nie licząc setek kompatybilnych płyt). A wszystkie oferują nieco inne możliwości.

Musiałem wysłać sygnały MIDI do komputera, a najprostszym sposobem na to jest USB. Każda płytka Arduino oparta na mikrokontrolerze ATmega32u4 posiada wbudowaną komunikację USB.

Oficjalne płyty Arduino z natywną obsługą USB to Arduino Due, Arduino Zero, Arduino Leonardo, Arduino Micro. Płyty te mają zintegrowaną obsługę USB, co oznacza, że mogą działać jako urządzenie USB MIDI.

Zdecydowałem się na klon Arduino Leonardo. Ma wystarczająco dużo wejść dla tego projektu, a także zawiera nagłówki, co ułatwia podłączanie/odłączanie przewodów.

Pierwsze kroki

Chociaż wyjaśnię krok po kroku, jak zaimplementowałem kod do tego projektu, możesz pobrać ostateczną wersję.

Aby wgrać kod na płytkę należy użyć Arduino IDE. Mają też bardzo przydatny edytor sieciowy, ale mają ograniczoną liczbę godzin dziennie, w których można skompilować kod.

Krok 1: Miganie wbudowanej diody LED

To zabawne, jak „Hello World” w świecie sprzętu miga diodą LED.

Miłą niespodzianką było dla mnie odkrycie, że Arduino Leonardo ma wbudowaną diodę LED, którą można mrugać, aby przetestować swój kod. W ten sposób nie trzeba budować zewnętrznego obwodu na płytce stykowej z diodą LED i rezystorem.

Kod:

Krok 2: Miganie diody LED przy wprowadzaniu ręcznym

Następnym logicznym krokiem było mruganie tą samą diodą za każdym razem, gdy wysyłam sygnał. Zdjąłem plastikową osłonę jednego końca 2 przewodów Dupont i podłączyłem drugi koniec do płytki:

  • Numer pinu 2: Jedno z wejść cyfrowych (dodatnie). Może to być dowolny pin cyfrowy.
  • Pin GND: Dowolny pin uziemienia (ujemny).

Teraz za każdym razem, gdy łączę odsłonięte końce przewodów, zamykam obwód iw konsekwencji mogę wykonać kod

Każdy z 20 cyfrowych pinów Leonardo ma wewnętrzny rezystor (domyślnie odłączony), który można włączyć za pomocą INPUT_PULLUP. Pamiętaj, że wejście pull-up oznacza, że stan przycisku jest odwrócony:

  • WYSOKI, gdy obwód jest otwarty (przycisk NIE jest wciśnięty).
  • LOW, gdy obwód jest zamknięty (przycisk jest wciśnięty).

Kod:

Krok 3: Instalacja biblioteki MIDIUSB

Ta biblioteka pozwala płytce Arduino z funkcjami USB działać jako instrument MIDI przez USB. Sprawdź oficjalną dokumentację, aby uzyskać więcej informacji.

Korzystając z Arduino IDE, możesz zainstalować dodatkowe biblioteki Arduino za pomocą Menedżera bibliotek:

  1. Otwórz IDE i kliknij menu „Szkic”, następnie „Dołącz bibliotekę”, a następnie „Zarządzaj bibliotekami”.
  2. Wyszukaj MIDIUSB i kliknij Zainstaluj.
  3. Po zakończeniu obok biblioteki MIDIUSB powinien pojawić się znacznik Installed.
  4. Zamknij Menedżera bibliotek.

Teraz Leonardo może wysyłać komunikaty MIDI przez USB! Ale najpierw potrzebny jest pewien wgląd w to, jak działa MIDI.

Jak działa MIDI

„MIDI (Musical Instrument Digital Interface) to standardowy protokół komunikacyjny, który łączy elektroniczne instrumenty muzyczne, komputery i powiązane urządzenia audio do odtwarzania muzyki”. - Wikipedia

Obsługuje między innymi komunikaty o zdarzeniach z danymi o wysokości i prędkości granej nuty

W tym konkretnym projekcie dane wejściowe z 16 przycisków wysyłają różne komunikaty przez USB. Komunikaty te można przekonwertować na dźwięk na komputerze za pomocą dowolnego odpowiedniego oprogramowania, takiego jak GarageBand lub Ableton Live.

Anatomia komunikatu MIDI

Aby wysłać wiadomość MIDI, użyłem metody sendMIDI() z biblioteki MIDIUSB, którą zainstalowałem w kroku 3.

Ta metoda może otrzymać 4 parametry:

  • Typ zdarzenia: Może to być 0x09 dla nuty włączonej (odtwórz nutę) lub 0x08 dla nuty wyłączonej (zatrzymaj odtwarzanie nuty).
  • Note On/Off: Typ zdarzenia połączony z kanałem MIDI (1-16). Używam tylko kanału 1, więc jest to 0x90 dla nuty włączonej lub 0x80 dla nuty wyłączonej.
  • Numer nuty: Każda nuta ma przypisany skok numeryczny (skala częstotliwości).
  • Prędkość: od 0 (brak prędkości) do 127 (najszybsza).

Krok 4: Wysyłanie wiadomości MIDI

Dołączyłem bibliotekę MIDIUSB i zamiast mrugać wbudowaną diodą wysłałem notatkę.

Kod:

⚠ Ważne: Od tego kroku Arduino zamienia się w kontroler MIDI USB i przestaje odbierać kod przez USB.

Gdy utkniesz w pozycji, w której nie można już zaprogramować Arduino, wykonaj następujące kroki:

  1. Przytrzymaj zaokrąglony przycisk resetowania na płytce Arduino.
  2. Kliknij Prześlij na Arduino IDE.
  3. Zwolnij przycisk resetowania.
  4. Zaktualizowany kod zostanie przesłany na tablicę.

Krok 5: Wysyłanie wiadomości MIDI z każdego przycisku

Wysyłanie komunikatu MIDI z każdego przycisku
Wysyłanie komunikatu MIDI z każdego przycisku

Ostatnim krokiem było przypisanie każdego skoku do przycisku. Dla 16 przycisków zdefiniowałem skalę od C2 do E3b, które są tonami od 36 do 51 w kolejności od dołu do góry i od lewej do prawej. Sprawdź ten plik z Arduino Tutorials, aby zobaczyć, jaka wysokość odpowiada każdej nucie.

Użyłem pinów cyfrowych od 2 do 12 i pinów analogowych (używając ich jako cyfr) od A0 do A4.

A tak wygląda finalny kod

Krok 6: Konfiguracja kanałów lub banków (opcjonalnie)

Konfigurowanie kanałów lub banków (opcjonalnie)
Konfigurowanie kanałów lub banków (opcjonalnie)

Jeśli chcesz dodać więcej przycisków z możliwością przełączania kanałów lub banków, tak jak w MIDI Fighter 3D (patrz zdjęcie), Arduino Leonardo ma cztery dodatkowe piny, których możesz użyć. Arduino Leonardo ma 20 cyfrowych pinów wejścia/wyjścia, z których tylko 16 jest używanych do grania nut.

Możesz użyć tych dodatkowych przycisków, aby zaktualizować zmienną w kodzie i wysłać jej wartość jako parametr do metody MidiUSB.sendMIDI:

gist.github.com/lean8086/ec8da7486ec3621f9f0b90542a06fcea

Krok 7: Sprawa

Walizka
Walizka
Walizka
Walizka

Aby ten projekt był prosty, byłem bardzo wybredny w wyborze, które funkcje obejmują.

  • Tylko przyciski: 16 arkadowych przycisków typu Sanwa, w siatce 4x4. Żadnych pokręteł, suwaków, suwaków ani żadnego innego wejścia analogowego.
  • Obudowa Unibody: nie używaj śrub, nakrętek, śrub ani kleju do obudowy lub do trzymania płytki Arduino.
  • Narzędzia codziennego użytku: Na przykład lutowałem przewody zamiast kupować specjalny obcinacz do przewodów do przycisków arkadowych.

Jednolity projekt

Jednym z wyzwań, z jakim się zmierzyłem, było zaprojektowanie obudowy na tyle prostej, że nie wymaga ona montażu i może być wydrukowana w 3D za jednym razem.

Aby uniknąć użycia śrub czy kleju, musiałem zaprojektować obudowę, która zapewni jak najmniejszy dostęp do elektroniki. Moją największą inspiracją dla obudowy był Mac Mini, który ma u dołu otwór w kształcie koła. Chciałem również zaprojektować do tego zakręcaną pokrywę, ale postanowiłem ją otworzyć, aby odsłonić elektronikę.

Pobierz etui do druku 3D (322 KB). Zalecane ustawienia: PLA, warstwy 0,15 mm, wypełnienie 20%, wzmocnienia wsparcia przynajmniej dla zaokrąglonego dolnego otworu, uchwyty Arduino i micro USB.

Trzymanie Arduino bez śrub

Leonardo ma 4 otwory do przykręcenia płytki do dowolnej odpowiedniej obudowy, ale moim pomysłem było ułatwienie wkładania i wyjmowania płytki z obudowy.

Znalezienie uchwytu na klips dla Arduino na Thingiverse było łatwe i zajęło mi 5 iteracji, aby zintegrować ten uchwyt z projektem unibody. Najtrudniejszą częścią było wykonanie nóżek, aby uniknąć otworów na przyciski i aby micro USB znajdowało się na środku obudowy.

Krok 8: Zgromadzenie

Zgromadzenie
Zgromadzenie
Zgromadzenie
Zgromadzenie
Zgromadzenie
Zgromadzenie

Po włożeniu wszystkich przycisków na miejsce, przylutowałem krótkie czarne przewody łączące wszystkie ujemne nóżki przycisków między nimi.

Następnie przylutowałem długie czerwone przewody z każdej nogi dodatniej, aby połączyć się bezpośrednio z płytą.

Aby podłączyć przewody do Arduino, odciąłem i przylutowałem niektóre końcówki Duponta i pokryłem je rurkami termokurczliwymi.

Podłączyłem przewody do płytki w takiej samej kolejności jak w MIDI Fighter. Od dołu do góry i od lewej do prawej

Krok 9: Korzystanie z kontrolera MIDI

Korzystanie z kontrolera MIDI
Korzystanie z kontrolera MIDI

Do odbioru MIDI i tworzenia muzyki można użyć dowolnego oprogramowania muzycznego (lub odpowiedniego sprzętu). Najbardziej polecane to Garage Band, Ableton Live i wiem, że na telefonie jest kilka aplikacji do zainstalowania.

Wszystkie te narzędzia są przydatne do ładowania predefiniowanych dźwięków do gry na palec, ale zostały stworzone do większych celów. Te narzędzia mogą być trudne do skonfigurowania dla początkujących.

MIDI w przeglądarce internetowej

Aby uczynić coś bardziej zgodnego z tym projektem i jego prostotą, zbudowałem narzędzie internetowe całkowicie skoncentrowane na kontrolerach MIDI.

Punchy: Implementacja WebMIDI i WebAudio dla kontrolerów MIDI.

Może odczytywać komunikaty MIDI w dowolnej przeglądarce obsługującej WebMIDI JavaScript API. Następnie odtwarza dźwięki w syntezatorze (za pomocą API WebAudio) lub w samplerze, ładując niestandardowe dźwięki z dowolnego pakietu dźwięków.

Skonfiguruj Ableton Live

Aby kontroler MIDI działał z Ableton Live, wykonaj te proste kroki z ich oficjalnej dokumentacji.

Przejdź do Preferencje → Połącz MIDI i upewnij się, że „Wejście” ma włączone „Track” i „Remote”, a wyjście ma włączone „Remote”, jak wspomniano w przewodniku:

Zalecana: