Kazalo:

Izdelava MIDI krmilnika Arduino: 9 korakov (s slikami)
Izdelava MIDI krmilnika Arduino: 9 korakov (s slikami)

Video: Izdelava MIDI krmilnika Arduino: 9 korakov (s slikami)

Video: Izdelava MIDI krmilnika Arduino: 9 korakov (s slikami)
Video: Настройка 3D-принтера с помощью MKS sGen L v1.0 2024, November
Anonim

Ta navodila so bila prvotno objavljena na mojem blogu 28. junija 2020

Uživam v gradnji stvari, ki vključujejo elektroniko, in vedno sem želel z Arduinom zgraditi nekaj.

Ena najpogostejših različic za začetnike, ki sem jo našel, je bil MIDI krmilnik. MIDI krmilnik je vsaka strojna oprema, ki pošilja podatke MIDI (digitalni vmesnik za glasbeni instrument) na napravo, da sproži zvoke in ustvarja glasbo.

Ugotovil sem, da so številne izvedbe zapletene, tudi tiste za začetnike. Bilo je zelo frustrirajuće ugotoviti, da moram uporabiti na stotine vrstic nečitljive kode. Ali pa moram med drugimi primeri v nekaterih primerih spajkati upor.

Projekt

Z izgradnjo lastnega Arduino MIDI krmilnika sem nameraval ustvariti prijeten projekt, pri čemer je hrup čim manjši. Nekaj, kar bi lahko sledil vsak začetnik. Da bi to dosegel, sem kot osnovni navdih uporabil MIDI Fighter 3D in odstranil vse nebistvene funkcije.

Skupni stroški mojega projekta so bili pod 30 USD, seznam materialov pa je bil res kratek (partnerske povezave):

  • Arduino Leonardo (ali klon): med 10 in 20 USD.
  • 16 x gumbi Sanwa 24 mm (ali klon): med 1 USD in 2,50 USD na gumb.
  • Spajkalnik
  • 22 AWG električna žica

Plošča Arduino

Ko sem začel s tem projektom, sem ugotovil, da je kup novih modelov Arduino (ne vključuje na stotine združljivih plošč). In vsi ponujajo nekoliko drugačne zmogljivosti.

Moral sem poslati MIDI signale v računalnik, najpreprostejši način za to pa je prek USB -ja. Vsaka plošča Arduino, ki temelji na mikrokrmilniku ATmega32u4, ima vgrajeno komunikacijo USB.

Uradne Arduino plošče z domačo podporo USB so Arduino Due, Arduino Zero, Arduino Leonardo, Arduino Micro. Te plošče imajo vgrajeno podporo USB, kar pomeni, da lahko delujejo kot naprava USB MIDI.

Odločil sem se, da grem s klonom Arduina Leonarda. Za ta projekt ima dovolj vhodov in vključuje tudi glave, ki olajšajo priklop/odklop žic.

Prvi koraki

Čeprav bom korak za korakom razložil, kako sem uvedel kodo za ta projekt, lahko prenesete končno različico.

Za nalaganje kode na ploščo morate uporabiti Arduino IDE. Imajo tudi spletni urejevalnik, ki je zelo uporaben, vendar imajo omejeno dnevno kvoto, v kateri lahko sestavite kodo.

1. korak: Utripajo vgrajeno LED

Smešno je, kako "Hello World" v svetu strojne opreme utripa z LED.

Zame je bilo prijetno presenečenje, ko sem ugotovil, da ima Arduino Leonardo vgrajeno LED, ki jo lahko utripate, da preizkusite svojo kodo. Tako vam ni treba graditi zunanjega vezja na plošči z LED in uporom.

Koda:

2. korak: Utripanje LED na ročnem vnosu

Naslednji logični korak je bil utripanje iste LED, ko pošljem signal. Odstranil sem plastični pokrov enega konca dveh žic Dupont in drugi konec priključil na ploščo:

  • Pin številka 2: Eden od digitalnih vhodov (pozitiven). Lahko je kateri koli digitalni pin.
  • Pin GND: kateri koli ozemljitveni zatič (negativen).

Zdaj, vsakič, ko se pridružim izpostavljenim koncem žic, zaprem vezje in posledično lahko izvedem kodo

Vsak od 20 digitalnih zatičev na Leonardu ima notranji upor (privzeto odklopljen), ki ga je mogoče omogočiti z INPUT_PULLUP. Upoštevajte, da vlečni vnos pomeni, da je stanje gumba obrnjeno:

  • VISOKO, ko je vezje odprto (tipka NI pritisnjena).
  • NIZKA, ko je vezje zaprto (pritisnjen gumb).

Koda:

3. korak: Namestitev knjižnice MIDIUSB

Ta knjižnica omogoča, da plošča Arduino z zmogljivostmi USB deluje kot instrument MIDI prek USB -ja. Za več informacij preglejte uradno dokumentacijo.

Z uporabo Arduino IDE lahko z upraviteljem knjižnic namestite dodatne knjižnice Arduino:

  1. Odprite IDE in kliknite meni "Sketch", nato "Include Library", nato "Manage Libraries".
  2. Poiščite MIDIUSB in kliknite Namesti.
  3. Ko konča, se mora poleg knjižnice MIDIUSB pojaviti nameščena oznaka.
  4. Zaprite upravitelja knjižnice.

Zdaj lahko Leonardo pošilja MIDI sporočila prek USB -ja! Najprej pa je potreben vpogled v delovanje MIDI.

Kako deluje MIDI

"MIDI (digitalni vmesnik za glasbene instrumente) je standardni komunikacijski protokol, ki povezuje elektronske glasbene instrumente, računalnike in sorodne zvočne naprave za predvajanje glasbe." - Wikipedija

Med drugim obravnava sporočila o dogodkih s podatki o višini in hitrosti igrane note

V tem posebnem projektu vnos s 16 gumbi pošilja različna sporočila prek USB -ja. Ta sporočila lahko pretvorite v zvok v računalniku s katero koli primerno programsko opremo, kot sta GarageBand ali Ableton Live.

Anatomija sporočila MIDI

Za pošiljanje sporočila MIDI sem uporabil metodo sendMIDI () iz knjižnice MIDIUSB, ki sem jo namestil v 3. koraku.

Ta metoda lahko prejme 4 parametre:

  • Vrsta dogodka: Lahko je 0x09 za opombo Vklopljeno (predvajanje note) ali 0x08 za opombo Izklopljeno (ustavite predvajanje note).
  • Opomba Vklop/Izklop: Vrsta dogodka v kombinaciji s kanalom MIDI (1-16). Uporabljam samo kanal 1, tako da je 0x90 za opombo On ali 0x80 za opombo Off.
  • Opomba: Vsaka nota ima pripadajočo numerično višino (frekvenčno lestvico).
  • Hitrost: Od 0 (brez hitrosti) do 127 (najhitreje).

4. korak: Pošiljanje MIDI sporočila

Vključil sem knjižnico MIDIUSB in namesto da bi utripal vgrajeno LED, sem poslal opombo.

Koda:

⚠ Pomembno: Od tega koraka dalje se Arduino spremeni v MIDI krmilnik USB in preneha prejemati kodo prek USB -ja.

Ko se zataknete v položaju, kjer Arduina ni več mogoče programirati, sledite tem korakom:

  1. Držite zaokrožen gumb za ponastavitev na plošči Arduino.
  2. Kliknite Naloži v Arduino IDE.
  3. Spustite gumb za ponastavitev.
  4. Posodobljena koda bo naložena na tablo.

5. korak: Pošiljanje sporočila MIDI z vsakega gumba

Pošiljanje sporočila MIDI z vsakega gumba
Pošiljanje sporočila MIDI z vsakega gumba

Zadnji korak je bil preslikati vsak korak na gumb. Za 16 gumbov sem določil lestvico od C2 do E3b, ki so višine od 36 do 51 v zaporedju od spodaj navzgor in od leve proti desni. V datoteki Arduino Tutorials si oglejte, katera višina ustreza vsaki opombi.

Uporabil sem digitalne zatiče od 2 do 12 in analogne zatiče (ki jih uporabljam kot digitalce) od A0 do A4.

Takole izgleda končna koda

6. korak: Nastavitev kanalov ali bank (neobvezno)

Nastavitev kanalov ali bank (neobvezno)
Nastavitev kanalov ali bank (neobvezno)

Če želite dodati več gumbov z možnostjo preklapljanja kanalov ali bank, na primer v MIDI Fighter 3D (glej sliko), ima Arduino Leonardo še štiri zatiče, ki jih lahko uporabite. Arduino Leonardo ima 20 digitalnih vhodno/izhodnih zatičev, od katerih se jih le 16 uporablja za predvajanje not.

S temi dodatnimi gumbi lahko posodobite spremenljivko v kodi in njeno vrednost pošljete kot parameter metodi MidiUSB.sendMIDI:

gist.github.com/lean8086/ec8da7486ec3621f9f0b90542a06fcea

7. korak: Primer

Primer
Primer
Primer
Primer

Da bi bil ta projekt preprost, sem bil zelo izbirčen pri izbiri, katere funkcije vključujejo.

  • Samo gumbi: 16 arkadnih gumbov, podobnih Sanwi, v mreži 4x4. Brez gumbov, brez drsnikov, brez faderjev ali katerega koli drugega analognega vhoda.
  • Enotno ohišje: Ne uporabljajte vijakov, matic, vijakov ali lepila za ohišje ali držite ploščo Arduino.
  • Vsakodnevna orodja: Na primer, spajal sem žice, namesto da bi kupil posebno strižnik za arkadne gumbe.

Unibody Design

Eden od izzivov, s katerimi sem se soočal, je bilo oblikovanje dovolj preprostega ohišja, da ne potrebuje montaže in ga je mogoče natisniti 3D v enem samem zagonu.

Da bi se izognili uporabi vijakov ali lepila, sem moral oblikovati ohišje, ki omogoča najmanjši dostop do elektronike. Moj največji navdih za ohišje je bil Mac Mini, ki ima na dnu luknjo v obliki kroga. Za to sem želel oblikovati tudi vijačni pokrov, vendar sem se odločil, da ga odprem, da razkrije elektroniko.

Prenesite ohišje za 3D tiskanje (322 KB). Priporočene nastavitve: PLA, plasti 0,15 mm, 20% polnilo, podpirajo ojačevalce vsaj za luknjo z zaobljenim dnom, držala Arduino in mikro USB.

Držite Arduino brez vijakov

Leonardo ima 4 luknje za privijanje plošče v katero koli primerno ohišje, vendar je bila moja ideja olajšati dodajanje in odstranjevanje plošče iz ohišja.

Iskanje držala za sponke za Arduino na Thingiverse je bilo enostavno in potreboval sem 5 ponovitev, da sem to držalo vključil v oblikovanje unibodyja. Najtežje je bilo narediti noge, da bi se izognili luknjam za gumbe in da bi mikro USB postavili po sredini na ohišje.

8. korak: Sestavljanje

Skupščina
Skupščina
Skupščina
Skupščina
Skupščina
Skupščina

Ko sem vstavila vse gumbe, sem spajkala kratke črne žice, ki so med njimi združile vse negativne krake gumbov.

Nato sem z vsake pozitivne noge spajkal dolge rdeče žice za povezavo neposredno na ploščo.

Za priključitev žic na Arduino sem odrezal in spajkal nekaj koncev Dupont ter jih pokril s toplotno skrčljivo cevjo.

Žice sem priključil na ploščo po istem vrstnem redu kot v MIDI Fighterju. Od spodaj navzgor in od leve proti desni

9. korak: Uporaba krmilnika MIDI

Uporaba krmilnika MIDI
Uporaba krmilnika MIDI

Za sprejem MIDI in ustvarjanje glasbe lahko uporabite katero koli glasbeno programsko opremo (ali ustrezno strojno opremo). Najbolj priporočeni so Garage Band, Ableton Live in vem, da je na telefon kup aplikacij za namestitev.

Vsa ta orodja so uporabna za nalaganje vnaprej določenih zvokov za bobnanje s prsti, vendar so bila narejena za večje namene. Ta orodja so lahko začetnikom težka za nastavitev.

MIDI v spletnem brskalniku

Da bi bilo kaj bolj usklajeno s tem projektom in njegovo preprostostjo, sem zgradil spletno orodje, ki je popolnoma osredotočeno na MIDI krmilnike.

Punchy: implementacija WebMIDI in WebAudio za krmilnike MIDI.

Sporočila MIDI lahko bere v katerem koli brskalniku, ki podpira API za WebMIDI JavaScript. Nato predvaja zvoke v sintetizatorju (z uporabo API -ja WebAudio) ali v vzorčevalniku in naloži zvoke po meri iz katerega koli zvočnega paketa.

Nastavite Ableton Live

Če želite, da krmilnik MIDI deluje z Ableton Live, sledite tem preprostim korakom iz njihove uradne dokumentacije.

Pojdite na Nastavitve → Poveži MIDI in se prepričajte, da ima »Vhod« vklopljeno »Sled« in »Oddaljeno«, izhod pa ima »Daljinski« vklopljen, kot je omenjeno v priročniku:

Priporočena: