Kako napraviti MIDI kontroler s Arduinom

Kako napraviti MIDI kontroler s Arduinom

Kao glazbenik koji je skupio kolekciju glazbenih instrumenata i kutija s bukom, skromni Arduino savršen je alat za stvaranje prilagođenog MIDI kontrolera. Iako je Raspberry Pi možda preuzeo krunu za projekte Interneta stvari (IoT), jednostavan Arduino Uno (koje su različite vrste Arduina?) Ima više nego dovoljno snage za ovaj projekt.





Prvi put koristite Arduino? Bez brige, imamo kompletnu Arduino vodič za početnike pročitati prije nego što se pozabavite ovim projektom.





Što je MIDI?

MIDI označava digitalno sučelje glazbenih instrumenata. Opisuje standardni način međusobne komunikacije glazbenih uređaja. Ako posjedujete elektroničku tipkovnicu, vjerojatno imate MIDI sučelje. Iako je u implementaciju MIDI -ja uključeno nekoliko tehničkih detalja, važno je zapamtiti da MIDI nije audio! MIDI podaci jednostavni su skup uputa (jedna uputa naziva se 'poruka') koju drugi uređaj može implementirati da bi proizveo različite zvukove ili kontrolne parametre.





MIDI podržava 16 kanala. To znači da svaki kabel može podržati 16 različitih uređaja koji međusobno neovisno komuniciraju. Uređaji su povezani pomoću 5-pinskog DIN kabela. DIN označava 'Njemački institut za standardizaciju' i jednostavno je kabel s pet pinova unutar konektora. USB se često koristi umjesto 5-pinskog DIN-a ili se može koristiti USB-MIDI sučelje.

MIDI-kabel-muški



Kontrola promjene i promjena programa

Postoje dvije glavne vrste MIDI poruka: Control Change i Program Change.

Poruke Control Change (CC) sadrže broj kontrolera i vrijednost između 0 i 127. CC poruke se često koriste za promjenu postavki kao što su glasnoća ili visina tona. Uređaji koji prihvaćaju MIDI trebali bi imati priručnik koji objašnjava koji su kanali i poruke zadano postavljeni i kako ih promijeniti (poznato kao MIDI mapiranje).





Poruke o promjeni programa (PC) jednostavnije su od CC poruka. Poruke na računalu sastoje se od jednog broja i koriste se za promjenu unaprijed postavljene postavke ili zakrpe na uređaju. Poruke na računalu ponekad su poznate i kao 'Promjena zakrpe'. Slično CC porukama, proizvođači trebaju dostaviti dokument u kojem će biti opisano koje se unaprijed određene postavke mijenjaju određenom porukom.

Ono što će vam trebati

  • Arduino
  • 5-polna DIN ženska utičnica
  • 2 x 220 ohmski otpornici
  • 2 x 10k ohm otpornika
  • 2 x trenutna prekidača
  • Spojne žice
  • Oglasna ploča
  • MIDI kabel
  • MIDI uređaj ili USB sučelje
Voda i drvo 5 kom. Ženske utičnice za ugradnju na 5 PCB -a na DIN za PC tipkovnicu KUPITE ODMAH NA AMAZONU

Plan izgradnje

Ovaj će projekt biti prilično jednostavan. Naravno, možete dodati još gumba ili hardvera koji odgovaraju vašim potrebama. Gotovo svaki Arduino bit će prikladan - za ovaj primjer potrebne su samo tri igle. Ovaj se projekt sastoji od dva gumba za upravljanje programom, MIDI priključka za slanje podataka i uređaja za primanje poruka. Ovdje je ovaj krug izgrađen na ploči, no moguće ga je prenijeti u projektnu kutiju i lemljene konektore za robusno rješenje.





Sklop sklopa

Arduino-Midi-upravljački sklop

MIDI veza

MIDI-ispis

Ožičite svoju MIDI utičnicu na sljedeći način:

  • MIDI pin 5 na Arduino odašiljač (TX) 1 preko otpornika od 220 ohma
  • MIDI pin 4 na Arduino +5V preko otpornika od 220 ohma
  • MIDI pin 2 na Arduino masu

Spajanje gumba

Gumbi rade mijenjajući otpor koji Arduino 'vidi'. Arduino pin prolazi kroz prekidač ravno na tlo ( NISKA ) preko 10k ohmskog otpornika (otpor koji se 'spušta', osiguravajući da vrijednost ostane niska). Kad se pritisne gumb, vrijednost koja se vidi u krugu mijenja se na +5v bez otpornika ( VISOKO ). Arduino može otkriti ovu promjenu pomoću digitalRead (pin) naredba. Spojite gumbe na pinove 6 i 7 na Arduino digitalnom ulazu/izlazu (I/O). Spojite oba gumba:

  • Lijeva strana tipke na +5V
  • Desna strana tipke za Arduino uzemljenje preko 10k ohmskog otpornika
  • Desna strana gumba za Arduino pin (6 ili 7)

MIDI testiranje

Sada kada je sav hardver gotov, vrijeme je za testiranje. Trebat će vam USB-MIDI sučelje (mnoga audio sučelja to mogu učiniti) i MIDI kabel. MIDI priključak ožičen na matičnoj ploči šalje podatke pa je to izlaz. Vaše računalo prima podatke, stoga je to ulaz. Ovaj projekt koristi izvrsni Arduino MIDI knjižnica v4.2 by Forty Seven Effects. Nakon što instalirate biblioteku, možete je uključiti u svoj kod tako da odete na Skica> Uključi biblioteku> MIDI .

Trebat će vam i program za nadzor dolaznih MIDI podataka:

Spojite Arduino na svoje računalo i prenesite sljedeći testni kôd (ne zaboravite odabrati ispravnu ploču i priključak s Alati> Ploča i Alati> Priključak jelovnici).

#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
}

Ovaj kôd će poslati CC poruku, pričekajte 1 sekundu, pošaljite poruku s računala, a zatim čekajte 1 sekundu neograničeno dugo. Ako sve radi ispravno, na vašem MIDI monitoru bi se trebala pojaviti poruka.

Ako se ništa ne dogodi, nemojte paničariti! Pokušajte riješiti probleme:

  • Provjerite jesu li sve veze ispravne
  • Provjerite je li MIDI priključak ispravno ožičen - na vanjskim rubovima trebaju biti 2 rezervne pinove
  • Dvaput provjerite je li krug ispravan
  • Provjerite je li krug spojen na USB-MIDI sučelje pomoću MIDI kabela
  • Provjerite je li vaš MIDI kabel spojen na ulazni na vašem USB-MIDI sučelju
  • Uvjerite se da Arduino ima snagu
  • Instalirajte odgovarajući upravljački program za svoje USB-MIDI sučelje

Ako ste još ako imate problema, možda bi bilo vrijedno provjeriti vašu matičnu ploču. Jeftine ploče ponekad mogu biti vrlo nedosljedne i nekvalitetne-to mi se dogodilo tijekom rada na ovom projektu.

Testiranje gumba

Sada je vrijeme da provjerite rade li gumbi ispravno. Prenesite sljedeći testni kôd. MIDI ne mora biti povezan za testiranje ovog dijela.

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);
}
}

}

Pokrenite ovaj kôd (ali neka USB kabel ostane spojen) i otvorite serijski monitor ( Gore desno> Serijski monitor ). Kada pritisnete gumb, trebali biste vidjeti 'Button One Works!' ili 'Button Two Works!' ovisno o gumbu koji ste pritisnuli.

Iz ovog primjera treba uzeti u obzir jednu važnu napomenu-odbacivanje softvera. Ovo je jednostavno kašnjenje od 10 milisekundi (ms) između provjere gumba i ponovne provjere gumba. To povećava točnost pritiskanja gumba i sprječava buku koja pokreće Arduino. Ne morate to učiniti, iako se preporučuje.

Stvaranje kontrolera

Sada kada je sve ožičeno i radi, vrijeme je za sastavljanje punog kontrolera.

Ovaj primjer će poslati različitu CC poruku za svaki pritisnuti gumb. Koristim ovo za kontrolu Ableton Live 9.6 na OS X. Kod je sličan oba gornja uzorka za testiranje.

#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);
}
}
}

Napomena - nećete moći koristiti Serial.println () s MIDI izlazom.

Ako želite poslati poruku s računala umjesto CC -a, jednostavno zamijenite:

midiOut.sendControlChange(42,127,1);

S:

midiOut.sendProgramChange(value, channel);

Na djelu

Ispod je demonstracija kao kontroler za Ableton uživo ( Najbolji DJ softver za svaki proračun ). Gornji desni prikazuje audiometre, a gornji srednji dolazne midi poruke (putem MIDI monitor na OS X).

kako zaraditi novac igrajući video igre kod kuće

Jeste li napravili MIDI kontroler?

Postoji mnogo praktičnih upotreba prilagođenog MIDI kontrolera. Mogli biste izgraditi golemu jedinicu s nožnim upravljanjem ili elegantni studijski kontroler. A ako ste zainteresirani za kupnju, evo najboljih USB MIDI kontrolera koje možete kupiti.

Kredit za sliku: Keith Gentry putem Shutterstock.com

Nadamo se da vam se sviđaju stavke koje preporučujemo i raspravljate! MUO ima pridružena i sponzorirana partnerstva pa od nekih vaših kupnji primamo dio prihoda. To neće utjecati na cijenu koju plaćate i pomaže nam da ponudimo najbolje preporuke proizvoda.

Udio Udio Cvrkut E -pošta Isplati li se nadogradnja na Windows 11?

Windows je redizajniran. No, je li to dovoljno da vas uvjeri da prijeđete s Windows 10 na Windows 11?

Pročitajte Dalje
Povezane teme
  • Uradi sam
  • DJ softver
  • Arduino
  • Elektronika
  • PODNEVNI
O autoru Joe Coburn(136 objavljenih članaka)

Joe je diplomirao računalne znanosti na Sveučilištu Lincoln, UK. On je profesionalni programer softvera, a kad ne leti bespilotnim letjelicama ili ne piše glazbu, često ga se može zateći kako fotografira ili proizvodi video zapise.

Više od Joea Coburna

Pretplatite se na naše obavijesti

Pridružite se našem biltenu za tehničke savjete, recenzije, besplatne e -knjige i ekskluzivne ponude!

Kliknite ovdje za pretplatu