Reklama
Jako muzyk, który zgromadził kolekcję instrumentów muzycznych i skrzynek szumowych, skromne Arduino jest idealnym narzędziem do stworzenia niestandardowego kontrolera MIDI. Podczas gdy Raspberry Pi mógł przejąć koronę Internet przedmiotów (IoT) Internet przedmiotów: 10 przydatnych produktów, które musisz wypróbować w 2016 rokuInternet przedmiotów rozwija się w 2016 roku, ale co to dokładnie znaczy? Jak osobiście korzystasz z Internetu przedmiotów? Oto kilka przydatnych produktów do zilustrowania. Czytaj więcej projekty, proste Arduino Uno (jakie są różne rodzaje Arduino? Poradnik kupujący Arduino: Którą deskę powinieneś dostać?Istnieje tak wiele różnych rodzajów tablic Arduino, że wybaczono by ci, że jesteś zdezorientowany. Które powinieneś kupić dla swojego projektu? Pomóż nam, korzystając z tego przewodnika zakupów Arduino! Czytaj więcej ) ma więcej niż wystarczającą moc do tego projektu.
Pierwszy raz korzystasz z Arduino? Nie martw się, mamy kompletny Przewodnik dla początkujących Arduino Pierwsze kroki z Arduino: przewodnik dla początkującychArduino to platforma prototypowania elektroniki typu open source oparta na elastycznym, łatwym w użyciu sprzęcie i oprogramowaniu. Jest przeznaczony dla artystów, projektantów, hobbystów i wszystkich zainteresowanych tworzeniem interaktywnych obiektów lub środowisk. Czytaj więcej przeczytać przed przystąpieniem do tego projektu.
Co to jest MIDI?
MIDI oznacza interfejs cyfrowy instrumentów muzycznych. Przedstawia standardowy sposób komunikacji między urządzeniami muzycznymi. Jeśli posiadasz klawiaturę elektroniczną, prawdopodobnie masz interfejs MIDI. Chociaż przy implementacji MIDI jest kilka szczegółów technicznych, należy pamiętać, że MIDI nie jest dźwiękiem! Dane MIDI to prosty zestaw instrukcji (jedna instrukcja nazywana jest „wiadomością”), którą inne urządzenie może wdrożyć w celu uzyskania różnych dźwięków lub parametrów kontrolnych.
MIDI obsługuje 16 kanałów. Oznacza to, że każdy kabel może obsługiwać 16 różnych urządzeń komunikujących się niezależnie ze sobą. Urządzenia są podłączane za pomocą 5-stykowego kabla DIN. DIN oznacza „Niemiecki Instytut Normalizacyjny” i jest po prostu kablem z pięcioma pinami wewnątrz złącza. USB jest często używane zamiast 5-stykowego DIN lub można użyć interfejsu USB-MIDI.
Zmiana sterowania i zmiana programu
Istnieją dwa główne typy komunikatów MIDI: Zmiana sterowania i Zmiana programu.
Komunikaty Control Change (CC) zawierają numer kontrolera i wartość z zakresu od 0 do 127. Wiadomości CC są często używane do zmiany ustawień, takich jak głośność lub wysokość dźwięku. Urządzenia akceptujące MIDI powinny być wyposażone w instrukcję wyjaśniającą, które kanały i komunikaty są domyślnie konfigurowane oraz jak je zmieniać (znane jako mapowanie MIDI).
Komunikaty zmiany programu (PC) są prostsze niż komunikaty CC. Wiadomości z komputera składają się z jednego numeru i służą do zmiany ustawienia wstępnego lub poprawki w urządzeniu. Wiadomości z komputera są czasem nazywane „zmianą łaty”. Podobnie jak komunikaty CC, producenci powinni dostarczyć dokument opisujący, jakie ustawienia wstępne zmieniają poszczególne komunikaty.
Czego będziesz potrzebować
- Arduino
- 5-stykowe gniazdo żeńskie DIN
- Rezystory 2 x 220 omów
- Rezystory 2 x 10k omów
- 2 x chwilowe przełączniki
- Druty do podwieszania
- Breadboard
- Kabel MIDI
- Urządzenie MIDI lub interfejs USB
Plan kompilacji
Ten projekt będzie dość prosty. Możesz oczywiście dodać więcej przycisków lub sprzętu do swoich potrzeb. Prawie każde Arduino będzie odpowiednie - w tym przykładzie potrzebne są tylko trzy piny. Projekt składa się z dwóch przycisków do sterowania programem, portu MIDI do wysyłania danych oraz urządzenia do odbierania wiadomości. Ten obwód został zbudowany na deska do krojenia Elektronika dla początkujących: 10 umiejętności, które musisz znaćWielu z nas nigdy nawet nie dotknęło lutownicy - ale tworzenie rzeczy może być niezwykle satysfakcjonujące. Oto dziesięć podstawowych umiejętności związanych z elektroniką dla majsterkowiczów, które pomogą Ci zacząć. Czytaj więcej tutaj jednak możliwe jest przeniesienie go do skrzynki projektowej i lutowanych złączy w celu uzyskania solidnego rozwiązania.
Zespół obwodów
Połączenie MIDI
Połącz swoje gniazdo MIDI w następujący sposób:
- Pin 5 MIDI do Arduino Transmit (TX) 1 przez rezystor 220 omów
- Pin 4 MIDI do Arduino + 5 V poprzez rezystor 220 omów
- Pin 2 MIDI do uziemienia Arduino
Połączenie przycisku
Przyciski działają poprzez zmianę oporu, jaki „widzi” Arduino. Pin Arduino przechodzi przez przełącznik prosto do ziemi (NISKA) przez rezystor 10 kOm (rezystor „pull down”, zapewniający utrzymanie niskiej wartości). Po naciśnięciu przycisku wartość widoczna przez obwód zmienia się na + 5 V bez rezystora (WYSOKI). Arduino może wykryć tę zmianę za pomocą digitalRead (pin) Komenda. Podłącz przyciski do styków 6 i 7 na cyfrowym wejściu / wyjściu Arduino (I / O). Połącz oba przyciski:
- Lewa strona przycisku do + 5 V.
- Prawa strona przycisku do uziemienia Arduino za pomocą rezystora 10 kΩ
- Prawa strona przycisku do pinu Arduino (6 lub 7)
Testowanie MIDI
Teraz, gdy cały sprzęt jest już gotowy, czas go przetestować. Będziesz potrzebował interfejsu USB-MIDI (wiele interfejsów audio może to zrobić) i kabla MIDI. Port MIDI podłączony do płyty breadboard wysyła dane, więc jest to wyjście. Twój komputer odbiera dane, dlatego jest to dane wejściowe. Ten projekt wykorzystuje doskonałe Arduino Biblioteka MIDI v4.2 przez Forty Seven Effects. Po zainstalowaniu biblioteki możesz dołączyć ją do kodu, przechodząc do Szkic> Uwzględnij bibliotekę> MIDI.
Potrzebny będzie również program do monitorowania przychodzących danych MIDI:
- Monitor MIDI dla OS X
- MIDI-OX dla Windowsa
- KMidimon dla systemu Linux
Podłącz Arduino Rozpoczęcie pracy z zestawem startowym Arduino - instalowanie sterowników oraz konfigurowanie płyty głównej i portuWięc kupiłeś sobie zestaw startowy Arduino i być może jakieś inne fajne komponenty - co teraz? Jak właściwie zacząłeś programować to Arduino? Jak to skonfigurować ... Czytaj więcej na komputer i prześlij następujący kod testowy (nie zapomnij wybrać prawidłowej płyty i portu z Narzędzia> Płyta i Narzędzia> Port menu).
#zawierać
#zawierać
#zawierać
#zawierać
#zawierać MIDI_CREATE_INSTANCE (HardwareSerial, Serial, midiOut); // utwórz obiekt MIDI o nazwie midiOut void setup () {Serial.begin (31250); // konfiguracja szeregowa dla MIDI. } void loop () {midiOut.sendControlChange (56,127,1); // wyślij MIDI CC - 56 = nuta, 127 = prędkość, 1 = opóźnienie kanału (1000); // poczekaj 1 sekundę midiOut.sendProgramChange (12,1); // wyślij komputer MIDI - 12 = wartość, 1 = opóźnienie kanału (1000); // poczekaj 1 sekundę. }
Ten kod wyśle wiadomość CC, poczekaj 1 sekundę, wyślij wiadomość PC, a następnie poczekaj 1 sekundę w nieskończoność. Jeśli wszystko działa poprawnie, na monitorze MIDI powinien pojawić się komunikat.
Jeśli nic się nie stanie, nie panikuj! Spróbuj rozwiązać problem:
- Upewnij się, że wszystkie połączenia są prawidłowe
- Sprawdź, czy port MIDI jest prawidłowo podłączony - na zewnętrznych krawędziach powinny znajdować się 2 zapasowe piny
- Sprawdź dwukrotnie, czy obwód jest poprawny
- Sprawdź, czy obwód jest podłączony do interfejsu USB-MIDI za pomocą kabla MIDI
- Sprawdź, czy kabel MIDI jest podłączony do Wejście na interfejsie USB-MIDI
- Upewnij się, że Arduino ma moc
- Zainstaluj odpowiedni sterownik dla interfejsu USB-MIDI
Jeśli jesteś nadal w razie problemów warto sprawdzić płytkę. Tanie tablice mogą czasem być bardzo niespójne i niskiej jakości - przydarzyło mi się to podczas pracy nad tym projektem.
Testowanie przycisku
Czas przetestować, czy przyciski działają poprawnie. Prześlij następujący kod testowy. MIDI nie musi być podłączony, aby przetestować tę część.
const int buttonOne = 6; // przypisz pin przycisku do zmiennej. const int buttonTwo = 7; // przypisz pin przycisku do zmiennej void setup () {Serial.begin (9600); // setup serial dla text pinMode (buttonOne, INPUT); // przycisk konfiguracji jako wejście pinMode (buttonTwo, INPUT); // przycisk konfiguracji jako dane wejściowe. } void loop () {if (digitalRead (buttonOne) == HIGH) {// sprawdź opóźnienie stanu przycisku (10); // oprogramowanie się odrzuci, jeśli (digitalRead (buttonOne) == HIGH) {// sprawdź ponownie stan przycisku Serial.println („Button One Works!”); // opóźnienie wyniku dziennika (250); }} if (digitalRead (buttonTwo) == HIGH) {// sprawdź opóźnienie stanu przycisku (10); // oprogramowanie wycofuje odbicie, jeśli (digitalRead (buttonTwo) == HIGH) {// sprawdź ponownie stan przycisku Serial.println („Button Two Works!”); // opóźnienie wyniku dziennika (250); } } }
Uruchom ten kod (ale nie odłączaj kabla USB) i otwórz Monitor szeregowy (W prawym górnym rogu> Monitor szeregowy). Gdy naciśniesz przycisk, powinieneś zobaczyć „Button One Works!” lub „Button Two Works!” w zależności od naciśniętego przycisku.
Od tego przykładu jest jedna ważna uwaga - oprogramowanie odrzuca. Jest to proste 10 milisekundowe opóźnienie między sprawdzeniem przycisku a ponownym sprawdzeniem przycisku. Zwiększa to dokładność naciśnięcia przycisku i pomaga zapobiegać hałasowi wyzwalającemu Arduino. Nie musisz tego robić, chociaż jest to zalecane.
Tworzenie kontrolera
Teraz, gdy wszystko jest okablowane i działa, czas złożyć pełny kontroler.
Ten przykład wyśle inną wiadomość CC dla każdego naciśniętego przycisku. Używam tego do sterowania Ableton Live 9.6 na OS X. Kod jest podobny do obu powyższych próbek testowych.
#zawierać
#zawierać
#zawierać
#zawierać
#zawierać const int buttonOne = 6; // przypisz pin przycisku do zmiennej. const int buttonTwo = 7; // przypisz pin przycisku do zmiennej MIDI_CREATE_INSTANCE (HardwareSerial, Serial, midiOut); // utwórz obiekt MIDI o nazwie midiOut void setup () {pinMode (buttonOne, INPUT); // przycisk konfiguracji jako wejście pinMode (buttonTwo, INPUT); // przycisk konfiguracji jako dane wejściowe Serial.begin (31250); // konfiguracja wyjścia MIDI. } void loop () {if (digitalRead (buttonOne) == HIGH) {// sprawdź opóźnienie stanu przycisku (10); // oprogramowanie wycofuje odbicie, jeśli (digitalRead (buttonOne) == HIGH) {// sprawdź ponownie stan przycisku midiOut.sendControlChange (56,127,1); // wyślij MIDI CC - 56 = nuta, 127 = prędkość, 1 = opóźnienie kanału (250); }} if (digitalRead (buttonTwo) == HIGH) {// sprawdź opóźnienie stanu przycisku (10); // oprogramowanie wycofuje odbicie, jeśli (digitalRead (buttonTwo) == HIGH) {// sprawdź ponownie stan przycisku midiOut.sendControlChange (42,127,1); // wyślij MIDI CC - 42 = nuta, 127 = prędkość, 1 = opóźnienie kanału (250); } } }
Uwaga - nie będziesz mógł używać Serial.println () z wyjściem MIDI.
Jeśli chcesz wysłać wiadomość PC zamiast CC, po prostu zamień:
midiOut.sendControlChange (42, 127,1);
Z:
midiOut.sendProgramChange (wartość, kanał);
W akcji
Poniżej znajduje się demonstracja dla kontrolera Ableton Live (Najlepsze oprogramowanie DJ na każdy budżet Najlepsze oprogramowanie DJ na każdy budżetDobre oprogramowanie do miksowania może znacząco wpłynąć na wydajność. Niezależnie od tego, czy korzystasz z komputera Mac, Windows czy Linux, każdy poziom umiejętności i budżetu jest zapewniony, jeśli chcesz zacząć grać. Czytaj więcej ). Prawy górny róg pokazuje mierniki audio, a górny środkowy pokazuje przychodzące wiadomości midi (przez Monitor MIDI w systemie OS X).
Czy masz już kontroler MIDI?
Istnieje wiele praktycznych zastosowań niestandardowego kontrolera MIDI. Możesz zbudować rozległą jednostkę sterowaną nożnie lub elegancki kontroler studyjny. A jeśli chcesz go kupić, oto: najlepsze kontrolery USB MIDI 9 najlepszych kontrolerów MIDI USB dla muzykówSzukasz kontrolera USB MIDI? Oto najlepsze kontrolery MIDI, które możesz teraz kupić, niezależnie od budżetu. Czytaj więcej możesz kupić.
Źródło zdjęcia: Keith Gentry przez Shutterstock.com
Joe jest absolwentem informatyki na University of Lincoln w Wielkiej Brytanii. Jest profesjonalnym programistą, a kiedy nie lata latającymi dronami ani nie pisze muzyki, często można go znaleźć przy robieniu zdjęć lub tworzeniu filmów.