Orodha ya maudhui:

Kuunda Kidhibiti cha MIDI cha Arduino: Hatua 9 (na Picha)
Kuunda Kidhibiti cha MIDI cha Arduino: Hatua 9 (na Picha)

Video: Kuunda Kidhibiti cha MIDI cha Arduino: Hatua 9 (na Picha)

Video: Kuunda Kidhibiti cha MIDI cha Arduino: Hatua 9 (na Picha)
Video: Pro Micro ATMEGA32U4 Arduino Pins and 5V, 3.3V Explained 2024, Novemba
Anonim

Mafundisho haya yalichapishwa mwanzoni kwenye blogi yangu mnamo Juni 28, 2020

Ninafurahiya kujenga vitu ambavyo ni pamoja na umeme, na siku zote nilitaka kujenga kitu kwa kutumia Arduino.

Moja ya ujenzi wa kawaida kwa Kompyuta niliyoyapata ni mtawala wa MIDI. Mdhibiti wa MIDI ni vifaa vyovyote vinavyotuma data ya MIDI (Interface Digital Instrument Digital) kwenye kifaa cha kuchochea sauti na kufanya muziki.

Niligundua kuwa utekelezaji mwingi ni ngumu, hata ile ambayo ni ya Kompyuta. Ilikuwa ya kusumbua sana kupata ninahitaji kutumia mamia ya mistari ya nambari isiyoweza kusomeka. Au kwamba ninahitaji kutengenezea kontena wakati mwingine, kati ya mifano mingine.

Mradi

Kwa kujenga Mdhibiti wangu wa Arduino MIDI mwenyewe, nia yangu ilikuwa kufanya mradi wa kufurahisha, kuweka kelele chini kabisa. Kitu ambacho mwanzoni anaweza kufuata. Ili kutimiza hilo, nilitumia MIDI Fighter 3D kama msukumo wa msingi na nikaondoa kila kitu kisicho muhimu.

Gharama ya jumla ya mradi wangu ilikuwa chini ya $ 30, na orodha ya vifaa ilikuwa fupi sana (viungo vya ushirika):

  • Arduino Leonardo (au Clone): kati ya $ 10 na $ 20.
  • Vifungo 16 x Sanwa 24mm (au Clone): kati ya $ 1 na $ 2.50 kwa kitufe.
  • Chuma cha kulehemu
  • Waya 22 wa Umeme wa AWG

Bodi ya Arduino

Nilipoanza mradi huu niligundua kuna rundo la modeli mpya za Arduino (bila kujumuisha mamia ya bodi zinazoendana). Na zote hutoa uwezo tofauti kidogo.

Nilihitaji kutuma ishara za MIDI kwa kompyuta na njia rahisi ya kufanya hivyo ni kupitia USB. Bodi yoyote ya Arduino inayotegemea mdhibiti mdogo wa ATmega32u4 imeunda mawasiliano ya USB.

Bodi rasmi za Arduino zilizo na msaada wa asili wa USB ni Arduino Ngenxa, Arduino Zero, Arduino Leonardo, Arduino Micro. Bodi hizi zimeunganisha msaada wa USB ambayo inamaanisha wanaweza kufanya kama kifaa cha USB MIDI.

Niliamua kwenda na mwamba wa Arduino Leonardo. Inayo pembejeo ya kutosha kwa mradi huu na pia inajumuisha vichwa, ambayo inafanya iwe rahisi kuziba / kufungua waya.

Hatua za Kwanza

Ingawa nitaelezea hatua kwa hatua jinsi nilivyotekeleza nambari ya mradi huu, unaweza kupakua toleo la mwisho.

Ili kupakia nambari kwenye ubao unahitaji kutumia Arduino IDE. Pia wana mhariri wa wavuti ambao ni muhimu sana lakini wana idadi ndogo kwa nyakati kwa siku ambayo unaweza kukusanya nambari.

Hatua ya 1: Kupepesa LED iliyojengwa

Inachekesha jinsi "Hello World" katika ulimwengu wa vifaa inapepesa LED.

Ilikuwa mshangao mzuri kwangu kugundua kuwa Arduino Leonardo ana LED iliyojengwa ambayo unaweza kupepesa kujaribu nambari yako. Kwa njia hiyo hauitaji kujenga mzunguko wa nje kwenye ubao wa mkate na LED na kontena.

Nambari:

Hatua ya 2: Kupepesa LED kwenye Ingizo la Mwongozo

Hatua inayofuata ya kimantiki ilikuwa kupepesa LED ile ile kila ninapotuma ishara. Niliondoa kifuniko cha plastiki cha ncha moja ya waya 2 za Dupont, na nikaunganisha ncha nyingine kwenye ubao:

  • Pini namba 2: Moja ya pembejeo za dijiti (chanya). Inaweza kuwa pini yoyote ya dijiti.
  • Pini GND: Pini yoyote ya ardhi (hasi).

Sasa, kila wakati ninapojiunga na ncha zilizo wazi za waya ninafunga mzunguko na kwa hivyo ninaweza kutekeleza nambari kwa matokeo

Kila moja ya pini 20 za dijiti kwenye Leonardo ina kontena la ndani (lililokatwa kwa chaguo-msingi) ambalo linaweza kuwezeshwa kwa kutumia INPUT_PULLUP. Kumbuka kuwa pembejeo ya kuvuta inamaanisha hali ya kifungo imegeuzwa:

  • JUU wakati mzunguko umefunguliwa (kitufe hakijashinikizwa).
  • CHINI wakati mzunguko umefungwa (kifungo kimeshinikizwa).

Nambari:

Hatua ya 3: Kusanikisha Maktaba ya MIDIUSB

Maktaba hii inaruhusu bodi ya Arduino yenye uwezo wa USB kutenda kama chombo cha MIDI juu ya USB. Angalia nyaraka rasmi kwa habari zaidi.

Kutumia IDE ya Arduino, unaweza kufunga Maktaba za Arduino za ziada ukitumia Meneja wa Maktaba:

  1. Fungua IDE na ubonyeze kwenye menyu ya "Mchoro", halafu "Jumuisha Maktaba", halafu "Dhibiti Maktaba".
  2. Tafuta MIDIUSB na ubonyeze Sakinisha.
  3. Mara tu inapomaliza, lebo iliyosanikishwa inapaswa kuonekana karibu na maktaba ya MIDIUSB.
  4. Funga Meneja wa Maktaba.

Sasa Leonardo anaweza kutuma ujumbe wa MIDI kupitia USB! Lakini kwanza, ufahamu fulani juu ya jinsi MIDI inavyofanya kazi inahitajika.

Jinsi MIDI inavyofanya kazi

"MIDI (Musical Instrument Digital Interface) ni itifaki ya kawaida ya mawasiliano inayounganisha vyombo vya muziki vya elektroniki, kompyuta, na vifaa vinavyohusiana vya sauti kwa kucheza muziki." - Wikipedia

Hushughulikia ujumbe wa hafla na data ya lami na kasi ya daftari iliyochezwa, kati ya maagizo mengine

Katika mradi huu maalum, pembejeo kutoka kwa vifungo 16 hutuma ujumbe tofauti kupitia USB. Ujumbe huu unaweza kubadilishwa kuwa sauti kwenye kompyuta ukitumia programu yoyote inayofaa kama GarageBand au Ableton Live.

Anatomy ya ujumbe wa MIDI

Ili kutuma ujumbe wa MIDI, nilitumia njia ya sendMIDI () kutoka kwa Maktaba ya MIDIUSB niliyoweka kwenye hatua ya 3.

Njia hii inaweza kupokea vigezo 4:

  • Aina ya tukio: Inaweza kuwa 0x09 kwa noti ya (cheza dokezo) au 0x08 kwa noti Zima (acha kucheza dokezo).
  • Kumbuka On / Off: Aina ya tukio pamoja na kituo cha MIDI (1-16). Ninatumia tu kituo 1 kwa hivyo ni 0x90 kwa noti ya On au 0x80 kwa noti Zima.
  • Nambari ya kumbuka: Kila nukuu ina kiwango cha nambari kinachohusiana (kiwango cha masafa).
  • Kasi: Kutoka 0 (hakuna kasi) hadi 127 (haraka zaidi).

Hatua ya 4: Kutuma Ujumbe wa MIDI

Nilijumuisha Maktaba ya MIDIUSB na badala ya kupepesa LED iliyojengwa, nilituma dokezo.

Nambari:

⚠ Muhimu: Kuanzia hatua hii na kuendelea Arduino inageuka kuwa Kidhibiti cha USB cha MIDI, na inaacha kupokea nambari kupitia USB.

Unapokwama katika nafasi ambayo Arduino haiwezi kusanidiwa tena, fuata hatua hizi:

  1. Shikilia kitufe cha kuweka upya kwenye bodi ya Arduino.
  2. Bonyeza Pakia kwenye Arduino IDE.
  3. Toa kitufe cha kuweka upya.
  4. Nambari iliyosasishwa itapakiwa kwenye bodi.

Hatua ya 5: Kutuma Ujumbe wa MIDI Kutoka kwa Kila Kitufe

Kutuma Ujumbe wa MIDI Kutoka kwa Kila Kitufe
Kutuma Ujumbe wa MIDI Kutoka kwa Kila Kitufe

Hatua ya mwisho ilikuwa kuchora kila uwanja kwa kitufe. Kwa vifungo 16, nilifafanua kiwango kutoka C2 hadi E3b, ambazo ni viwanja kutoka 36 hadi 51 kwa mlolongo kutoka chini hadi juu na kutoka kushoto kwenda kulia. Angalia faili hii kutoka kwa Mafunzo ya Arduino ili uone ni kiwango gani kinacholingana na kila maandishi.

Nilitumia pini za dijiti kutoka 2 hadi 12 na pini za analog (kuzitumia kama tarakimu) kutoka A0 hadi A4.

Na hivi ndivyo nambari ya mwisho inavyoonekana kama

Hatua ya 6: Kuweka Njia au Benki (hiari)

Kuweka Njia au Benki (hiari)
Kuweka Njia au Benki (hiari)

Ikiwa unataka kuongeza vifungo zaidi na uwezo wa kubadili njia au benki, kama katika MIDI Fighter 3D (angalia picha), Arduino Leonardo ana pini nne zaidi ambazo unaweza kutumia. Arduino Leonardo ana pini 20 za kuingiza / kutoa za dijiti, ambazo ni 16 tu zinazotumika kwa kucheza noti.

Unaweza kutumia vitufe hivyo vya ziada kusasisha kutofautisha kwa nambari, na kutuma thamani yake kama kigezo kwa njia ya MidiUSB.sendMIDI:

gist.github.com/lean8086/ec8da7486ec3621f9f0b90542a06fcea

Hatua ya 7: Kesi

Kesi hiyo
Kesi hiyo
Kesi hiyo
Kesi hiyo

Kuweka mradi huu rahisi, nilikuwa na chaguo kubwa juu ya kuchagua ni vipi vipengee vikijumuisha.

  • Vifungo tu: vifungo 16 vya Arcade-kama Arcade, kwenye gridi ya 4x4. Hakuna knobs, hakuna slider, hakuna faders, au pembejeo nyingine yoyote ya analog.
  • Kesi ya Unibody: Usitumie screws, karanga, bolts, au gundi kwa eneo au kushikilia bodi ya Arduino.
  • Zana za kila siku: Kwa mfano, niliuza waya badala ya kununua kipato maalum cha waya kwa vifungo vya uwanja.

Ubunifu wa Unibody

Moja ya changamoto nilizokabiliana nazo ilikuwa kubuni kesi rahisi ya kutosha kwamba haiitaji mkutano na inaweza kuchapishwa kwa 3d kwa kukimbia moja.

Ili kuepusha kutumia screws au gundi, nilihitaji kubuni kiambatisho ambacho kinatoa ufikiaji mdogo kabisa wa umeme. Msukumo wangu mkubwa kwa kizuizi kilikuwa Mac Mini, ambayo ina shimo lenye umbo la duara chini. Pia nilitaka kubuni kifuniko kinachoweza kusonga kwa hiyo, lakini niliamua kuifungua ili kufunua umeme.

Pakua kesi ya kuchapishwa 3d (322 KB). Mipangilio iliyopendekezwa: PLA, safu za 0.15mm, ujazo wa 20%, wasaidizi wa msaada angalau kwa shimo la chini lenye mviringo, wamiliki wa Arduino, na USB ndogo.

Kushikilia Arduino bila vis

Leonardo ana mashimo 4 ya kuifungia bodi hiyo katika kesi yoyote inayofaa, lakini wazo langu lilikuwa kuifanya iwe rahisi kuongeza na kuondoa bodi kutoka kwa kesi hiyo.

Kupata kishikilia cha video cha Arduino kwenye Thingiverse ilikuwa rahisi, na ilinichukua mila 5 kuunganisha mmiliki huyo kwa hamu ya unibody. Sehemu ngumu zaidi ilikuwa kutengeneza miguu yake kuzuia mashimo ya vifungo, na kufanya USB ndogo iwe katikati iliyokaa na kesi hiyo.

Hatua ya 8: Bunge

Bunge
Bunge
Bunge
Bunge
Bunge
Bunge

Baada ya kuingiza vifungo vyote mahali, niliuza waya mfupi mweusi akiunganisha miguu yote hasi ya vifungo kati yao.

Kisha nikauza waya nyekundu ndefu kutoka kila mguu mzuri ili kuungana moja kwa moja na bodi.

Ili kuunganisha waya na Arduino, nilikata na kuuza sehemu zingine za Dupont na kuzifunika na neli ya kupunguza joto.

Niliunganisha waya na bodi kufuatia mpangilio sawa na katika Mpiganaji wa MIDI. Kutoka chini hadi juu na kutoka kushoto kwenda kulia

Hatua ya 9: Kutumia Kidhibiti cha MIDI

Kutumia Kidhibiti cha MIDI
Kutumia Kidhibiti cha MIDI

Programu yoyote ya muziki (au vifaa vinavyofaa) inaweza kutumika kupokea MIDI na kufanya muziki. Zinazopendekezwa zaidi ni Garage Band, Ableton Live, na najua kuna programu nyingi za kusanikisha kwenye simu.

Zana hizo zote ni muhimu kwa kupakia sauti zilizofafanuliwa kwa kupiga vidole kwa vidole, lakini zilitengenezwa kwa madhumuni makubwa. Zana hizo zinaweza kuwa ngumu kwa Kompyuta kuanzisha.

MIDI kwenye Kivinjari cha Wavuti

Ili kufanya kitu kilingane zaidi na mradi huu na unyenyekevu wake, niliunda zana ya Wavuti iliyolenga kabisa watawala wa MIDI.

Punchy: WebMIDI na utekelezaji wa WebAudio kwa watawala wa MIDI.

Inaweza kusoma ujumbe wa MIDI kwenye kivinjari chochote kinachounga mkono API ya WebMIDI JavaScript. Halafu hucheza sauti katika synthesizer (kwa kutumia WebAudio API) au katika sampuli, ikipakia sauti za kawaida kutoka kwa kifurushi chochote cha sauti.

Sanidi Ableton Moja kwa Moja

Ili kumfanya Mdhibiti wa MIDI afanye kazi na Ableton Live, fuata hatua hizi rahisi kutoka kwa nyaraka zao rasmi.

Nenda kwa Mapendeleo → Unganisha MIDI na uhakikishe kuwa "Ingizo" lina "Kufuatilia" na "Kijijini" ILIYO na pato lina "Kijijini" ILIYO pamoja na kutajwa kwenye mwongozo:

Ilipendekeza: