Mundarija:

Wii Nunchuck sintezatori: 4 qadam
Wii Nunchuck sintezatori: 4 qadam

Video: Wii Nunchuck sintezatori: 4 qadam

Video: Wii Nunchuck sintezatori: 4 qadam
Video: Nunchuk module prototype 2024, Iyul
Anonim
Wii Nunchuck sintezatori
Wii Nunchuck sintezatori

Wii musiqa olami:

Men nihoyat musiqaga bo'lgan muhabbatimni so'nggi bir necha yil davomida to'plagan dasturiy tajribam bilan birlashtirishga qaror qildim. Maktabimda Tod Machoverning nutqini ko'rganimdan beri o'zimning asboblarimni yaratishga qiziqaman. Agar siz uning ishi bilan tanish bo'lmagan bo'lsangiz, unga Google -ni bering, chunki u bir necha yillardan buyon musiqa, texnologiya chegaralarini, shuningdek ularning kesishuvini (MIT media -laboratoriyalari, Rok -guruh, Gitara qahramoni va boshqalarni) bosib o'tadi.).

Men Nunchuk-ni Mozzi ovoz sintezi kutubxonasida ishlaydigan Arduino Uno-ga uladim, chunki ikkalasi ham Internetda yaxshi hujjatlashtirilgan. Osonlik uchun men Arduino -ga ulanadigan WiiChuck non -adapteridan foydalanayapman. Bu nisbatan sodda loyiha Nunchuk akselerometridan o'lchangan Pitch (YZ-Plane) ga qarab bir qator maydonlarni o'ynaydi. Joystikning Y qiymati maydon balandroq yoki yumshoq bo'lishi uchun daromad bilan xaritalanadi. Shuningdek, u Z tugmachasiga qarab akkordlarni o'zgartiradi va C tugmachasi bosilganda fazali modulyatsiya konvertini yoqadi. Keyin konvertning chastotasi Nunchukdan o'lchangan rulon yordamida o'zgartiriladi (rasm tugmachani buradi).

Resurslar:

  • 1 x Arduino Uno
  • 1 x Wii Nunchuck
  • 1 x WiiChuck adapteri
  • 1 x non paneli mos keladigan 3,5 mmli ayol stereo uyasi
  • 1 x 3,5 mm audio kabel
  • Har xil turdagi 1 ta karnay (Siz uni sinab ko'rish uchun avval signal signalini ulashingiz mumkin
  • 4-5 xil rangdagi simlar

Majburiy emas, lekin tavsiya etiladi:

  • 1 x 330 Ohm qarshilik
  • 1 x.1 uF kondansatör

1 -qadam: NunChuck -ni ulash

NunChuck -ni ulash
NunChuck -ni ulash
NunChuck -ni ulash
NunChuck -ni ulash
NunChuck -ni ulash
NunChuck -ni ulash

WiiChuck sinfini Arduino o'yin maydonchasidan nusxalash/joylashtirish. Bizga PWR va GND pinlari e'lon qilingan versiyasi kerak bo'ladi. Uni WiiChuck.h sifatida saqlang va uni loyihangiz bilan bir xil katalogda saqlang.

Endi quyidagilarni Arduino IDE -ga nusxalash/joylashtirish va yuklash.

#"Wire.h" ni qo'shing //#"WiiChuckClass.h" ni o'z ichiga oladi // ehtimol uning qolganlari uchun WiiChuck.h. #"WiiChuck.h" ni qo'shing WiiChuck chuck = WiiChuck ();

bo'sh o'rnatish () {

// nunchuck_init (); Serial.begin (115200); chuck.begin (); chuck.update (); //chuck.calibrateJoy (); }

void loop () {

kechikish (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 (",");

agar (chuck.buttonZ) {

Serial.print ("Z"); } boshqa {Serial.print ("-"); }

Serial.print (",");

// funksiya emas // agar (chuck.buttonC ()) {

if (chuck.buttonC) {Serial.print ("C"); } boshqa {Serial.print ("-"); }

Serial.println ();

}

Arduino-ni quvvat manbaidan uzing va WiiChuck adapterini Arduino-dagi analog pin 2-5 ga ulang.

Qayta quvvat manbaiga ulaning va Nunchuk qiymatlari Arduino -ga yuborilishini va Serial monitorda chop etilishini ta'minlang. Agar siz raqamlarda hech qanday o'zgarish ko'rmasangiz, ulanishlar yaxshi ekanligiga ishonch hosil qiling va siz Nunchuk ishlayapsiz. Men bir necha kun davomida Nunchuk simim ichkaridan uzilganini sezmasdan oldin dasturiy ta'minotni tuzatishga harakat qildim!

Keyinchalik, biz hamma narsani Mozziga bog'laymiz…

2 -qadam: Mozzi bilan tanishish

Mozzi bilan tanishish
Mozzi bilan tanishish

Birinchidan, siz Mozzi -ning so'nggi versiyasini yuklab olishingiz kerak. Ular xayr -ehsonlar bilan to'ldiriladi, shuning uchun agar siz o'zingizni xohlasangiz, xayriya qiling va kutubxonani yuklab oling. Siz uni Arduino IDE -dan eskiz> kutubxonalar> zip kutubxonasini qo'shish … ni tanlash orqali kutubxonalaringizga osongina qo'shishingiz mumkin.

Endi biz 3,5 mm eshitish vositasi ulagichini non paneli va Arduino -ga ulaymiz, shunda biz unga osonlikcha ulanishimiz mumkin (hozircha Nunchuk va adapterni ajratib qo'yishingiz mumkin).

  1. Qolganlarga joy ajratish uchun Jekni taxtaning o'ng pastki burchagiga ulang. Jekning kengligi 5 pinli bo'lishi kerak.
  2. O'rta qatorni o'tish simlari bilan erga ulang.
  3. Jekning eng yuqori qatorini yuqoridagi bo'sh qatorga ulang (rasmdagi 10 -qator). Bu audio signalni uzatuvchi sim.
  4. Digital Pin ~ 9 ni 10 -qatorga ulang.
  5. Arduino -dagi Ground -ni non panelidagi erga ulang.
  6. Rezistor va kondansatkichni ishlatishning hojati yo'q, lekin bunday qilmasangiz, baland ovozda chiyillashni sezishingiz mumkin. ~ 15 kHz dan yuqori chastotalarni yo'q qilish uchun past o'tkazgichli filtr vazifasini bajaradi.

Fayl> Misollar> Mozzi> Asosiy ma'lumotlar> Sinewave -ni tanlab Arduino IDE -da Mozzining to'lqinli eskizini oching. Bu, aslida, Mozzining "Salom dunyo" ga tengdir.

Eskizni yuklang va karnayni non paneliga ulang. Agar siz ovoz panelini hali ulagichga ulamagan bo'lsangiz, siz signal signalidan ham foydalanishingiz mumkin.

Agar siz karnaydan doimiy A4 (440Hz) signalini eshitmasangiz, barcha ulanishlar yaxshi ekanligiga ishonch hosil qiling va qaytadan urinib ko'ring.

Keyinchalik, biz Nunchukni Arduino -ga ulaymiz!

3 -qadam: Hammasini bir joyga to'plash

Hammasini bir joyga to'plash
Hammasini bir joyga to'plash

Endi biz to'lqin to'lqinlarining chastotasini o'zgartirish uchun Nunchuck -dan rul qiymatini ishlatamiz.

Arduino IDE -dan Fayl> Misollar> Mozzi> Sensorlar> Piezo chastotasini tanlang

Nunchuck bilan ishlash uchun biz ushbu kodga bir necha qator qo'shishimiz kerak bo'ladi. WiiChuck kutubxonasiga qo'shimcha qo'shing va chak deb nomlangan WiiChuck ob'ektini yarating. Siz PIEZO_PIN deklaratsiyasini sharhlashingiz yoki uni o'chirib tashlashingiz mumkin, chunki biz uni ishlatmaymiz.

#"WiiChuck. H" ni qo'shing

WiiChuck chuck = WiiChuck (); // const int PIEZO_PIN = 3; // piezo uchun analog kirish pinini o'rnating

Endi sozlashda biz quyidagilarni qo'shishimiz kerak bo'ladi:

chuck.begin (); chuck.update ();

va nihoyat, updateControl () da bir nechta narsani o'zgartirishimiz kerak bo'ladi:

void updateControl () {

chuck.update (); // oxirgi nunchuck ma'lumotlarini olish // piezoni o'qish // int piezo_value = mozziAnalogRead (PIEZO_PIN); // qiymati 0-1023 int piezo_value = map (Piezo_value belgilaydigan qatorni izohlang va ostiga quyidagilarni qo'shing:

void updateControl () {chuck.update (); // oxirgi nunchuck ma'lumotlarini olish // piezoni o'qish // int piezo_value = mozziAnalogRead (PIEZO_PIN); // qiymati 0-1023 // Bizga yuqoridagi satr kerak emas, lekin nima uchun rulonni bir xil diapazonda xaritaga kiritmaymiz? int piezo_value = xarita (chuck.readRoll (), -180, 180, 0 1023);

Kodni yuklang va chastota Nunchuck's Roll -ga mos kelishi kerak. Har xil chastota diapazonlarida xaritalashga harakat qiling. Agar siz quyida eskizda sezmagan bo'lsangiz, sensorning qiymati 3 ga ko'paytiriladi, shuning uchun biz hozirda 0 Gts dan 3000 Gts gacha ohanglar o'ynaymiz.

4 -qadam: Yakuniy teginishlar

Yakuniy teginishlar
Yakuniy teginishlar

Endi siz oldingi bosqichdan birlashtirgan kodning oxirgi versiyasini va Mozzining yana bir nechta misollarini yuklashga tayyormiz (Phase_Mod_Envelope va Control_Gain aniqrog'i). Hayotimni engillashtirish uchun men shuningdek pitches.h nomli faylni qo'shdim, u oddiy eslatma nomlari bilan chastota qiymatlarini aniqlaydi (ya'ni NOTE_A4).

Men Mozzi hujjatlarini o'qishni taklif qilaman, chunki kodning ko'p qismi Nunchuck kodidan tashqari misollardan olingan.

Mana mening Git omborimga havola. Mozzi kutubxonasidan tashqari barcha muhim fayllar o'z veb -saytidan olinishi kerak, shuning uchun u dolzarb. WiiMusic.inoni yuklab oling va uni qurilmangizga yuklang, shunda u qanday eshitiladi. Men o'zim o'zgartirayotgan parametrlar bilan o'ynashni taklif qilaman (xarita diapazonini o'zgartirish, sonlarni bo'lish/ko'paytirish va hokazo.), Shuning uchun men qidirayotgan ovozni topdim.

Ko'zgu

Men o'zimni tugatganga o'xshamayman. Bu men loyihadan yoki uning ovozidan qoniqmayman degani emas, lekin men barmoqlarimni yangi dunyoga tushgandek his qilyapman, men kashf qilishni davom ettirmoqchiman, shuning uchun davom etayotganimda bu loyihadan yangi filial qo'shaman. ishlamoq.

Shunga qaramay, bu mening mikrokontrollerlar olamiga qilgan birinchi haqiqiy sayohatim edi, shuning uchun men o'rganish tajribasi uchun juda minnatdorman. Men ishlagan yigirma soat mobaynida o'zim va oilamning har bir a'zosi uchun Rojdestvo g'oyalarini berdim. Men bu loyihada boshqa birov bilan ishlamaganimdan afsusdaman, chunki men bu yo'lda ko'p maslahat va ko'rsatmalarni ishlatgan bo'lardim. Biroq, men shaxsan o'z sinovlarim davomida ko'p narsalarni o'rgandim, shu jumladan, uch kun davomida sochimni oldirib, dasturiy ta'minot muammosini tuzatishga urinib ko'rdim (Nunchukdagi ichki sim uzilib qolgan).

Oldinga siljish uchun hali ko'p imkoniyatlar mavjud. Masalan, men Arduino -ni MIDI -kontrolator va minigarnituralar o'rtasida MIDI -interfeys turi sifatida ishlatishni xohlardim, chunki MIDI -ning parametrlarini o'zgartirish uchun juda ko'p (ovoz balandligi, uzilish, konvert chastotasi, pitch bend), modulyatsiya, vibrato, siz buni nomlaysiz). Bu ko'proq moslashuvchanlikni o'z ichiga oladi, shu jumladan parametrlarni tugmalar bilan almashtirish va C ++ qatoriga qattiq kodlanmagan akkordni ijro etish.

Tavsiya: