Cum sa faci un controler MIDI cu un arduino
Ca muzician care a acumulat o colecție de instrumente muzicale și cutii de zgomot, umilul Arduino este instrumentul perfect pentru a crea un controler MIDI personalizat. În timp ce Raspberry Pi poate să fi luat coroana pentru internetul obiectelor Internetul lucrurilor: 10 produse utile pe care trebuie să le încerci în 2016 Internetul lucrurilor: 10 produse utile pe care trebuie să le încerci în 2016 Internetul lucrurilor se amplifică în 2016, dar ce înseamnă asta exact? Cum beneficiați personal de pe Internet de lucruri? Iată câteva exemple utile pentru ilustrare. Citește mai multe proiecte, un simplu Arduino Uno (care sunt diferitele tipuri de Arduino?) Arduino Ghid de cumpărare: Care ar trebui să obțineți arduino Arduino Ghid de cumpărare: Care consiliu ar trebui să obțineți? Există atât de multe tipuri diferite de placi Arduino acolo, tu "Cine ar trebui sa cumperi pentru proiectul tau? Sa ne ajute, cu acest ghid de cumparare Arduino! Citeste mai mult) are mai multa putere decat acest proiect.
Prima data folosind un Arduino? Nu vă faceți griji, avem un ghid complet pentru începători Arduino Noțiuni de bază cu Arduino: Un ghid pentru începători Arduino: Un ghid pentru începători Arduino este o platformă de prototipuri electronice cu sursă deschisă bazată pe hardware și software flexibile și ușor de folosit. Este destinat artiștilor, designerilor, pasionaților și tuturor celor interesați să creeze obiecte sau medii interactive. Citiți mai multe pentru a citi înainte de a aborda acest proiect.
Ce este MIDI?
MIDI înseamnă interfața digitală a instrumentului muzical. Acesta conturează un mod standard pentru dispozitivele muzicale de a comunica între ele. Dacă dețineți o tastatură electronică, probabil aveți o interfață MIDI. În timp ce există câteva detalii tehnice implicate în implementarea MIDI, este important să rețineți că MIDI nu este audio! Datele MIDI reprezintă un set simplu de instrucțiuni (o instrucțiune se numește a “mesaj”) pe care un alt dispozitiv le poate implementa pentru a face diferite sunete sau parametri de control.
MIDI suportă 16 canale. Aceasta înseamnă că fiecare cablu poate suporta 16 dispozitive diferite care comunică independent unul cu celălalt. Dispozitivele sunt conectate utilizând un cablu DIN cu 5 pini. DIN înseamnă “Institutul German de Standardizare”, și este pur și simplu un cablu cu cinci pini în interiorul conectorului. USB este adesea folosit în locul unui DIN cu 5 pini sau poate fi utilizată o interfață USB-MIDI.
Schimbarea de control și schimbarea programului
Există două tipuri principale de mesaje MIDI: Schimbare de control și Modificare program.
Mesajele de modificare a comenzii (CC) conțin un număr de controler și o valoare cuprinsă între 0 și 127. Mesajele CC sunt adesea folosite pentru a schimba setările, cum ar fi volumul sau pasul. Dispozitivele care acceptă MIDI ar trebui să vină cu un manual care să explice ce canale și mesaje sunt configurate în mod implicit și cum să le schimbați (cunoscut sub numele de cartografiere MIDI).
Modificările programelor (PC) sunt mai simple decât mesajele CC. Mesajele PC constau dintr-un singur număr și se utilizează pentru a schimba presetarea sau patch-urile de pe un dispozitiv. Mesajele PC sunt uneori cunoscute sub numele de “Modificarea patch-urilor”. Similar cu mesajele CC, producătorii ar trebui să furnizeze un document care să descrie ce presetări sunt modificate de un anumit mesaj.
Ce vei avea nevoie
- Arduino
- Conector mamă DIN cu 5 pini
- Rezistențe 2 x 220 ohmi
- Rezistente 2 x 10k ohm
- 2 x comutatoare momentan
- Fire de legătură
- breadboard
- Cablu MIDI
- Dispozitiv MIDI sau interfață USB
Apă și lemn 5 buc DIN 5 Pin PCB montare Conectori pentru PC Tastatură Apă și lemn 5 buc DIN 5 pin Conectori PCB pentru PC tastatură Cumpara acum la Amazon $ 2.79
Construiți un plan
Acest proiect va fi destul de simplu. Desigur, puteți adăuga mai multe butoane sau hardware pentru a vă satisface nevoile. Aproape orice Arduino va fi potrivit - doar trei pini sunt necesari pentru acest exemplu. Acest proiect constă din două butoane pentru a controla programul, un port MIDI pentru a trimite datele și un dispozitiv pentru a primi mesajele. Acest circuit a fost construit pe un panou de bord Electronica începătorului: 10 abilități pe care trebuie să le cunoașteți Electronica începătorilor: 10 abilități pe care trebuie să le cunoașteți Mulți dintre noi nu au atins nici măcar un fier de lipit - dar facem lucrurile incredibil de satisfăcătoare. Iată zece dintre cele mai de bază competențe electronice DIY pentru a vă ajuta să începeți. Citiți mai multe aici, dar este posibil să le transferați într-o cutie de proiect și conectori sudați pentru o soluție robustă.
Ansamblu de circuite
Conexiune MIDI
Conectați mufa MIDI după cum urmează:
- MIDI pinul 5 la transmisia Arduino (TX) 1 printr-o rezistență de 220 ohmi
- MIDI pin 4 la Arduino + 5V printr-o rezistență de 220 ohmi
- MIDI pinul 2 pe terenul Arduino
Butonul de conectare
Butoanele funcționează schimbând rezistența Arduino “vede”. Pinul Arduino trece prin comutator direct la masă (SCĂZUT) printr-o rezistență de 10k ohm (a “trage în jos” rezistor, asigurând valoarea rămâne scăzută). Când butonul este apăsat, valoarea văzută de circuit se schimbă la + 5v fără un rezistor (ÎNALT). Arduino poate detecta această modificare folosind digitalRead (pin) comanda. Conectați butoanele la pinii 6 și 7 de pe intrarea / ieșirea digitală Arduino (I / O). Conectați ambele butoane:
- Partea stângă a butonului la + 5V
- Partea dreaptă a butonului la Arduino Ground printr-o rezistență de 10k ohm
- Partea dreaptă a butonului pentru pinul Arduino (6 sau 7)
Testarea MIDI
Acum că toate componentele hardware sunt terminate, este timpul să le testați. Veți avea nevoie de o interfață USB-MIDI (multe interfețe audio pot face acest lucru) și un cablu MIDI. Portul MIDI conectat la panoul de tip breadboard trimite date, deci este ieșirea. Computerul primește datele, prin urmare este intrarea. Acest proiect utilizează biblioteca excelentă Arduino MIDI v4.2 de către Forty Seven Effects. Odată ce ați instalat Biblioteca, puteți să o includeți în cod prin accesarea Schiță> Includeți Biblioteca> MIDI.
De asemenea, veți avea nevoie de un program pentru a monitoriza datele MIDI primite:
- Monitor MIDI pentru OS X
- MIDI-OX pentru Windows
- KMidimon pentru Linux
Conectați Arduino Noțiuni de bază cu setul dvs. de pornire Arduino - Instalarea driverelor și configurarea tabloului de bord și a portului Începeți cu setul dvs. de pornire Arduino - Instalarea driverelor și configurarea tabloului de bord și a portului Deci, v-ați cumpărat un kit de pornire Arduino și eventual alte componente aleatoare aleatoare - acum ce? Cum de a începe cu programarea acestui lucru Arduino? Cum îl configurați ... Citiți mai multe pe computer și încărcați următorul cod de testare (nu uitați să selectați placa și portul corect din Instrumente> Consiliul și Instrumente> Port meniuri).
#include #include #include #include #include MIDI_CREATE_INSTANCE (HardwareSerial, Serial, midiOut); // crea un obiect MIDI numit midiOut void setup () Serial.begin (31250); // set serial pentru MIDI void loop () midiOut.sendControlChange (56,127,1); // trimite un MIDI CC - 56 = note, 127 = viteza, 1 = întârzierea canalului (1000); // așteptați 1 secundă midiOut.sendProgramChange (12,1); // trimite un MIDI PC - 12 = valoare, 1 = întârziere canal (1000); // așteptați 1 secundă
Acest cod va trimite un mesaj CC, așteptați 1 secundă, trimiteți un mesaj PC și așteptați o secundă pe termen nelimitat. Dacă totul funcționează corect, ar trebui să vedeți un mesaj pe monitorul MIDI.
Dacă nu se întâmplă nimic, nu vă panicați! Încearcă depanarea:
- Asigurați-vă că toate conexiunile sunt corecte
- Verificați dacă portul MIDI este conectat corect - ar trebui să existe 2 pini de rezervă pe marginile exterioare
- Verificați verificarea corectă a circuitului
- Verificați dacă circuitul este conectat la o interfață USB-MIDI cu un cablu MIDI
- Verificați dacă cablul MIDI este conectat la intrare pe interfața USB-MIDI
- Asigurați-vă că Arduino are putere
- Instalați driverul corect pentru interfața USB-MIDI
Daca esti încă având probleme care ar putea fi în valoare de verificarea breadboard dumneavoastră. Tabelele ieftine pot fi uneori foarte incoerente și de calitate scăzută - mi sa întâmplat în timp ce lucrez la acest proiect.
Butonul de testare
Acum este momentul să testați că butoanele funcționează corect. Încărcați următorul cod de test. MIDI nu trebuie să fie conectat pentru a testa această parte.
const int buttonOne = 6; // atribuiți pinul butonului la butonul const const int buttonTwo = 7; // atribuiți butonul PIN la variabila void setup () Serial.begin (9600); // setare serial pentru text pinMode (butonOne, INPUT); // butonul de configurare ca input pinMode (butonul 2, INPUT); // butonul de configurare ca intrare void loop () if (digitalRead (buttonOne) == HIGH) // verificarea întârzierii butonului (10); // soft-de-bounce dacă (digitalRead (buttonOne) == HIGH) // butonul de verificare a reveni din nou Serial.println ("Button One Works!"); // întârziere a rezultatului înregistrării (250); dacă (digitalRead (buttonTwo) == HIGH) // verificați întârzierea stării butonului (10); // soft-de-bounce în cazul în care (digitalRead (butonulTwo) == HIGH) / / / butonul de verificare din nou Serial.println ("Button Two Works!"); // întârziere a rezultatului înregistrării (250);
Rulați acest cod (dar păstrați cablul USB conectat) și deschideți monitorul serial (Sus dreapta> Monitor serial). Când apăsați un buton, ar trebui să vedeți “Butonul One Works!” sau “Butonul două lucrări!” în funcție de butonul pe care l-ați apăsat.
Există o notă importantă pentru a scăpa de acest exemplu - software-ul de-bounce. Aceasta este o întârziere simplă de 10 milisecunde (ms) între verificarea butonului și verificarea din nou a butonului. Aceasta crește precizia apăsării butonului și ajută la prevenirea declanșării zgomotului de către Arduino. Nu trebuie să faceți acest lucru, deși este recomandat.
Crearea controlerului
Acum, că totul este conectat și funcționează, este timpul să asamblați controlerul complet.
Acest exemplu va trimite un mesaj CC diferit pentru fiecare buton care este apăsat. Folosesc acest lucru pentru a controla Ableton Live 9.6 pe OS X. Codul este similar cu cele două eșantioane de testare de mai sus.
#include #include #include #include #include const int buttonOne = 6; // atribuiți pinul butonului la butonul const const int buttonTwo = 7; // atribuiți butonul PIN la variabila MIDI_CREATE_INSTANCE (HardwareSerial, Serial, midiOut); // crea un obiect MIDI numit midiOut void setup () pinMode (butonOne, INPUT); // butonul de configurare ca input pinMode (butonul 2, INPUT); // butonul de configurare ca intrare Serial.begin (31250); // setare ieșire MIDI void loop () if (digitalRead (buttonOne) == HIGH) // verificați întârzierea stării butonului (10); // software-de-bounce dacă (digitalRead (buttonOne) == HIGH) // butonul de verificare a stării din nou midiOut.sendControlChange (56,127,1); // trimite un MIDI CC - 56 = note, 127 = viteza, 1 = întârzierea canalului (250); dacă (digitalRead (buttonTwo) == HIGH) // verificați întârzierea stării butonului (10); // soft-de-bounce dacă (digitalRead (butonulTwo) == HIGH) // butonul de verificare starea din nou midiOut.sendControlChange (42,127,1); // trimite un MIDI CC - 42 = notă, 127 = viteză, 1 = întârziere canal (250);
Notă - nu veți putea folosi Serial.println () cu ieșire MIDI.
Dacă doriți să trimiteți un mesaj PC în locul unui CC, pur și simplu înlocuiți:
midiOut.sendControlChange (42,127,1);
Cu:
midiOut.sendProgramChange (valoare, canal);
În acțiune
Mai jos este o demonstrație ca controlor pentru Ableton Live (Cel mai bun software DJ pentru fiecare buget Cel mai bun software DJ pentru fiecare buget Cel mai bun software DJ pentru fiecare buget Software-ul bun de mixare poate face diferența în performanța dvs. Fie că folosiți un Mac , Windows, sau Linux, fiecare nivel de calificare și buget este asigurat dacă doriți să începeți DJ-ul. În partea dreaptă sus se afișează contoarele audio, iar mijlocul de sus arată mesajele midi primite (prin intermediul monitorului MIDI pe OS X).
Ați făcut un controler MIDI?
Există o mulțime de utilizări practice pentru un controler MIDI personalizat. Aveți posibilitatea să construiți o unitate vastă de picior control sau un controler de studio elegant. Ați făcut un controler MIDI personalizat? Anunță-mă în comentariile, mi-ar plăcea să le văd!
Image Credit: Keith Gentry prin intermediul Shutterstock.com
Explorați mai multe despre: Arduino, DJ Software, Electronică, MIDI.