Oglas

Kao glazbenik koji je skupio kolekciju glazbenih instrumenata i zvučnih kutija, skromni Arduino savršen je alat za stvaranje prilagođenog MIDI kontrolera. Iako je Raspberry Pi možda uzeo krunu za Internet stvari (IoT) Internet stvari: 10 korisnih proizvoda koje morate isprobati u 2016. godiniInternet stvari raste u 2016. godini, ali što to točno znači? Kako vam osobno koristi Internet stvari? Evo nekoliko korisnih proizvoda za ilustraciju. Čitaj više projekti, jednostavan Arduino Uno (koje su različite vrste Arduina? Vodič za kupnju Arduinoa: Koji odbor trebate dobiti?Postoji toliko mnogo vrsta Arduino ploča vani da bi vam bilo oprošteno što ste zbunjeni. Koje biste trebali kupiti za svoj projekt? Pomozite nam s ovim vodičem za kupovinu Arduino! Čitaj više ) ima više nego dovoljno snage za ovaj projekt.

Prvi put koristite Arduino? Bez brige, imamo komplet Arduino vodič za početnike Početak rada s Arduinom: Vodič za početnikeArduino je platforma za prototiranje elektronike otvorenog koda koja se temelji na fleksibilnom hardveru i softveru koji se lako koristi. Namijenjen je umjetnicima, dizajnerima, hobistima i svima koji su zainteresirani za stvaranje interaktivnih objekata ili okruženja.

Čitaj više za čitanje prije nego što se pozabavite ovim projektom.

Težak-Midi-Controller-maketa

Što je MIDI?

MIDI je kratica za Digitalno sučelje glazbenih instrumenata. Predstavlja standardni način komunikacije glazbenih uređaja. Ako posjedujete elektroničku tipkovnicu, vjerojatno imate MIDI sučelje. Iako je nekoliko tehničkih detalja uključenih u implementaciju MIDI-a, važno je zapamtiti da MIDI nije zvuk! Podaci MIDI su jednostavni skup uputstava (jedna se uputa naziva "poruka") koju drugi uređaj može implementirati za stvaranje različitih zvukova ili upravljačkih parametara.

MIDI podržava 16 kanala. To znači da svaki kabel može podržavati 16 različitih uređaja koji međusobno neovisno komuniciraju. Uređaji su povezani pomoću 5-polnog 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-polnog DIN-a ili se može koristiti USB-MIDI sučelje.

MIDI kabel-Male

Promjena kontrole i promjena programa

Postoje dvije glavne vrste MIDI poruke: Promjena kontrole i Promjena programa.

Poruke kontrole promjene (CC) sadrže broj kontrolera i vrijednost između 0 i 127. CC poruke se često koriste za promjenu postavki poput glasnoće ili tona. Uređaji koji prihvaćaju MIDI trebaju imati priručnik s objašnjenjem koji su kanali i poruke postavljeni prema zadanim postavkama i kako ih promijeniti (poznato kao MIDI preslikavanje).

Poruke o promjeni programa (PC) jednostavnije su od CC poruka. PC poruke sastoje se od jednog broja i koriste se za promjenu unaprijed postavljenih postavki ili zakrpa na uređaju. PC poruke su ponekad poznate i kao "Patch Change". Slično CC porukama, proizvođači bi trebali pružiti dokument u kojem se opisuju kakve se postavke mijenjaju određenom porukom.

Što će vam trebati

  • Težak
  • 5-polna DIN ženska utičnica
  • Otpornici 2 x 220 ohma
  • Otpornici 2 x 10k ohm
  • 2 x trenutne sklopke
  • Žice za spajanje
  • daska za kruh
  • MIDI kabel
  • MIDI uređaj ili USB sučelje

Izgradite plan

Ovaj će projekt biti vrlo jednostavan. Naravno možete dodati više gumba ili hardvera koji će odgovarati vašim potrebama. Gotovo svaki Arduino će biti 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. Ovaj je krug izgrađen na a daska za kruh Elektronika početnika: 10 vještina koje trebate znatiMnogi od nas nikada nisu ni dotakli željezo za lemljenje - ali izrada stvari može biti nevjerojatno korisna. Evo deset najosnovnijih vlastitih elektroničkih vještina koje će vam pomoći da započnete s radom. Čitaj više ovdje je, međutim, moguće prenijeti u projektni okvir i lemljene priključke za robusno rješenje.

Sklop kruga

Težak-Midi-Controller-krug

MIDI veza

MIDI Pinout

Uključite MIDI utičnicu na sljedeći način:

  • MIDI pin 5 za Arduino Transmit (TX) 1 putem otpornika od 220 ohma
  • MIDI pin 4 za Arduino + 5V preko otpornika od 220 ohma
  • MIDI pin 2 na Arduino tlo

Spajanje gumba

Gumbi djeluju mijenjajući otpor koji Arduino "vidi". Arduino igle idu preko prekidača ravno na zemlju (LOW) preko otpornika od 10k ohma (otpornik na "down down", osiguravajući da vrijednost ostane niska). Kad se pritisne gumb, vrijednost koju vidi krug mijenja se u + 5V bez otpornika (HIGH). Arduino može ovu promjenu otkriti pomoću digitalno čitanje (pin) naredba. Gumbe spojite na igle 6 i 7 na Arduino digitalnom ulazu / izlazu (I / O). Povežite oba gumba:

  • Lijeva strana tipke do + 5V
  • Desna strana tipke do Arduino uzemljenja preko otpornika od 10k ohma
  • Desna strana gumba na Arduino pin (6 ili 7)

MIDI testiranje

Sad kad je sav hardver gotov, vrijeme je da ga testiramo. Trebat će vam USB-MIDI sučelje (to mogu učiniti mnogi audio sučelja) i MIDI kabel. MIDI port ožičen na 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 po četrdeset sedam učinaka. Nakon što instalirate Knjižnicu, možete je uključiti u svoj kôd na Skica> Uključi knjižnicu> MIDI.

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

  • MIDI Monitor za OS X
  • MIDI-OX za Windows
  • KMidimon za Linux

Spojite Arduino Prvi koraci sa svojim Arduino Starter Kitom - Instalacija upravljačkih programa i postavljanje ploče i priključkaDakle, kupili ste sebi Arduino starter kit i možda neke druge slučajne cool komponente - što sad? Kako zapravo započinjete s programiranjem ove Arduino stvari? Kako to postaviti? Čitaj više na računalo i prenesite sljedeći testni kôd (ne zaboravite odabrati ispravnu ploču i priključak s Alati> Ploča i Alati> Luka izbornika).

#include 
#include 
#include 
#include 
#include  MIDI_CREATE_INSTANCE (HardwareSerial, Serijski, midiOut); // stvoriti MIDI objekt nazvan midiOut void setup () {Serial.begin (31250); // serijski postavljanje za MIDI. } void petlja () {midiOut.sendControlChange (56,127,1); // poslati MIDI CC - 56 = napomena, 127 = brzina, 1 = kašnjenje kanala (1000); // pričekajte 1 sekundu midiOut.sendProgramChange (12,1); // poslati MIDI PC - 12 = vrijednost, 1 = kašnjenje kanala (1000); // pričekajte 1 sekundu. }

Ovaj će kôd poslati CC poruku, pričekati 1 sekundu, poslati PC poruku, a zatim pričekati 1 sekundu neograničeno. Ako sve radi ispravno, trebala bi se vidjeti poruka na vašem MIDI monitoru.

Ako se ništa ne dogodi, nemojte paničariti! Pokušajte rješavanje problema:

  • Provjerite jesu li svi priključci ispravni
  • Provjerite je li MIDI priključak pravilno spojen - na vanjskim rubovima trebaju biti 2 rezervna igla
  • Dvaput provjerite je li strujni krug
  • Provjerite je li spoj spojen na USB-MIDI sučelje s MIDI kabelom
  • Provjerite je li vaš MIDI kabel spojen na ulazni na vašem USB-MIDI sučelju
  • Provjerite ima li Arduino snage
  • Instalirajte ispravan upravljački program za vaše USB-MIDI sučelje

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

Testiranje gumba

Sada je vrijeme za testiranje gumba rade li ispravno. Prenesite sljedeći testni kôd. Za testiranje ovog dijela MIDI ne treba biti povezan.

const int buttonOne = 6; // dodijeliti pin na varijabli. const int tipkaTwo = 7; // dodijeliti kontaktnu tipku varijabli postavke praznine () {Serial.begin (9600); // serijski postavljanje za tekst pinMode (buttonOne, INPUT); // gumb za postavljanje kao ulazni pinMode (gumbTwo, INPUT); // gumb za postavljanje kao ulaz. } void petlja () {if (digitalRead (buttonOne) == HIGH) {// odgoda stanja tipke (10); // softver odustaje ako (digitalRead (buttonOne) == HIGH) {// ponovno provjeri stanje gumba Serial.println ("gumb jedan radi!"); // odgoda rezultata prijavljivanja (250); }} if (digitalRead (buttonTwo) == HIGH) {// odgoda stanja tipke (10); // softver odustaje ako (digitalRead (buttonTwo) == HIGH) {// ponovno provjeri stanje gumba Serial.println ("Gumb Dva djela!"); // odgoda rezultata prijavljivanja (250); } } }

Pokrenite ovaj kôd (ali USB kabel držite spojenim) i otvorite serijski monitor (Gore desno> Serijski monitor). Kada pritisnete gumb, trebali biste vidjeti "Gumb Jedan djeluje!" ili "Dva djela gumba!" ovisno o gumbu koji ste pritisnuli.

Postoji jedna važna zabilješka za oduzimanje od ovog primjera - softver odustaje. Ovo je jednostavno odgađanje od 10 milisekundi (ms) između provjere gumba i ponovne provjere gumba. To povećava točnost pritiska na tipku i pomaže u sprečavanju buke koja pokreće Arduino. Ne morate to raditi, iako se preporučuje.

Izrada kontrolera

Sad kad je sve ožičeno i radi, vrijeme je za sastavljanje punog kontrolera.

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

#include 
#include 
#include 
#include 
#include const int buttonOne = 6; // dodijeliti pin na varijabli. const int tipkaTwo = 7; // dodijeliti pin za varijablu MIDI_CREATE_INSTANCE (HardwareSerial, Serial, midiOut); // stvoriti MIDI objekt nazvan midiOut void setup () {pinMode (buttonOne, INPUT); // gumb za postavljanje kao ulazni pinMode (gumbTwo, INPUT); // gumb za postavljanje kao ulaz Serial.begin (31250); // postavi MIDI izlaz. } void petlja () {if (digitalRead (buttonOne) == HIGH) {// odgoda stanja tipke (10); // softver odustaje ako (digitalRead (buttonOne) == HIGH) {// ponovno provjeri stanje gumba midiOut.sendControlChange (56,127,1); // poslati MIDI CC - 56 = napomena, 127 = brzina, 1 = kašnjenje kanala (250); }} if (digitalRead (buttonTwo) == HIGH) {// odgoda stanja tipke (10); // softver odustaje ako (digitalRead (buttonTwo) == HIGH) {// ponovno provjeri stanje gumba midiOut.sendControlChange (42,127,1); // poslati MIDI CC - 42 = napomena, 127 = brzina, 1 = kašnjenje kanala (250); } } }

Napomena - nećete je moći koristiti Serial.println () s MIDI izlazom.
Ako želite poslati PC poruku umjesto CC jednostavno zamijenite:

midiOut.sendControlChange (42.127,1);

S:

midiOut.sendProgramChange (vrijednost, kanal); 

U akciji

Ispod je demonstracija kao kontrolera za Ableton Live (Najbolji DJ softver za svaki proračun Najbolji DJ softver za svaki proračunDobar softver za miješanje može značajno utjecati na vašu izvedbu. Bez obzira koristite li Mac, Windows ili Linux, svaka razina spretnosti i proračuna osigurava se ako želite započeti DJ. Čitaj više ). Gornje desno prikazuje audio brojila, a gornja sredina prikazuje dolazne midi poruke (putem MIDI Monitor na OS X).

Jeste li napravili MIDI kontroler?

Za prilagođeni MIDI kontroler postoji mnogo praktičnih načina. Možete izgraditi veliku jedinicu koja kontrolira stopala ili uglađen studijski kontroler. A ako vas zanima kupnja, evo ih najbolji USB MIDI kontroleri 9 najboljih USB MIDI kontrolera za glazbenikeTražite li USB MIDI kontroler? Ovdje su najbolji MIDI kontroleri koje trenutno možete kupiti, bez obzira na proračun. Čitaj više možeš kupiti.

Kreditna slika: Keith Gentry putem Shutterstock.com

Joe je diplomski studij informatike na Sveučilištu Lincoln u Velikoj Britaniji. On je profesionalni programer softvera, a kad ne leti dronovima ili piše glazbu, često ga mogu naći fotografirati ili snimati videozapise.