Spisu treści:
- Krok 1: Materiały
- Krok 2: Projekt
- Krok 3: Budowa i okablowanie
- Krok 4: Programowanie
- Krok 5: Konfiguracja
Wideo: Arduino Uno Midi Fighter: 5 kroków
2024 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2024-01-30 11:30
Ta instrukcja została stworzona w celu spełnienia wymagań projektowych Makecourse na University of South Florida (www.makecourse.com)
Oparty na popularnym MidiFighter przez DJ Techtools, ten domowej roboty kontroler MIDI (Musical Instrument Digital Interface) zasilany z Arduino może być używany jako urządzenie MIDI w dowolnym oprogramowaniu Digital Audio Workstation (DAW). Kontroler MIDI może wysyłać i odbierać komunikaty MIDI z komputera i może być używany do bezpośredniego sterowania używanym oprogramowaniem. Dodatkowo elementy sterujące kontrolera MIDI są w pełni konfigurowalne – co oznacza, że każdy pojedynczy przycisk, suwak i pokrętło można przypisać do dowolnej funkcji w DAW. Na przykład naciśnięcie przycisku może zagrać konkretną nutę lub zostać zaprogramowane do przełączania tempa projektu audio.
github.com/jdtar/Arduino-Midi-Controller
Krok 1: Materiały
Poniżej znajduje się lista materiałów i narzędzi użytych w tym projekcie.
Arduino Uno
Deska do krojenia chleba
Multiplekser 4051/4067
Przewody połączeniowe
Dodatkowy przewód
Liniowe potencjometry suwakowe 2 x 10 kΩ
16x przyciski Sanwa 24mm
Termokurczliwe
Lutownica
Żyletka
Rezystor 4,7 kΩ
Arkusz akrylowy (na pokrywkę)
Obudowa przycisków i Arduino
drukarka 3d
Wycinarka laserowa
Krok 2: Projekt
Dostałem już obudowę do mojego kontrolera MIDI przed rozpoczęciem projektu, więc przygotowałem szkic pokrywy, aby zwizualizować, gdzie wszystko ma zostać umieszczone. Wiedziałem, że chcę mieć co najmniej 16 przycisków i kilka potencjometrów jako funkcję, więc starałem się rozmieścić komponenty tak równomiernie, jak to możliwe.
Po opracowaniu układu pokrywy wyeksportowałem plik jako plik PDF 1:1 i wysłałem go do wycinarki laserowej, aby wyciąć arkusz akrylu. Dla otworów na śruby zaznaczyłem markerem, gdzie mają być otwory i stopiłem akryl gorącym filamentem.
W załączniku znajduje się plik PDF 1:1, który można wydrukować jako 1:1 i wyciąć za pomocą elektronarzędzi, jeśli nie jest dostępna wycinarka laserowa.
Krok 3: Budowa i okablowanie
Po wycięciu akrylu okazało się, że akryl jest zbyt cienki, aby w wystarczającym stopniu utrzymać wszystkie elementy. Następnie wyciąłem kolejny arkusz i skleiłem je razem, co okazało się idealne.
Okablowanie komponentów wymagało kilku prób i błędów, ale zaowocowało załączeniem szkicu Fritzinga. Najpierw podłączyłem przewody uziemiające i rezystor 4,7kΩ, przylutowałem i obkurczyłem połączenia na przyciskach. Montaż dwóch potencjometrów suwakowych wymagał otworów topiących na śruby w akrylu. Po wkręceniu dwóch potencjometrów zostały one podłączone do pinów analogowych A0 i A1. Po zakończeniu okablowania przypomniałem sobie, że nie było nakładek na gałki dla moich suwaków, więc zamiast je kupować, wydrukowałem kilka nakładek na gałki za pomocą drukarki 3D, szkicując je w Autodesk Fusion 360 i eksportując do pliku STL. De
Arduino Uno ma tylko 12 dostępnych pinów wejść cyfrowych, ale 16 przycisków miało być podłączonych. Aby to zrekompensować, podłączyłem multiplekser 74HC4051 na płytce stykowej, która wykorzystuje 4 cyfrowe piny wejściowe i umożliwia korzystanie z wielu sygnałów na wspólnej linii, co daje 8 dostępnych cyfrowych pinów wejściowych, co daje łącznie 16 cyfrowych pinów dostępnych do użycia.
Podłączenie przycisków do właściwych pinów było po prostu kwestią stworzenia matrycy 4x4 i użycia jej w kodzie. Trudną częścią było jednak to, że konkretny zakupiony multiplekser miał określony układ pinów, w którym pomógł arkusz danych, a także miałem na myśli konkretny układ notatek podczas podłączania przycisków, co ostatecznie wyglądało trochę tak:
MATRYCA UWAG
[C2] [C#2] [D2] [D#2]
[G#2] [A1] [A#2] [B1]
[E1] [F1] [F#1] [G1]
[C2] [C#2] [D2] [D#2]
MATRYCA PIN (M = WEJŚCIE MUX)
[6] [7] [8] [9]
[10] [11] [12] [13]
[M0] [M1] [M2] [M3]
[M4] [M5] [M6] [M7]
Krok 4: Programowanie
Po zakończeniu montażu pozostaje już tylko programowanie Arduino. Załączony skrypt jest napisany w taki sposób, aby można go było łatwo dostosować.
Początek skryptu zawiera bibliotekę MIDI.h i bibliotekę kontrolera zapożyczoną z bloga Notes and Volts, które są zawarte w pliku zip kodu. Korzystając z biblioteki kontrolerów, można tworzyć obiekty dla przycisków, potencjometrów i przycisków multipleksowych zawierające wartości danych, które obejmują numer nuty, wartości kontrolne, prędkość nuty, numer kanału MIDI itp. Biblioteka MIDI.h umożliwia komunikację MIDI I/O na Porty szeregowe Arduino, które z kolei pobierają dane z obiektów kontrolera, konwertują je na komunikaty MIDI i wysyła komunikaty do dowolnego podłączonego interfejsu midi.
Część skryptu void setup inicjuje wszystkie kanały jako wyłączone, a także inicjuje połączenie szeregowe z prędkością 115200 bodów, czyli z szybkością większą niż wymiana sygnałów MIDI.
Główna pętla zasadniczo pobiera tablice przycisków i multipleksowanych przycisków i uruchamia pętlę for, która sprawdza, czy przycisk został naciśnięty lub zwolniony i wysyła odpowiednie bajty danych do interfejsu midi. Pętla potencjometru sprawdza położenie potencjometru i wysyła odpowiednie zmiany napięcia z powrotem do interfejsu midi.
Krok 5: Konfiguracja
Po załadowaniu skryptu do Arduino następnym krokiem jest podłączenie i odtwarzanie. Jest jednak kilka kroków, zanim będzie można go użyć.
W systemie OSX firma Apple wprowadziła funkcję tworzenia wirtualnych urządzeń midi, do których można uzyskać dostęp za pośrednictwem aplikacji Audio Midi Setup na komputerach Mac. Po utworzeniu nowego urządzenia, Hairless MIDI może zostać użyte do stworzenia połączenia szeregowego między Arduino a nowym wirtualnym urządzeniem midi. Połączenie szeregowe z Arduino przez Hairless MIDI działa z szybkością transmisji zdefiniowaną w części skryptu void setup i musi być ustawione jako równoważne w ustawieniach preferencji Hairless MIDI.
Do celów testowych wykorzystałem Midi Monitor, aby sprawdzić, czy przesyłane są prawidłowe dane przez połączenie szeregowe-MIDI. Kiedy ustaliłem, że każdy przycisk wysyła poprawne dane przez właściwe kanały, ustawiłem sygnał MIDI, aby kierował go do Ableton Live 9 jako wejście MIDI. W Abletonie udało mi się zmapować pokrojone próbki audio do każdego przycisku i odtworzyć każdą próbkę.
Zalecana:
Lewitacja akustyczna z Arduino Uno krok po kroku (8 kroków): 8 kroków
Lewitacja akustyczna z Arduino Uno Krok po kroku (8-kroków): ultradźwiękowe przetworniki dźwięku Zasilacz żeński L298N Dc z męskim pinem dc Arduino UNOBreadboardJak to działa: Najpierw wgrywasz kod do Arduino Uno (jest to mikrokontroler wyposażony w cyfrowy oraz porty analogowe do konwersji kodu (C++)
Zatrzymaj spocone dłonie i stopy za pomocą Sweat Fighter!: 7 kroków (ze zdjęciami)
Zatrzymaj spocone dłonie i stopy za pomocą Sweat Fighter!: Aktualizacja 3/1/19: Niektórzy ludzie zgłaszają ból, który jest spowodowany szybką zmianą polaryzacji. Zaktualizuję kod, aby zmniejszyć ten problem, ale na razie powinieneś wstrzymać się z budowaniem tego.Nadpotliwość to stan, który powoduje nadmiar
Potężniejszy Arduino-UNO, Massduino-UNO: 9 kroków
Wydajniejsze Arduino-UNO, Massduino-UNO: Co to jest Massduino? Massduino to nowa linia produktów, która łączy w sobie peryferia platformy Arduino - bogate, wygodne i szybkie w rozwoju, tanie i łatwe w produkcji zalety produkcji na dużą skalę. Prawie cały kod Arduino może być
MIDI Fighter oparty na Arduino (wrażliwy na dotyk): 7 kroków (ze zdjęciami)
Arduino Based MIDI Fighter (Touch Sensitive): MIDI to skrót od Musical Instrument Digital Interface. Tutaj tworzymy czuły na dotyk myśliwiec MIDI. Ma 16 padów. można je zwiększyć lub zmniejszyć. Tutaj użyłem 16 z powodu ograniczonych pinów arduino. Użyłem również analogowych pinów wejściowych
Kontroler oświetlenia taśmy LED 5V MIDI dla Spielatrona lub innego syntezatora MIDI: 7 kroków (ze zdjęciami)
Kontroler oświetlenia taśmy LED 5V MIDI dla Spielatronu lub innego syntezatora MIDI: Ten kontroler miga trójkolorowymi paskami LED dla 50mS na nutę.Niebieski dla G5 do D#6, czerwony dla E6 do B6 i zielony dla C7 do G7. Kontroler jest urządzeniem ALSA MIDI, więc oprogramowanie MIDI może wysyłać sygnały do diod LED w tym samym czasie, co syntezator MIDI