Talaan ng mga Nilalaman:
- Hakbang 1: Pag-plug sa Iyong NunChuck
- Hakbang 2: Kilalanin ang Mozzi
- Hakbang 3: Pagsasama-sama sa Lahat ng Ito
- Hakbang 4: Mga Pangwakas na Pag-ugnay
Video: Wii Nunchuck Synthesizer: 4 Hakbang
2024 May -akda: John Day | [email protected]. Huling binago: 2024-01-30 13:11
Ang Mundo ng Wii Music:
Napagpasyahan kong pagsamahin sa wakas ang aking pagmamahal sa musika sa kaunting karanasan sa programa na nakamit ko sa nakaraang ilang taon. Naging interesado ako sa paglikha ng sarili kong instrumento mula pa noong nakita ko ang usapan ni Tod Machover sa aking paaralan. Kung hindi ka pamilyar sa kanyang trabaho bigyan siya ng isang Google, dahil tinutulak niya ang mga hangganan ng musika, teknolohiya, pati na rin ang kanilang intersect sa loob ng maraming taon ngayon (MIT media labs, Rock Band, Guitar Hero atbp.).
Ikinonekta ko ang aking Nunchuck sa isang Arduino Uno na tumatakbo sa Mozzi sound synthesis library dahil sa mahusay na dokumentadong paggamit ng parehong online. Para sa kadalian, gumagamit ako ng isang WiiChuck breadboard adapter na kung saan ay naka-plug papunta sa Arduino. Ang medyo simpleng proyekto na ito ay gumaganap ng isang serye ng mga pitch depende sa Pitch (YZ-Plane) na sinusukat mula sa accelerometer ng Nunchuck. Ang halaga ng Y ng joystick ay nai-map upang makamit ang pagtaas ng tunog o paglambot. Nagbabago rin ito ng mga chord depende sa Z-Button at binubuksan ang isang phase modulation na sobre kapag pinindot ang C-Button. Ang dalas ng sobre ay pagkatapos ay nabago gamit ang Roll na sinusukat mula sa Nunchuck (larawan na isang knob).
Mga mapagkukunan:
- 1 x Arduino Uno
- 1 x Wii Nunchuck
- 1 x WiiChuck Adapter
- 1 x breadboard na katugmang 3.5mm babaeng stereo jack
- 1 x 3.5mm audio cable
- 1 x speaker ng ilang uri (Maaari kang mag-plug sa isang buzzer sa una upang subukan ito
- 4-5 Mga wire na may iba't ibang kulay
Opsyonal ngunit inirerekomenda:
- 1 x 330 Ohm risistor
- 1 x.1 uF capacitor
Hakbang 1: Pag-plug sa Iyong NunChuck
Kopyahin / I-paste ang klase ng WiiChuck mula sa Arduino Playground. Kakailanganin namin ang bersyon sa deklarasyon ng PWR at GND pins. I-save ito bilang WiiChuck.h at panatilihin ito sa parehong direktoryo ng iyong proyekto.
Ngayon kopyahin / i-paste ang sumusunod sa Arduino IDE at i-upload ito.
# isama ang "Wire.h" // # isama ang "WiiChuckClass.h" // malamang ang WiiChuck.h nito para sa natitirang sa atin. # isama ang "WiiChuck.h" WiiChuck chuck = WiiChuck ();
walang bisa ang pag-setup () {
// nunchuck_init (); Serial.begin (115200); chuck.begin (); chuck.update (); //chuck.calibrateJoy (); }
void loop () {
pagkaantala (20); chuck.update ();
Serial.print (chuck.readPitch ());
Serial.print (","); Serial.print (chuck.readRoll ()); Serial.print (",");
Serial.print (chuck.readJoyX ());
Serial.print (","); Serial.print (chuck.readJoyY ()); Serial.print (",");
kung (chuck.buttonZ) {
Serial.print ("Z"); } iba pa {Serial.print ("-"); }
Serial.print (",");
// not a function // if (chuck.buttonC ()) {
kung (chuck.buttonC) {Serial.print ("C"); } iba pa {Serial.print ("-"); }
Serial.println ();
}
Idiskonekta ang iyong Arduino mula sa kapangyarihan at ikonekta ang iyong WiiChuck adapter sa Analog Pins 2-5 sa iyong Arduino.
Kumonekta muli sa kapangyarihan at tiyakin na ang mga halaga ng Nunchuck ay ipinapadala sa iyong Arduino at nai-print sa Serial Monitor. Kung hindi ka nakakakita ng anumang pagbabago sa mga numero tiyakin na ang iyong mga koneksyon ay mabuti, at ikaw ay Nunchuck ay gumagana. Gumugol ako ng ilang araw na pagsubok upang ayusin ang software bago napagtanto na nasira ang panloob na kawad ng aking Nunchuck!
Susunod, isasabit namin ang lahat sa Mozzi…
Hakbang 2: Kilalanin ang Mozzi
Una, kakailanganin mong i-download ang pinakabagong bersyon ng Mozzi. Ang mga ito ay pinalakas ng mga donasyon kaya magbigay ng donasyon kung sa palagay mo ay may hilig at i-download ang silid-aklatan. Maaari mong idagdag ito sa iyong mga aklatan nang madali sa pamamagitan ng pagpili ng Sketch> Mga Aklatan> Magdagdag ng. ZIP Library … mula sa Arduino IDE.
Ngayon ay ikonekta namin ang 3.5mm headphone jack sa breadboard at Arduino upang madali kaming makakonekta dito sa paglaon (maaari mong i-unplug ang Nunchuck at adapter sa ngayon).
- I-plug ang iyong Jack sa kanang kanang sulok ng board upang magkaroon ng puwang para sa natitira. Ang jack ay dapat na 5 pin ang lapad.
- Ikonekta ang gitnang hilera sa lupa gamit ang isang jumper wire.
- Ikonekta ang pinakamataas na hilera ng jack sa isang walang laman na hilera sa itaas (Hilera 10 sa larawan). Ito ang kawad na nagdadala ng audio signal.
- Ikonekta ang Digital Pin ~ 9 sa row 10 din.
- Ikonekta ang Ground sa iyong Arduino sa ground rail sa breadboard.
- Hindi mo kinakailangang kailanganing gamitin ang risistor at capacitor ngunit maaari mong mapansin ang isang mataas na tunog ng hagulgol kung hindi mo gagawin. Gumaganap ito bilang isang mababang pass filter upang maalis ang mga frequency sa itaas ~ 15 kHz.
Buksan ang sketch ng Mozzi's Sinewave sa Arduino IDE sa pamamagitan ng pagpili ng File> Mga Halimbawa> Mozzi> Mga Pangunahing Kaalaman> Sinewave. Ito ay mahalagang katumbas ng Mozzi ng "Hello World".
I-upload ang sketch at i-plug ang isang speaker sa breadboard. Maaari kang gumamit ng buzzer din kung hindi mo pa na-wire ang breadboard sa audio jack.
Kung hindi mo maririnig ang isang pare-pareho na A4 (440Hz) na nagmumula sa iyong speaker tinitiyak na ang lahat ng iyong mga koneksyon ay mabuti at subukang muli.
Susunod, ikonekta namin ang Nunchuck sa Arduino!
Hakbang 3: Pagsasama-sama sa Lahat ng Ito
Ngayon ay gagamitin namin ang halaga ng pag-roll mula sa Nunchuck upang baguhin ang dalas ng isang Sinewave.
Mula sa Arduino IDE Pumili ng File> Mga Halimbawa> Mozzi> Sensor> Piezo Frequency
Kakailanganin naming magdagdag ng ilang mga linya sa code na ito upang maisagawa ito sa Nunchuck. Magdagdag ng isang isama sa WiiChuck library at magsimula ng isang WiiChuck object na tinatawag na chuck. Maaari mo ring puna ang deklarasyon ng PIEZO_PIN o tanggalin lamang ito dahil hindi namin ito gagamitin.
# isama ang "WiiChuck. H"
WiiChuck chuck = WiiChuck (); // const int PIEZO_PIN = 3; // itakda ang analog input pin para sa piezo
Ngayon sa pag-set up, kakailanganin naming idagdag ang sumusunod:
chuck.begin (); chuck.update ();
at sa wakas kakailanganin nating baguhin ang ilang mga bagay sa updateControl ():
walang bisa ang updateControl () {
chuck.update (); // get pinakabagong data ng nunchuck // basahin ang piezo // int piezo_value = mozziAnalogRead (PIEZO_PIN); // halaga ay 0-1023 int piezo_value = mapa (I-comment ang linya na nagtatakda ng piezo_value at idagdag ang sumusunod sa ilalim:
void updateControl () {chuck.update (); // get pinakabagong data ng nunchuck // basahin ang piezo // int piezo_value = mozziAnalogRead (PIEZO_PIN); // halaga ay 0-1023 // Hindi namin kailangan ang linya sa itaas ngunit bakit hindi mapa ang roll sa parehong saklaw? int piezo_value = mapa (chuck.readRoll (), -180, 180, 0 1023);
I-upload ang code at ang dalas ay dapat na tumutugma sa iyong Nunchuck's Roll. Subukang i-mapa ito sa iba't ibang mga saklaw ng dalas. Kung hindi mo pa napansin sa ibaba sa sketch ang halaga mula sa sensor ay pinarami ng 3 kaya kasalukuyang nagpe-play kami ng mga tone mula sa 0 Hz hanggang sa 3000 Hz.
Hakbang 4: Mga Pangwakas na Pag-ugnay
Handa ka na ngayong i-upload ang pangwakas na bersyon ng code na aking na-hiwalay mula sa nakaraang hakbang at ilang higit pang mga halimbawa ng Mozzi (Phase_Mod_Envelope, at Control_Gain upang maging tumpak). Upang gawing mas madali ang aking buhay ay nagsama rin ako ng isang file na tinatawag na pitches.h na tumutukoy lamang sa mga halagang dalas na may pamilyar na mga pangalan ng tala (ibig sabihin NOTE_A4).
Iminumungkahi kong basahin ang dokumentasyon ng Mozzi ng mas maraming ng code ay tuwid mula sa mga halimbawa maliban sa code para sa Nunchuck.
Narito ang isang link sa aking Git repository. Ang lahat ng mahahalagang file ay kasama maliban sa Mozzi library na dapat mong makuha mula sa kanilang website kaya't napapanahon. I-download ang WiiMusic.ino at i-upload ito sa iyong aparato upang marinig kung ano ang hitsura nito. Iminumungkahi kong maglaro ka sa mga parameter na binabago ko (baguhin ang mga saklaw ng mapa, hatiin / i-multiply ang mga numero, atbp..) Na kung paano ko nahanap ang partikular na tunog na hinahanap ko.
Pagninilay
Hindi ko naramdaman na medyo tapos na ako. Hindi ito sinasabi na hindi ako nasiyahan sa proyekto o tunog na ginagawa nito, ngunit nararamdaman kong isubsob ko lamang ang aking mga daliri sa isang bagong mundo na nais kong patuloy na tuklasin kaya magdagdag ako ng isang bagong sangay mula sa proyektong ito sa pagpapatuloy ko magtrabaho.
Gayunpaman, ang nasabing ito ang aking unang tunay na paglalakbay sa mundo ng mga microcontroller kaya't labis akong nagpapasalamat sa karanasan sa pag-aaral. Ang dalawampu't higit pang mga oras na ginugol ko sa pagtatrabaho dito ay nagbigay sa akin ng mga ideya sa Pasko para sa aking sarili at halos bawat miyembro ng aking pamilya. Medyo pinagsisisihan ko ang hindi pagtatrabaho sa proyektong ito sa ibang tao dahil maaaring gumamit ako ng maraming payo at patnubay sa daan. Gayunpaman, personal kong natutunan ng marami sa pamamagitan ng aking mga pagsubok kabilang ang tatlong araw ng paghila ng aking buhok na sinusubukang i-debug ang isang problema sa software na wala roon (nasira ang isang panloob na kawad sa Nunchuck).
Mayroong pa ring isang bilang ng mga posibilidad na sumulong. Halimbawa, gugustuhin kong gamitin ang Arduino bilang isang uri ng interface ng MIDI sa pagitan ng isang MIDI controller at ang headphone upang mabago ang mga parameter ng tala ng MIDI dahil maraming pipiliin (dami, cutoff, dalas ng sobre, pitch bend, modulasyon, vibrato, pinangalanan mo ito). Papayagan nito ang mas maraming kakayahang umangkop kasama ang paglipat ng mga parameter gamit ang mga pindutan, at simpleng pag-play ng isang chord na hindi hardcoded sa isang C ++ array.
Inirerekumendang:
Oh Christmas Tree (Oh Tannenbaum) Sa MakeyMakey sa Synthesizer ng Tubig: 7 Hakbang
Oh Christmas Tree (Oh Tannenbaum) Kasama ang MakeyMakey on the Water Synthesizer: Ang kantang ito ng pasko ay masarap i-play kasama ang makeymakey sa seasynthesizer. Maaari mo itong i-play gamit ang siyam na tono. Para sa kapaligiran masarap magkaroon ng ilang ilaw ng pasko :-) Tangkilikin
Arpeggiating Synthesizer (Mosquito I): 6 na Hakbang
Arpeggiating Synthesizer (Mosquito I): Ang Mosquito I ay isang maliit na synthesizer ng arpeggiating na gumagamit ng isang Arduino Nano at ang library ng pagbubuo ng tunog ng Mozzi. Maaari itong maglaro ng higit sa dalawampu't 8-hakbang na mga pagkakasunud-sunod ngunit maaari kang magdagdag ng maraming mga pasadyang pagkakasunud-sunod ayon sa gusto mo. Medyo simple ang pag-set up at hindi
Keytar Hero (Paggamit ng isang Wii Guitar Controller Bilang isang Synthesizer): 7 Mga Hakbang (na may Mga Larawan)
Keytar Hero (Paggamit ng isang Wii Guitar Controller Bilang isang Synthesizer): Ang mga laro ng Guitar Hero ay ang lahat ng galit ng isang dosenang taon na ang nakakalipas, kaya't maraming mga lumang Controller ng gitara na nakahiga sa pag-iipon ng alikabok. Mayroon silang maraming mga pindutan, knobs, at pingga, kaya bakit hindi muling gamitin ang mga ito? Ang controlle ng gitara
Nunchuck Controlled Telescope Focuser: 6 Hakbang (na may Mga Larawan)
Nunchuck Controlled Telescope Focuser: Kung sinubukan mo bang gamitin ang iyong teleskopyo sa medyo mataas na pagpapalaki (> 150x) marahil ay napansin mo kung paano ang manu-manong pagsasaayos ng iyong pokus ng teleskopyo ay maaaring magresulta sa pagiging isang tunay na sakit sa leeg. Ito ay dahil kahit na ang mas mabagal na pagsasaayos sa iyo
Kinokontrol ng Wireless Wii Nunchuck Arduino: 7 Mga Hakbang
Kontroladong Arduino ng Wireless Wii Nunchuck: Gumamit ng isang ganap na hindi nabago na wireless Wii Nunchuck bilang isang control system para sa anumang proyekto na nakabatay sa Arduino. Walang idinagdag na radio transmitter / receiver na pares atbp. Ang itinuturo na ito ay ipinapalagay ang ilang karanasan sa Arduino microcontroller. Ang radi