Turinys:

„Arduino MIDI“valdiklio kūrimas: 9 žingsniai (su nuotraukomis)
„Arduino MIDI“valdiklio kūrimas: 9 žingsniai (su nuotraukomis)

Video: „Arduino MIDI“valdiklio kūrimas: 9 žingsniai (su nuotraukomis)

Video: „Arduino MIDI“valdiklio kūrimas: 9 žingsniai (su nuotraukomis)
Video: TX81Z Arduino MIDI-контроллер/редактор 2024, Lapkritis
Anonim

Šis nurodymas iš pradžių buvo paskelbtas mano tinklaraštyje 2020 m. Birželio 28 d

Man patinka kurti daiktus, įskaitant elektroniką, ir aš visada norėjau ką nors sukurti naudodami „Arduino“.

Vienas iš labiausiai paplitusių pradedantiesiems sukurtų kūrinių buvo MIDI valdiklis. MIDI valdiklis yra bet kokia aparatinė įranga, siunčianti MIDI duomenis (muzikos instrumentų skaitmeninė sąsaja) į įrenginį, kad būtų paleisti garsai ir muzika.

Radau, kad daugelis diegimų yra sudėtingi, net ir pradedantiesiems. Buvo labai apmaudu, kai man reikėjo naudoti šimtus neįskaitomo kodo eilučių. Arba kai kuriais atvejais, be kitų pavyzdžių, man reikia lituoti rezistorių.

Projektas

Kurdamas savo „Arduino MIDI“valdiklį, norėjau sukurti malonų projektą, išlaikydamas mažiausią triukšmą. Kažkas gali sekti bet kuris pradedantysis. Norėdami tai padaryti, aš įkvėpiau „MIDI Fighter 3D“ir pašalinau visas neesmines funkcijas.

Bendra mano projekto kaina buvo mažesnė nei 30 USD, o medžiagų sąrašas buvo tikrai trumpas (filialų nuorodos):

  • „Arduino Leonardo“(arba klonas): nuo 10 iki 20 USD.
  • 16 x „Sanwa“mygtukai 24 mm (arba klonas): nuo 1 USD iki 2,50 USD už mygtuką.
  • Lituoklis
  • 22 AWG elektros laidas

„Arduino“lenta

Kai pradėjau šį projektą, radau, kad yra daugybė naujų „Arduino“modelių (neįskaitant šimtų suderinamų plokščių). Ir visi jie siūlo šiek tiek skirtingas galimybes.

Man reikėjo siųsti MIDI signalus į kompiuterį ir paprasčiausias būdas tai padaryti yra per USB. Bet kuri „Arduino“plokštė, pagrįsta ATmega32u4 mikrovaldikliu, turi įmontuotą USB ryšį.

Oficialios „Arduino“plokštės su vietiniu USB palaikymu yra „Arduino Due“, „Arduino Zero“, „Arduino Leonardo“, „Arduino Micro“. Šios plokštės turi integruotą USB palaikymą, o tai reiškia, kad jos gali veikti kaip USB MIDI įrenginys.

Aš nusprendžiau eiti su „Arduino Leonardo“klonu. Jis turi pakankamai įėjimų šiam projektui, taip pat apima antraštes, todėl lengviau prijungti/atjungti laidus.

Pirmieji žingsniai

Nors žingsnis po žingsnio paaiškinsiu, kaip įdiegiau šio projekto kodą, galite atsisiųsti galutinę versiją.

Norėdami įkelti kodą į lentą, turite naudoti „Arduino IDE“. Jie taip pat turi žiniatinklio redaktorių, kuris yra labai naudingas, tačiau jie turi ribotą kvotą per dieną, kurią galite sudaryti.

1 veiksmas: mirksi įmontuotas šviesos diodas

Juokinga, kaip „Hello World“aparatūros pasaulyje mirksi šviesos diodas.

Man buvo malonu nustebinti, kai sužinojau, kad „Arduino Leonardo“turi įmontuotą šviesos diodą, kurį galite mirksėti, kad patikrintumėte savo kodą. Tokiu būdu jums nereikia kurti išorinės grandinės ant duonos lentos su šviesos diodu ir rezistoriumi.

Kodas:

2 žingsnis: mirksi rankinio įvesties šviesos diodas

Kitas logiškas žingsnis buvo mirksėti tuo pačiu šviesos diodu, kai siunčiu signalą. Nuėmiau 2 „Dupont“laidų vieno galo plastikinį dangtelį, o kitą galą prijungiau prie plokštės:

  • Smeigtuko numeris 2: vienas iš skaitmeninių įėjimų (teigiamas). Tai gali būti bet koks skaitmeninis kaištis.
  • Smeigtukas GND: bet koks įžeminimo kaištis (neigiamas).

Dabar kiekvieną kartą, kai prisijungiu prie atvirų laidų galų, aš uždarau grandinę ir tokiu būdu galiu vykdyti kodą

Kiekvienas iš 20 „Leonardo“skaitmeninių kaiščių turi vidinį rezistorių (atjungtas pagal numatytuosius nustatymus), kurį galima įjungti naudojant INPUT_PULLUP. Atminkite, kad ištraukiamas įvestis reiškia, kad mygtuko būsena yra apversta:

  • HIGH, kai grandinė yra atidaryta (mygtukas NESpaudžiamas).
  • LOW, kai grandinė uždaryta (paspaudžiamas mygtukas).

Kodas:

3 veiksmas: įdiekite MIDIUSB biblioteką

Ši biblioteka leidžia „Arduino“plokštei su USB galimybėmis veikti kaip MIDI instrumentas per USB. Daugiau informacijos rasite oficialiuose dokumentuose.

Naudodami „Arduino IDE“, galite įdiegti papildomų „Arduino“bibliotekų naudodami bibliotekų tvarkyklę:

  1. Atidarykite IDE ir spustelėkite meniu „Eskizas“, tada „Įtraukti biblioteką“, tada „Tvarkyti bibliotekas“.
  2. Ieškokite MIDIUSB ir spustelėkite Įdiegti.
  3. Kai ji bus baigta, šalia MIDIUSB bibliotekos turėtų būti rodoma įdiegta žyma.
  4. Uždarykite bibliotekos tvarkyklę.

Dabar „Leonardo“gali siųsti MIDI pranešimus per USB! Tačiau pirmiausia reikia šiek tiek suprasti, kaip veikia MIDI.

Kaip veikia MIDI

„MIDI (muzikos instrumentų skaitmeninė sąsaja) yra standartinis ryšio protokolas, jungiantis muzikai leisti elektroninius muzikos instrumentus, kompiuterius ir susijusius garso įrenginius“. - Vikipedija

Be kitų nurodymų, jis tvarko pranešimus apie įvykius su natos aukščio ir grojimo greičio duomenimis

Šiame konkrečiame projekte įvestis iš 16 mygtukų siunčia skirtingus pranešimus per USB. Šiuos pranešimus galima konvertuoti į garsą kompiuteryje naudojant bet kokią tinkamą programinę įrangą, pvz., „GarageBand“ar „Ableton Live“.

MIDI pranešimo anatomija

Norėdami išsiųsti MIDI pranešimą, naudoju sendMIDI () metodą iš MIDIUSB bibliotekos, kurią įdiegiau 3 veiksme.

Šis metodas gali gauti 4 parametrus:

  • Įvykio tipas: jis gali būti 0x09, jei užrašas įjungtas (paleiskite užrašą), arba 0x08, kai pastaba išjungta (sustabdykite užrašo grojimą).
  • Pastaba Įjungta/išjungta: įvykio tipas kartu su MIDI kanalu (1-16). Aš naudoju tik 1 kanalą, todėl jis yra 0x90, jei užrašas įjungtas, arba 0x80, kai pastaba išjungta.
  • Pastabos numeris: kiekviena nata turi susietą skaitinį žingsnį (dažnių skalę).
  • Greitis: nuo 0 (be greičio) iki 127 (greičiausias).

4 veiksmas: MIDI pranešimo siuntimas

Įtraukiau MIDIUSB biblioteką ir vietoj to, kad mirksėtų įmontuotas šviesos diodas, išsiunčiau užrašą.

Kodas:

⚠ Svarbu: nuo šio žingsnio „Arduino“virsta MIDI USB valdikliu ir nustoja gauti kodą per USB.

Kai įstrigote tokioje padėtyje, kur „Arduino“nebegalima užprogramuoti, atlikite šiuos veiksmus:

  1. Laikykite nuspaudę suapvalintą „Arduino“plokštės atstatymo mygtuką.
  2. Arduino IDE spustelėkite Įkelti.
  3. Atleiskite atstatymo mygtuką.
  4. Atnaujintas kodas bus įkeltas į lentą.

5 veiksmas: MIDI pranešimo siuntimas iš kiekvieno mygtuko

Siunčiamas MIDI pranešimas iš kiekvieno mygtuko
Siunčiamas MIDI pranešimas iš kiekvieno mygtuko

Paskutinis žingsnis buvo susieti kiekvieną žingsnį iki mygtuko. 16 mygtukų aš apibrėžiau skalę nuo C2 iki E3b, tai yra žingsniai nuo 36 iki 51 iš eilės iš apačios į viršų ir iš kairės į dešinę. Peržiūrėkite šį failą iš „Arduino Tutorials“, kad sužinotumėte, koks žingsnis atitinka kiekvieną natą.

Aš naudoju skaitmeninius kaiščius nuo 2 iki 12 ir analoginius kaiščius (naudodamas juos kaip skaitmeninius) nuo A0 iki A4.

Ir taip atrodo galutinis kodas

6 veiksmas: kanalų ar bankų nustatymas (neprivaloma)

Kanalų ar bankų nustatymas (neprivaloma)
Kanalų ar bankų nustatymas (neprivaloma)

Jei norite pridėti daugiau mygtukų su galimybe perjungti kanalus ar bankus, kaip „MIDI Fighter 3D“(žr. Paveikslėlį), „Arduino Leonardo“turi dar keturis smeigtukus, kuriuos galite naudoti. „Arduino Leonardo“turi 20 skaitmeninių įvesties/išvesties kaiščių, iš kurių tik 16 naudojami natoms groti.

Šiais papildomais mygtukais galite atnaujinti kodo kintamąjį ir nusiųsti jo vertę kaip parametrą į „MidiUSB.sendMIDI“metodą:

gist.github.com/lean8086/ec8da7486ec3621f9f0b90542a06fcea

7 žingsnis: atvejis

Byla
Byla
Byla
Byla

Kad šis projektas būtų paprastas, aš buvau labai išrankus pasirinkdamas, kurias funkcijas įtraukti.

  • Tik mygtukai: 16 „Sanwa“tipo arkadinių mygtukų 4x4 tinklelyje. Jokių rankenėlių, slankiklių, faderių ar kitų analoginių įėjimų.
  • „Unibody“dėklas: korpusui ar „Arduino“plokštės laikymui nenaudokite varžtų, veržlių, varžtų ar klijų.
  • Kasdieniai įrankiai: Pavyzdžiui, aš lituodavau laidus, o ne pirkdavau tam tikrą vielos kirpimo mašiną, skirtą pasažo mygtukams.

„Unibody“dizainas

Vienas iš iššūkių, su kuriais susidūriau, buvo suprojektuoti pakankamai paprastą dėklą, kad jo nereikėtų surinkti ir būtų galima atspausdinti 3D vienu metu.

Kad nereikėtų naudoti varžtų ar klijų, turėjau suprojektuoti korpusą, kuris užtikrintų mažiausią prieigą prie elektronikos. Didžiausias gaubto įkvėpėjas buvo „Mac Mini“, kurio apačioje yra apskritimo formos skylė. Aš taip pat norėjau sukurti prisukamą dangtį, tačiau nusprendžiau leisti jam atsidaryti, kad būtų atskleista elektronika.

Atsisiųskite 3D spausdinamą dėklą (322 KB). Rekomenduojami nustatymai: PLA, 0,15 mm sluoksniai, 20% užpildas, palaikymo priemonės bent užapvalintai dugno angai, „Arduino“laikikliai ir „micro USB“.

Laikydami „Arduino“be varžtų

„Leonardo“turi 4 skyles, kad būtų galima įsukti plokštę į bet kurį tinkamą dėklą, tačiau mano idėja buvo palengvinti plokštės pridėjimą ir išėmimą iš dėklo.

„Thingiverse“buvo lengva rasti „Arduino“spaustuko laikiklį ir prireikė 5 pakartojimų, kad galėčiau integruoti tą laikiklį prie unibody dizaino. Sunkiausia buvo padaryti kojas, kad būtų išvengta mygtukų skylių ir kad „micro USB“būtų suderintas su korpusu centre.

8 žingsnis: Surinkimas

Asamblėja
Asamblėja
Asamblėja
Asamblėja
Asamblėja
Asamblėja

Įdėjęs visus mygtukus į vietą, lituodavau trumpus juodus laidus, jungiančius visas neigiamas mygtukų kojas tarp jų.

Tada lituodavau ilgus raudonus laidus iš kiekvienos teigiamos kojos, kad galėčiau prisijungti tiesiai prie plokštės.

Norėdami prijungti laidus prie „Arduino“, aš nupjoviau ir litavau kai kuriuos „Dupont“galus ir uždengiau juos termiškai susitraukiančiais vamzdeliais.

Aš prijungiau laidus prie plokštės tokia pačia tvarka kaip ir „MIDI Fighter“. Iš apačios į viršų ir iš kairės į dešinę

9 veiksmas: MIDI valdiklio naudojimas

Naudojant MIDI valdiklį
Naudojant MIDI valdiklį

Bet kokia muzikos programinė įranga (arba tinkama aparatinė įranga) gali būti naudojama MIDI priėmimui ir muzikai kurti. Labiausiai rekomenduojamos yra „Garage Band“, „Ableton Live“, ir aš žinau, kad yra daugybė programų, kurias galima įdiegti telefone.

Visi šie įrankiai yra naudingi įkeliant iš anksto nustatytus garsus pirštų būgnams, tačiau jie buvo sukurti didesniems tikslams. Pradedantiesiems šias priemones gali būti sunku nustatyti.

MIDI žiniatinklio naršyklėje

Norėdami kažką labiau suderinti su šiuo projektu ir jo paprastumu, sukūriau žiniatinklio įrankį, visiškai orientuotą į MIDI valdiklius.

Punchy: „WebMIDI“ir „WebAudio“diegimas MIDI valdikliams.

Jis gali skaityti MIDI pranešimus bet kurioje naršyklėje, palaikančioje „WebMIDI JavaScript“API. Tada jis leidžia garsus sintezatoriuje (naudojant „WebAudio“API) arba mėginių ėmiklį, įkeldamas pasirinktinius garsus iš bet kurio garso paketo.

Nustatykite „Ableton Live“

Norėdami, kad MIDI valdiklis veiktų su „Ableton Live“, atlikite šiuos paprastus veiksmus iš jų oficialios dokumentacijos.

Eikite į Nuostatos → Susieti MIDI ir įsitikinkite, kad įvestyje yra „Track“ir „Remote“, o išvestyje yra „Remote“ĮJUNGTA, kaip nurodyta vadove:

Rekomenduojamas: