Spisu treści:

Arduino Uno Midi Fighter: 5 kroków
Arduino Uno Midi Fighter: 5 kroków

Wideo: Arduino Uno Midi Fighter: 5 kroków

Wideo: Arduino Uno Midi Fighter: 5 kroków
Wideo: Arduino MIDI Fighter Build, Part 2 2024, Lipiec
Anonim
Arduino Uno Midi Fighter
Arduino Uno Midi Fighter

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

Projekt
Projekt
Projekt
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

Budowa i okablowanie
Budowa i okablowanie
Budowa i okablowanie
Budowa i okablowanie
Budowa i okablowanie
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

Programowanie
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

Image
Image
Ustawiać
Ustawiać
Ustawiać
Ustawiać
Ustawiać
Ustawiać

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: