Oglas

Kot glasbenik, ki je zbral zbirko glasbil in škatel, je skromni Arduino odlično orodje za ustvarjanje MIDI krmilnika po meri. Medtem ko je Raspberry Pi morda prevzel krono za Internet stvari (IoT) Internet stvari: 10 uporabnih izdelkov, ki jih morate poskusiti v letu 2016Internet stvari se razširi leta 2016, ampak kaj to točno pomeni? Kako vam osebno koristi internet stvari? Tukaj je nekaj koristnih izdelkov za ponazoritev. Preberi več projekti, preprost Arduino Uno (kakšne so različne vrste Arduina? Vodnik za nakup Arduino: Kateri odbor bi moral dobiti?Obstaja toliko različnih vrst Arduino plošč, da bi bili oproščeni, da ste zmedeni. Kaj bi morali kupiti za svoj projekt? Pomagajmo s tem vodnikom za nakup Arduino! Preberi več ) ima več kot dovolj moči za ta projekt.

Prvič uporabljate Arduino? Brez skrbi, imamo komplet Vodnik za začetnike Arduino Uvod v Arduino: Vodnik za začetnikeArduino je odprtokodna platforma za izdelavo prototipov za elektroniko, ki temelji na fleksibilni, enostavni strojni in programski opremi. Namenjen je umetnikom, oblikovalcem, hobistom in vsem, ki jih zanima ustvarjanje interaktivnih predmetov ali okolij.

instagram viewer
Preberi več prebrati, preden se lotite tega projekta.

Arduino-Midi-Controller-Krušna plošča

Kaj je MIDI?

MIDI pomeni digitalni vmesnik za glasbene instrumente. Predstavlja standardni način, kako glasbene naprave komunicirajo med seboj. Če imate elektronsko tipkovnico, verjetno imate vmesnik MIDI. Čeprav je pri izvajanju MIDI vključenih nekaj tehničnih podrobnosti, je pomembno zapomniti, da MIDI ni zvok! Podatki MIDI so preprosti niz navodil (eno navodilo se imenuje "sporočilo"), ki ga lahko druga naprava izvede za izdajanje različnih zvokov ali krmilnih parametrov.

MIDI podpira 16 kanalov. To pomeni, da lahko vsak kabel podpira 16 različnih naprav, ki med seboj neodvisno komunicirajo. Naprave so povezane s 5-polnim DIN kablom. DIN pomeni "nemški inštitut za standardizacijo" in je preprosto kabel s petimi zatiči znotraj priključka. Namesto 5-polnega DIN se pogosto uporablja USB ali USB-MIDI vmesnik.

MIDI-kabel-moški

Sprememba nadzora in sprememba programa

Obstajata dve glavni vrsti sporočila MIDI: Sprememba nadzora in Sprememba programa.

Sporočila Control Change (CC) vsebujejo številko krmilnika in vrednost med 0 in 127. CC sporočila se pogosto uporabljajo za spreminjanje nastavitev, kot sta glasnost ali višina. Naprave, ki sprejemajo MIDI, bi morale imeti priročnik, ki razlaga, katere kanale in sporočila so privzeto nastavljene in kako jih spremeniti (znano kot MIDI preslikava).

Sporočila o spremembi programa (PC) so preprostejša od CC sporočil. Sporočila na osebnem računalniku so sestavljena iz ene številke in se uporabljajo za spreminjanje prednastavitve ali popravka v napravi. PC sporočila so včasih znana kot "Patch Change". Podobno kot sporočila CC morajo tudi proizvajalci predložiti dokument, v katerem so opisane prednastavitve, ki jih posamezno sporočilo spremeni.

Kaj boste potrebovali

  • Arduino
  • 5-polna DIN vtičnica
  • 2 x 220 ohm uporov
  • 2 x 10k ohm uporov
  • 2 x trenutna stikala
  • Kabelske žice
  • Krušna plošča
  • MIDI kabel
  • MIDI naprava ali USB vmesnik

Načrt zgraditi

Ta projekt bo precej preprost. Seveda lahko dodate več gumbov ali strojne opreme, da ustrezajo vašim potrebam. Primerna bo skoraj vsaka Arduino - za ta primer so potrebni le trije zatiči. Ta projekt sestavljata dva gumba za nadzor programa, vrata MIDI za pošiljanje podatkov in naprava za sprejemanje sporočil. To vezje je zgrajeno na a deska Elektronika za začetnike: 10 veščin, ki jih morate vedetiMnogi od nas se še nikoli niso dotaknili spajkalnika - vendar je izdelava stvari neverjetno koristna. Tukaj je deset najosnovnejših lastnih elektronskih veščin, ki vam bodo pomagale začeti. Preberi več tu pa je možno, da ga prenesemo v projektno škatlo in spajkane konektorje za robustno rešitev.

Sklop vezja

Vezje Arduino-Midi-Controller-Circuit

Povezava MIDI

MIDI-Pinout

Priključite MIDI vtičnico na naslednji način:

  • MIDI pin 5 na Arduino Transmit (TX) 1 preko upora 220 ohm
  • MIDI pin 4 do Arduino + 5V preko upora 220 ohm
  • MIDI zatič 2 na tla Arduino

Gumb Povezava

Gumbi delujejo s spreminjanjem upora, ki ga Arduino »vidi«. Arduino zatič gre skozi stikalo naravnost na tla (NIZKA) prek 10k ohmskega upora (upor "navzdol", ki zagotavlja, da vrednost ostane nizka). Ko pritisnete gumb, se vrednost, ki jo vidi vezje, spremeni v + 5v brez upora (VISOKO). Arduino lahko to spremembo zazna s pomočjo digitalno branje (pin) ukaz. Gumbe priključite na nožice 6 in 7 na digitalnem vhodu / izhodu Arduino (I / O). Povežite oba gumba:

  • Leva stran gumba do + 5V
  • Desna stran gumba do Arduino Ground prek upora 10k ohm
  • Desna stran gumba za zatič Arduino (6 ali 7)

MIDI testiranje

Ko je vsa strojna oprema končana, je čas, da jo preizkusite. Potrebovali boste vmesnik USB-MIDI (to lahko stori več zvočnih vmesnikov) in MIDI kabel. Vrata MIDI, ožičena na plošči, pošiljajo podatke, torej je izhod. Računalnik sprejema podatke, torej je to vhod. Ta projekt uporablja odličen Arduino Knjižnica MIDI v4.2 Štirideset sedem učinkov. Ko namestite knjižnico, jo lahko vključite v kodo tako, da jo odprete Skica> Vključi knjižnico> MIDI.

Potrebovali boste tudi program za spremljanje vhodnih MIDI podatkov:

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

Poveži Arduino Uvod v računalnik za zagon Arduino - Namestitev gonilnikov in nastavitev plošče in vratTorej, kupili ste si starševski komplet Arduino in morda še kakšne naključne kul komponente - kaj zdaj? Kako pravzaprav začnete s programiranjem te Arduinove stvari? Kako jo nastavite ... Preberi več v računalnik in naložite naslednjo preskusno kodo (ne pozabite izbrati pravilne plošče in vrat na Orodja> Board in Orodja> Vrata meniji).

#include 
#include 
#include 
#include 
#include  MIDI_CREATE_INSTANCE (HardwareSerial, Serial, MidiOut); // ustvarite objekt MIDI, imenovan midiOut void setup () {Serial.begin (31250); // nastavitev serijska za MIDI. } void loop () {midiOut.sendControlChange (56,127,1); // pošlji MIDI CC - 56 = opomba, 127 = hitrost, 1 = zamuda kanala (1000); // počakajte 1 sekundo midiOut.sendProgramChange (12,1); // pošljite računalnik MIDI - 12 = vrednost, 1 = zakasnitev kanala (1000); // počakajte 1 sekundo. }

Ta koda bo poslala sporočilo CC, počakaj 1 sekundo, sporočilo PC-ja in nato počakaj 1 sekundo v nedogled. Če vse deluje pravilno, se na zaslonu MIDI prikaže sporočilo.

Če se nič ne zgodi, ne paničite! Poskusite odpraviti težave:

  • Prepričajte se, da so vse povezave pravilne
  • Preverite, ali je vrata MIDI pravilno ožičena - na zunanjih robovih naj bosta dva rezervna zatiča
  • Dvakrat preverite, ali je vezje pravilno
  • Preverite, ali je vezje povezano z vmesnikom USB-MIDI s kablom MIDI
  • Preverite, ali je kabel MIDI priključen na vhod na vašem USB-MIDI vmesniku
  • Prepričajte se, da ima Arduino moč
  • Namestite ustrezen gonilnik za vmesnik USB-MIDI

Če ste še vedno Če imate težave, bi bilo morda vredno preveriti svojo tablo. Poceni deske so včasih lahko zelo nedosledne in kakovostne - to se mi je zgodilo med delom na tem projektu.

Testiranje gumbov

Zdaj je čas, da preizkusite, ali gumbi delujejo pravilno. Naložite naslednjo preskusno kodo. Za preizkušanje tega dela ni treba priključiti MIDI.

const int buttonOne = 6; // dodelite zatič gumba spremenljivki. tipka const intTwo = 7; // dodelite zatič gumba spremenljivi nastavitvi ničnosti () {Serial.begin (9600); // zaporedna nastavitev za besedilni pinMode (buttonOne, INPUT); // gumb za nastavitev kot vhodni pinMode (gumbTwo, INPUT); // gumb za nastavitev kot vhod. } void loop () {if (digitalRead (buttonOne) == HIGH) {// zakasnitev stanja gumba gumb (10); // programska oprema se odpove, če (digitalRead (buttonOne) == HIGH) {// ponovno preverite stanje gumba Serial.println ("Gumb ena deluje!"); // zamuda rezultata dnevnika (250); }} if (digitalRead (buttonTwo) == HIGH) {// zamuda stanja gumba (10); // programska oprema se odpravi, če (digitalRead (buttonTwo) == HIGH) {// ponovno preverite stanje gumba Serial.println ("Gumb Dva dela!"); // zamuda rezultata dnevnika (250); } } }

Zaženite to kodo (vendar naj bo kabel USB povezan) in odprite serijski monitor (Zgoraj desno> Serijski monitor). Ko pritisnete gumb, bi se prikazalo "Gumb ena deluje!" ali "Dva gumba!" odvisno od gumba, ki ste ga pritisnili.

Od tega primera je treba upoštevati še eno pomembno opombo - programska oprema se odpravlja. To je preprosta 10 milisekundna (ms) zamuda med preverjanjem gumba in ponovnim preverjanjem gumba. To povečuje natančnost pritiska na gumb in pomaga preprečiti hrup, ki sproži Arduino. Tega vam ni treba storiti, čeprav je priporočljivo.

Ustvarjanje krmilnika

Zdaj, ko je vse ožičeno in deluje, je čas, da sestavite celoten krmilnik.

Ta primer bo poslal vsako sporočilo CC za vsako pritisnjeno tipko. To uporabljam za nadzor Ableton Live 9.6 v OS X. Koda je podobna obema zgoraj navedenim preskusnim vzorcem.

#include 
#include 
#include 
#include 
#include const int buttonOne = 6; // dodelite zatič gumba spremenljivki. tipka const intTwo = 7; // dodelite zatič gumba spremenljivki MIDI_CREATE_INSTANCE (HardwareSerial, Serial, midiOut); // ustvarite objekt MIDI, imenovan midiOut void setup () {pinMode (buttonOne, INPUT); // gumb za nastavitev kot vhodni pinMode (gumbTwo, INPUT); // gumb za nastavitev kot vhodni serijski.begin (31250); // nastavite MIDI izhod. } void loop () {if (digitalRead (buttonOne) == HIGH) {// zakasnitev stanja gumba gumb (10); // programska oprema odkloni, če (digitalRead (buttonOne) == HIGH) {// ponovno preverite stanje gumba midiOut.sendControlChange (56,127,1); // pošlji MIDI CC - 56 = opomba, 127 = hitrost, 1 = zamuda kanala (250); }} if (digitalRead (buttonTwo) == HIGH) {// zamuda stanja gumba (10); // programska oprema se odpove, če (digitalRead (buttonTwo) == HIGH) {// ponovno preverite stanje gumba midiOut.sendControlChange (42,127,1); // pošlji MIDI CC - 42 = opomba, 127 = hitrost, 1 = zamuda kanala (250); } } }

Opomba - ne boste mogli uporabljati Serial.println () z MIDI izhodom.
Če želite poslati sporočilo na računalnik namesto CC, preprosto zamenjajte:

midiOut.sendControlChange (42.127,1);

Z:

midiOut.sendProgramChange (vrednost, kanal); 

V akciji

Spodaj je predstavljen kot regulator za Ableton Live (Najboljša DJ programska oprema za vsak proračun Najboljša DJ programska oprema za vsak proračunDobra programska oprema za mešanje lahko bistveno vpliva na vaše delovanje. Ne glede na to, ali uporabljate Mac, Windows ali Linux, je za vse ravni znanja in proračuna poskrbljeno, če želite začeti z DJ-jem. Preberi več ). Zgornje desno prikazuje merilnike zvoka, zgornja sredina pa dohodna midi sporočila (prek Monitor MIDI v OS X).

Ste naredili MIDI krmilnik?

Obstaja veliko praktičnih uporab za MIDI krmilnik po meri. Lahko bi zgradili veliko enoto, ki jo nadzira noga, ali eleganten krmilnik studia. Če vas zanima nakup, tukaj so najboljši USB MIDI krmilniki 9 najboljših MIDI krmilnikov za glasbenikeAli iščete krmilnik USB MIDI? Tu so najboljši MIDI krmilniki, ki jih lahko kupite zdaj, ne glede na proračun. Preberi več lahko kupiš.

Kreditna slika: Keith Gentry prek Shutterstock.com

Joe je diplomirani iz računalništva na Univerzi v Lincolnu v Veliki Britaniji. Je profesionalni razvijalec programske opreme, in ko ne leti z droni ali piše glasbe, ga je pogosto mogoče fotografirati ali ustvarjati videoposnetke.