Cum se face un controler MIDI cu un Arduino

Cum se face un controler MIDI cu un Arduino

În calitate de muzician care a adunat 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 că a preluat coroana pentru proiectele Internet of Things (IoT), un simplu Arduino Uno (care sunt diferitele tipuri de Arduino?) Are o putere mai mult decât suficientă pentru acest proiect.





Prima dată când folosiți un Arduino? Nu vă faceți griji, avem un complet Ghid pentru începători Arduino să citiți înainte de a aborda acest proiect.





Ce este MIDI?

MIDI înseamnă Musical Interface Digital Interface. Acesta prezintă o modalitate standard de comunicare a dispozitivelor muzicale între ele. Dacă dețineți o tastatură electronică, probabil că aveți o interfață MIDI. Deși există câteva detalii tehnice implicate în implementarea MIDI, este important să ne amintim că MIDI nu este audio! Datele MIDI sunt un set simplu de instrucțiuni (o instrucțiune se numește „mesaj”) pe care un alt dispozitiv îl poate implementa pentru a produce sunete diferite sau pentru a controla parametrii.





MIDI acceptă 16 canale. Aceasta înseamnă că fiecare cablu poate suporta 16 dispozitive diferite care comunică independent între ele. Dispozitivele sunt conectate utilizând un cablu DIN cu 5 pini. DIN înseamnă „Institutul German pentru Standardizare” și este pur și simplu un cablu cu cinci pini în interiorul conectorului. USB este adesea utilizat în locul DIN cu 5 pini sau poate fi utilizată o interfață USB-MIDI.

MIDI-Cable-Male



Control Change și Program Change

Există două tipuri principale de mesaje MIDI: Control Change și Program Change.

Mesajele Control Change (CC) conțin un număr de controler și o valoare între 0 și 127. Mesajele CC sunt adesea folosite pentru a schimba setări precum volumul sau tonul. 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 schimbe (cunoscut sub numele de mapare MIDI).





Mesajele Program Change (PC) sunt mai simple decât mesajele CC. Mesajele PC constau dintr-un singur număr și sunt utilizate pentru a schimba presetarea sau patch-ul de pe un dispozitiv. Mesajele PC sunt uneori cunoscute sub denumirea de „Patch Change”. 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
  • Priză femelă DIN cu 5 pini
  • 2 rezistoare de 220 ohmi
  • 2 rezistențe de 10k ohm
  • 2 x comutatoare momentane
  • Cabluri de conectare
  • Breadboard
  • Cablu MIDI
  • Dispozitiv MIDI sau interfață USB
Apă și lemn 5 buc DIN 5 pini montare PCB prize femele pentru tastatură PC CUMPĂRĂ ACUM PE AMAZON

Construiți planul

Acest proiect va fi destul de simplu. Desigur, puteți adăuga mai multe butoane sau hardware pentru a se potrivi nevoilor dumneavoastră. Aproape orice Arduino va fi potrivit - pentru acest exemplu sunt necesare doar trei pini. 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 o placă de calcul aici, cu toate acestea este posibil să-l transferați într-o cutie de proiect și conectori lipiți pentru o soluție robustă.





Asamblarea circuitului

Circuit controler Arduino-Midi

Conexiune MIDI

MIDI-Pinout

Conectați mufa MIDI după cum urmează:

  • Pinul MIDI 5 la Arduino Transmit (TX) 1 printr-un rezistor de 220 ohmi
  • Pinul MIDI 4 la Arduino + 5V printr-un rezistor de 220 ohmi
  • Pinul MIDI 2 la solul Arduino

Conexiune buton

Butoanele funcționează schimbând rezistența pe care o vede Arduino. Pinul Arduino trece prin comutator direct la masă ( SCĂZUT ) printr-un rezistor de 10k ohm (un rezistor de „tragere în jos”, asigurându-vă că valoarea rămâne scăzută). Când butonul este apăsat, valoarea văzută de circuit se schimbă la + 5v fără rezistență ( ÎNALT ). Arduino poate detecta această modificare folosind digitalRead (pin) comanda. Conectați butoanele la pinii 6 și 7 de la intrarea / ieșirea digitală Arduino (I / O). Conectați ambele butoane:

  • Partea stângă a butonului la + 5V
  • Partea dreaptă a butonului către Arduino Ground printr-un rezistor de 10k ohm
  • Partea dreaptă a butonului la pinul Arduino (6 sau 7)

Testarea MIDI

Acum, că tot hardware-ul este terminat, este timpul să îl 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 pe panou trimite date, deci este ieșirea. Calculatorul dvs. primește datele, prin urmare este intrarea. Acest proiect folosește excelentul Arduino Biblioteca MIDI v4.2 de Forty Seven Effects. După ce ați instalat Biblioteca, o puteți include în codul dvs. accesând Schiță> Includeți bibliotecă> MIDI .

De asemenea, veți avea nevoie de un program pentru a monitoriza datele MIDI primite:

Conectați Arduino la computer și încărcați următorul cod de test (nu uitați să selectați placa și portul corecte din Instrumente> Tablă și Instrumente> Port meniuri).

#include
#include
#include
#include
#include
MIDI_CREATE_INSTANCE(HardwareSerial,Serial, midiOut); // create a MIDI object called midiOut
void setup() {
Serial.begin(31250); // setup serial for MIDI
}
void loop() {
midiOut.sendControlChange(56,127,1); // send a MIDI CC -- 56 = note, 127 = velocity, 1 = channel
delay(1000); // wait 1 second
midiOut.sendProgramChange(12,1); // send a MIDI PC -- 12 = value, 1 = channel
delay(1000); // wait 1 second
}

Acest cod va trimite un mesaj CC, așteptați 1 secundă, trimiteți un mesaj PC apoi așteptați 1 secundă la nesfârșit. Dacă totul funcționează corect, ar trebui să vedeți un mesaj pe monitorul MIDI.

Dacă nu se întâmplă nimic, nu intrați în panică! Încercați 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 dublul 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ă dacă aveți probleme, ar merita să vă verificați panoul de testare. Plăcile ieftine pot fi uneori foarte inconsistente și de calitate scăzută - mi s-a întâmplat în timp ce lucram la acest proiect.

Testarea butoanelor

Acum este timpul să testați butoanele care 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; // assign button pin to variable
const int buttonTwo = 7; // assign button pin to variable
void setup() {
Serial.begin(9600); // setup serial for text
pinMode(buttonOne,INPUT); // setup button as input
pinMode(buttonTwo,INPUT); // setup button as input
}
void loop() {

if(digitalRead(buttonOne) == HIGH) { // check button state
delay(10); // software de-bounce
if(digitalRead(buttonOne) == HIGH) { // check button state again
Serial.println('Button One Works!'); // log result
delay(250);
}
}

if(digitalRead(buttonTwo) == HIGH) { // check button state
delay(10); // software de-bounce
if(digitalRead(buttonTwo) == HIGH) { // check button state again
Serial.println('Button Two Works!'); // log result
delay(250);
}
}

}

Rulați acest cod (dar păstrați cablul USB conectat) și deschideți monitorul serial ( În dreapta sus> Monitor serial ). Când apăsați un buton, ar trebui să vedeți „Butonul 1 funcționează!” sau „Butonul două funcționează!” în funcție de butonul pe care l-ați apăsat.

Există o notă importantă de luat de la acest exemplu - software-ul de-bounce. Aceasta este o întârziere simplă de 10 milisecunde (ms) între verificarea butonului și apoi verificarea butonului din nou. Acest lucru crește precizia apăsării butonului și ajută la prevenirea zgomotului care declanșează 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 apăsat. Folosesc acest lucru pentru a controla Ableton Live 9.6 pe OS X. Codul este similar cu ambele probe de testare de mai sus.

#include
#include
#include
#include
#include
const int buttonOne = 6; // assign button pin to variable
const int buttonTwo = 7; // assign button pin to variable
MIDI_CREATE_INSTANCE(HardwareSerial,Serial, midiOut); // create a MIDI object called midiOut
void setup() {
pinMode(buttonOne,INPUT); // setup button as input
pinMode(buttonTwo,INPUT); // setup button as input
Serial.begin(31250); // setup MIDI output
}
void loop() {
if(digitalRead(buttonOne) == HIGH) { // check button state
delay(10); // software de-bounce
if(digitalRead(buttonOne) == HIGH) { // check button state again
midiOut.sendControlChange(56,127,1); // send a MIDI CC -- 56 = note, 127 = velocity, 1 = channel
delay(250);
}
}

if(digitalRead(buttonTwo) == HIGH) { // check button state
delay(10); // software de-bounce
if(digitalRead(buttonTwo) == HIGH) { // check button state again
midiOut.sendControlChange(42,127,1); // send a MIDI CC -- 42 = note, 127 = velocity, 1 = channel
delay(250);
}
}
}

Notă - nu veți putea folosi Serial.println () cu ieșire MIDI.

Dacă doriți să trimiteți un mesaj PC în loc de un CC pur și simplu înlocuiți:

midiOut.sendControlChange(42,127,1);

Cu:

midiOut.sendProgramChange(value, channel);

În acțiune

Mai jos este o demonstrație ca controler pentru Ableton Live ( Cel mai bun software DJ pentru fiecare buget ). În dreapta sus sunt afișate contoarele audio, iar în partea de sus sus sunt afișate mesajele midi primite (via Monitor MIDI pe OS X).

rotire video pe Windows Media Player

Ați creat un controler MIDI?

Există o mulțime de utilizări practice pentru un controler MIDI personalizat. Puteți construi o unitate vastă controlată de picior sau un controler elegant de studio. Și dacă sunteți interesat să achiziționați unul, iată cele mai bune controlere USB MIDI pe care le puteți cumpăra.

Credit de imagine: Keith Gentry prin Shutterstock.com

Sperăm să vă placă articolele pe care le recomandăm și le discutăm! MUO are parteneriate afiliate și sponsorizate, așa că primim o parte din venituri din unele dintre achizițiile dvs. Acest lucru nu va afecta prețul pe care îl plătiți și ne ajută să oferim cele mai bune recomandări de produse.

Acțiune Acțiune Tweet E-mail Merită să faceți upgrade la Windows 11?

Windows a fost reproiectat. Dar este suficient pentru a vă convinge să treceți de la Windows 10 la Windows 11?

Citiți în continuare
Subiecte asemănătoare
  • DIY
  • Software pentru DJ
  • Arduino
  • Electronică
  • MIEZUL ZILEI
Despre autor Joe Coburn(136 articole publicate)

Joe este absolvent de Informatică de la Universitatea Lincoln, Marea Britanie. Este un dezvoltator de software profesionist și, atunci când nu zboară cu drone sau nu scrie muzică, poate fi găsit adesea făcând fotografii sau producând videoclipuri.

Mai multe de la Joe Coburn

Aboneaza-te la newsletter-ul nostru

Alăturați-vă newsletter-ului pentru sfaturi tehnice, recenzii, cărți electronice gratuite și oferte exclusive!

Faceți clic aici pentru a vă abona
Categorie Diy