Skelbimas

Kaip muzikantas, surinkęs muzikos instrumentų ir triukšmo dėžių kolekciją, nuolankus Arduino yra puikus įrankis sukurti pasirinktinį MIDI valdiklį. Nors „Raspberry Pi“ galėjo paimti karūną už Daiktų internetas (IoT) Daiktų internetas: 10 naudingų produktų, kuriuos turite išbandyti 2016 mDaiktų internetas populiarėja 2016 m., Bet ką tai tiksliai reiškia? Kuo asmeniškai naudingas daiktų internetas? Štai keli naudingi produktai iliustruoti. Skaityti daugiau projektai, paprastas Arduino Uno (Kuo skiriasi Arduino rūšys? „Arduino“ pirkimo vadovas: kurią lentą turėtumėte gauti?Yra tiek daug įvairių „Arduino“ lentų, jums bus atleista už supainiojimą. Ką turėtumėte nusipirkti savo projektui? Padėkime mums su šiuo Arduino pirkimo vadovu! Skaityti daugiau ) turi daugiau nei pakankamai jėgų šiam projektui.

Pirmą kartą naudodamiesi Arduino? Nesijaudink, mes jau baigėme „Arduino“ vadovas pradedančiajam Darbo pradžia „Arduino“: vadovas pradedančiajam„Arduino“ yra atvirojo kodo elektronikos prototipų kūrimo platforma, pagrįsta lanksčia, lengvai naudojama aparatine ir programine įranga. Jis skirtas menininkams, dizaineriams, mėgėjams ir visiems, besidomintiems interaktyvių objektų ar aplinkos kūrimu.

instagram viewer
Skaityti daugiau perskaityti prieš pradėdami spręsti šį projektą.

„Arduino-Midi-Controller-Breadboard“

Kas yra MIDI?

MIDI reiškia skaitmeninę muzikos instrumentų sąsają. Jame aprašytas standartinis muzikos prietaisų bendravimo būdas. Jei turite elektroninę klaviatūrą, tikriausiai turite MIDI sąsają. Nors yra keletas techninių detalių, susijusių su MIDI įgyvendinimu, svarbu atsiminti, kad MIDI nėra garso įrašas! MIDI duomenys yra paprastas instrukcijų rinkinys (viena instrukcija vadinama „žinute“), kurią kitas įrenginys gali įgyvendinti, norėdamas sukurti skirtingus garsus ar valdymo parametrus.

MIDI palaiko 16 kanalų. Tai reiškia, kad kiekvienas laidas gali palaikyti 16 skirtingų prietaisų, tarpusavyje ryšį palaikančių. Prietaisai jungiami 5 kontaktų DIN laidu. DIN reiškia „Vokietijos standartizacijos institutą“ ir yra tiesiog kabelis su penkiais kaiščiais jungties viduje. Vietoj 5 kontaktų DIN dažnai naudojamas USB, taip pat gali būti naudojama USB-MIDI sąsaja.

MIDI-kabelis-vyr

Valdykite pokyčius ir programos pakeitimus

Yra du pagrindiniai MIDI pranešimų tipai: „Control Change“ ir „Program Change“.

„Control Change“ (CC) pranešimuose yra valdiklio numeris ir reikšmė nuo 0 iki 127. CC pranešimai dažnai naudojami norint pakeisti tokius parametrus kaip garsumas ar aukštis. Prietaisai, kurie priima MIDI, turėtų būti pateikiami kartu su vadovu, kuriame paaiškinama, kokie kanalai ir pranešimai nustatomi pagal numatytuosius nustatymus, ir kaip juos pakeisti (žinomas kaip MIDI atvaizdavimas).

Programos keitimo (PC) pranešimai yra paprastesni nei CC pranešimai. Kompiuterio pranešimai susideda iš vieno numerio ir yra naudojami norint pakeisti įrenginio iš anksto nustatytą rinkinį ar pataisą. Kompiuterio pranešimai kartais vadinami „paketo pakeitimu“. Panašiai kaip CC pranešimus, gamintojai turėtų pateikti dokumentą, kuriame nurodoma, kokius iš anksto nustatytus parametrus keičia tam tikras pranešimas.

Ko jums reikės

  • Arduino
  • 5 kontaktų DIN lizdas
  • 2 x 220 omų varžai
  • 2 x 10 k omų varžai
  • 2 x momentiniai jungikliai
  • Prikabinami laidai
  • Bandomoji Lenta
  • MIDI laidas
  • MIDI įrenginys arba USB sąsaja

Sukurkite planą

Šis projektas bus gana paprastas. Žinoma, galite pridėti daugiau mygtukų ar aparatūros, kad atitiktų jūsų poreikius. Bus tinkamas beveik bet kuris Arduino - šiam pavyzdžiui reikia tik trijų kaiščių. Šį projektą sudaro du mygtukai programai valdyti, MIDI prievadas duomenims siųsti ir įrenginys pranešimams priimti. Ši grandinė buvo pastatyta ant a Bandomoji Lenta Pradedančiųjų elektronika: 10 įgūdžių, kuriuos reikia žinotiDaugelis iš mūsų niekada net nelietė lituoklio, tačiau viską pasidaryti gali būti nepaprastai naudinga. Čia yra dešimt elementariausių „pasidaryk pats“ elektronikos įgūdžių, kurie padės pradėti. Skaityti daugiau tačiau čia galima perkelti į projekto dėžę ir lituotas jungtis, kad būtų tvirtas sprendimas.

Grandinės surinkimas

„Arduino-Midi-Controller-Circuit“

MIDI jungtis

MIDI-Pinout

Prijunkite MIDI lizdą taip:

  • MIDI 5 kontaktas prie Arduino perdavimo (TX) 1 per 220 omų varžą
  • MIDI 4 kontaktas prie Arduino + 5V per 220 omų varžą
  • MIDI 2 kaištis į Arduino žemę

Mygtukų jungimas

Mygtukai veikia keičiant pasipriešinimą, kurį „mato“ Arduino. Arduino kaištis eina per jungiklį tiesiai į žemę (MAŽAI) per 10 k varžą (rezistorius „nuleidžiamas“, užtikrinant, kad vertė išliks maža). Paspaudus mygtuką, grandinės matyta vertė pasikeičia į + 5v be rezistoriaus (AUKŠTAS). Arduino gali aptikti šį pokytį naudodamas „digitalRead“ (smeigtukas) komanda. Prijunkite mygtukus prie „Arduino“ skaitmeninio įvesties / išvesties (I / O) 6 ir 7 kaiščių. Prijunkite abu mygtukus:

  • Kairėje mygtuko pusėje iki + 5 V
  • Dešinė mygtuko pusė prie „Arduino Ground“ per 10k varžą
  • Dešinė mygtuko pusė prie „Arduino“ kaiščio (6 arba 7)

MIDI testavimas

Dabar, kai visa aparatinė įranga yra baigta, laikas ją išbandyti. Jums reikės USB-MIDI sąsajos (tai gali padaryti daugelis garso sąsajų) ir MIDI laido. MIDI prievadas, prijungtas prie lentos, siunčia duomenis, taigi jis yra išėjimas. Jūsų kompiuteris gauna duomenis, todėl jis yra įvestis. Šis projektas naudoja puikų Arduino MIDI biblioteka v4.2 pagal keturiasdešimt septynis efektus. Įdiegę biblioteką, galite ją įtraukti į savo kodą apsilankę Eskizas> Įtraukti biblioteką> MIDI.

Jums taip pat reikės programos gaunamiems MIDI duomenims stebėti:

  • MIDI monitorius skirtas OS X
  • MIDI-OX „Windows“
  • KMidimon skirtas „Linux“

Prijunkite Arduino Darbo su „Arduino“ pradiniu rinkiniu pradžia - tvarkyklių diegimas ir plokštės bei prievado nustatymasTaigi, jūs nusipirkote sau „Arduino“ pradinį rinkinį ir galbūt kai kuriuos kitus atsitiktinius įdomius komponentus - o kas dabar? Kaip iš tikrųjų pradedate programuoti šį „Arduino“ dalyką? Kaip jūs jį nustatote ... Skaityti daugiau į savo kompiuterį ir įkelkite šį bandymo kodą (nepamirškite iš dešinės pasirinkti tinkamą plokštę ir prievadą Įrankiai> Lenta ir Įrankiai> Prievadas meniu).

# įtraukti 
# įtraukti 
# įtraukti 
# įtraukti 
# įtraukti  MIDI_CREATE_INSTANCE („HardwareSerial“, „Serial“, „midiOut“); // sukurkite MIDI objektą, vadinamą midiOut void setup () {Serial.begin (31250); // MIDI sąrankos serija. } void loop () {midiOut.sendControlChange (56,127,1); // siųsti MIDI CC - 56 = užrašas, 127 = greitis, 1 = kanalo uždelsimas (1000); // palaukite 1 sekundę midiOut.sendProgramChange (12,1); // siųsti MIDI kompiuterį - 12 = reikšmė, 1 = kanalo uždelsimas (1000); // palauk 1 sekundę. }

Šis kodas atsiųs CC pranešimą, palaukite 1 sekundę, nusiųskite kompiuterio pranešimą, tada neribotą laiką palaukite 1 sekundę. Jei viskas veikia tinkamai, MIDI monitoriuje turėtumėte pamatyti pranešimą.

Jei nieko neatsitiks, nepanikuokite! Pabandykite pašalinti triktis:

  • Įsitikinkite, kad visos jungtys yra teisingos
  • Patikrinkite, ar tinkamai prijungtas MIDI prievadas - išoriniuose kraštuose turėtų būti 2 atsarginiai kaiščiai
  • Dar kartą patikrinkite, ar grandinė teisinga
  • Patikrinkite, ar grandinė yra prijungta prie USB-MIDI sąsajos MIDI laidu
  • Patikrinkite, ar jūsų MIDI laidas yra prijungtas prie įvestis jūsų USB-MIDI sąsajoje
  • Įsitikinkite, kad Arduino turi galią
  • Įdiekite tinkamą USB-MIDI sąsajos tvarkyklę

Jei esate vis tiek Turint problemų gali būti verta patikrinti savo lentą. Pigios lentos kartais gali būti labai nenuoseklios ir žemos kokybės - taip atsitiko man dirbant šį projektą.

Sagų tikrinimas

Dabar laikas išbandyti, ar mygtukai veikia tinkamai. Įkelkite šį bandymo kodą. Norint išbandyti šią dalį, MIDI nereikia prijungti.

const int buttonOne = 6; // priskirkite mygtuko kaištį kintamajam. const int buttonTwo = 7; // priskirkite mygtuko kaištį kintamos tuštumos sąrankai () {Serial.begin (9600); // teksto „pinMode“ sąrankos serija (buttonOne, INPUT); // sąrankos mygtukas kaip įvesties „pinMode“ (buttonTwo, INPUT); // sąrankos mygtukas kaip įvestis. } void loop () {if (digitalRead (buttonOne) == HIGH) {// patikrinti mygtuko būsenos atidėjimą (10); // programinės įrangos atmetimas, jei (digitalRead (buttonOne) == HIGH) {// dar kartą patikrinkite mygtuko būseną Serial.println ("Button One Works!"); // žurnalo rezultato uždelsimas (250); }} if (digitalRead (buttonTwo) == HIGH) {// pažymėkite mygtuko būsenos delsimą (10); // programinės įrangos atmetimas, jei (digitalRead (buttonTwo) == HIGH) {// dar kartą patikrinkite mygtuko būseną Serial.println ("Button Two Works!"); // žurnalo rezultato uždelsimas (250); } } }

Paleiskite šį kodą (bet laikykite USB kabelį prijungtą) ir atidarykite Serial Monitor (Viršuje dešinėje> Serijos monitorius). Kai paspausite mygtuką, turėtumėte pamatyti „Button One Works!“ arba „Mygtukas du darbai!“ priklausomai nuo mygtuko, kurį paspaudėte.

Iš šio pavyzdžio yra viena svarbi pastaba - programinės įrangos atmetimas. Tai yra paprastas 10 milisekundžių (ms) vėlavimas tarp mygtuko tikrinimo ir tada dar kartą mygtuko tikrinimo. Tai padidina mygtuko paspaudimo tikslumą ir padeda išvengti triukšmo, sukeliančio „Arduino“. Jums to nereikia daryti, nors tai yra rekomenduojama.

Valdiklio sukūrimas

Dabar, kai viskas yra laidinė ir veikia, laikas surinkti visą valdiklį.

Šis pavyzdys išsiųs skirtingą CC pranešimą kiekvienam paspaustam mygtukui. Aš tai naudoju „Ableton Live 9.6“ valdymui „OS X“. Kodas yra panašus į abu aukščiau pateiktus bandymo pavyzdžius.

# įtraukti 
# įtraukti 
# įtraukti 
# įtraukti 
# įtraukti const int buttonOne = 6; // priskirkite mygtuko kaištį kintamajam. const int buttonTwo = 7; // priskirkite mygtuko kaištį kintamajam MIDI_CREATE_INSTANCE („HardwareSerial“, „Serial“, „midiOut“); // sukurkite MIDI objektą, vadinamą midiOut void setup () {pinMode (buttonOne, INPUT); // sąrankos mygtukas kaip įvesties „pinMode“ (buttonTwo, INPUT); // sąrankos mygtukas kaip įvestis „Serial.begin“ (31250); // MIDI išvesties nustatymas. } void loop () {if (digitalRead (buttonOne) == HIGH) {// patikrinti mygtuko būsenos atidėjimą (10); // programinės įrangos atmetimas, jei (digitalRead (buttonOne) == HIGH) {// dar kartą patikrinkite mygtuko būseną midiOut.sendControlChange (56,127,1); // siųsti MIDI CC - 56 = užrašas, 127 = greitis, 1 = kanalo uždelsimas (250); }} if (digitalRead (buttonTwo) == HIGH) {// pažymėkite mygtuko būsenos delsimą (10); // programinės įrangos atmetimas, jei (digitalRead (buttonTwo) == HIGH) {// dar kartą patikrinkite mygtuko būseną midiOut.sendControlChange (42,127,1); // siųsti MIDI CC - 42 = užrašas, 127 = greitis, 1 = kanalo uždelsimas (250); } } }

Pastaba - negalėsite naudotis „Serial.println“ () su MIDI išvestimi.
Jei norite siųsti kompiuterio pranešimą, o ne CC, tiesiog pakeiskite:

„midiOut.sendControlChange“ (42,127,1);

Su:

midiOut.sendProgramChange (vertė, kanalas); 

Veiksme

Žemiau parodyta, kaip „Ableton Live“ (Geriausia DJ programinė įranga kiekvienam biudžetui Geriausia DJ programinė įranga kiekvienam biudžetuiGera maišymo programinė įranga gali pakeisti jūsų našumą. Nesvarbu, ar naudojatės „Mac“, „Windows“, ar „Linux“, visi įgūdžių ir biudžeto lygiai yra patenkinti, jei norite pradėti didžėjauti. Skaityti daugiau ). Viršuje dešinėje rodomi garso matuokliai, o viršutinėje viduryje - gaunami midi pranešimai (per MIDI monitorius OS X).

Ar jūs sukūrėte MIDI valdiklį?

Individualizuotam MIDI valdikliui yra daug praktinio panaudojimo galimybių. Galite pastatyti didžiulį pėdomis valdomą įrenginį arba aptakų studijos valdiklį. Ir jei jus domina tokio įsigijimas, čia yra geriausi USB MIDI valdikliai 9 geriausi USB MIDI valdikliai muzikantamsIeškote USB MIDI valdiklio? Čia yra geriausi MIDI valdikliai, kuriuos galite įsigyti dabar, nepriklausomai nuo biudžeto. Skaityti daugiau gali nusipirkti.

Vaizdo kreditas: Keith Gentry per Shutterstock.com

Džo yra baigusi kompiuterių mokslą Linkolno universitete, JK. Jis yra profesionalus programinės įrangos kūrėjas, o kai jis neskraido dronais ar nerašo muzikos, jį dažnai galima rasti fotografuojant ar kuriant vaizdo įrašus.