Mündəricat:
- Addım 1: NunChuck'ınızı bağlayın
- Addım 2: Mozzi ilə tanış olun
- Addım 3: Hamısını bir araya gətirmək
- Addım 4: Son toxunuşlar
Video: Wii Nunchuck Sintezatoru: 4 addım
2024 Müəllif: John Day | [email protected]. Son dəyişdirildi: 2024-01-30 07:44
World of Wii Music:
Nəhayət musiqi sevgimi son bir neçə il ərzində qazandığım proqramlaşdırma təcrübəsi ilə birləşdirmək qərarına gəldim. Məktəbdə Tod Machoverin bir çıxışını gördüyümdən bəri özümə məxsus bir alət yaratmaqla maraqlanıram. İşi ilə tanış deyilsinizsə, ona bir Google verin, çünki bir neçə ildir ki, musiqi, texnologiya və onların kəsişməsini (MIT media laboratoriyaları, Rock Band, Guitar Hero və s.)).
Nunchuck'ımı, hər ikisinin də yaxşı sənədləşdirilmiş istifadəsi səbəbiylə Mozzi səs sintezi kitabxanasında çalışan bir Arduino Uno ilə bağladım. Asanlıq üçün, Arduinoya birbaşa qoşulan WiiChuck çörək bağı adapterindən istifadə edirəm. Bu nisbətən sadə bir layihə, Nunchuck-ın akselerometrindən ölçülmüş Pitch-ə (YZ-Plane) bağlı olaraq bir sıra meydançalar oynayır. Joystickin Y dəyəri, meydançanı daha yüksək və ya yumşaq etmək üçün qazancla müqayisə olunur. Z düyməsinə bağlı olaraq akkordları da dəyişir və C-düyməsinə basıldıqda faz modulyasiya zərfini açır. Daha sonra zərfin tezliyi Nunchuck -dan ölçülən Roll ilə dəyişdirilir (şəkil düyməni çevirir).
Resurslar:
- 1 x Arduino Uno
- 1 x Wii Nunchuck
- 1 x WiiChuck Adapteri
- 1 x çörək taxtasına uyğun 3,5 mm qadın stereo jak
- 1 x 3,5 mm səs kabeli
- 1 x bir növ dinamik (Bunu sınamaq üçün əvvəlcə bir siqnalı bağlaya bilərsiniz
- 4-5 müxtəlif rəngli tellər
İsteğe bağlı, lakin tövsiyə olunur:
- 1 x 330 Ohm müqavimət
- 1 x.1 uF kondansatör
Addım 1: NunChuck'ınızı bağlayın
WiiChuck sinifini Arduino Oyun Meydançasından kopyalayın/yapışdırın. PWR və GND pinlərinin elanı olan versiyaya ehtiyacımız olacaq. WiiChuck.h olaraq qeyd edin və layihənizlə eyni qovluqda saxlayın.
İndi aşağıdakıları Arduino IDE -ə kopyalayın/yapışdırın və yükləyin.
#"Wire.h" daxil edin //#"WiiChuckClass.h" daxil edin // çox güman ki, qalanlarımız üçün onun WiiChuck.h. #"WiiChuck.h" daxil edin WiiChuck chuck = WiiChuck ();
boş quraşdırma () {
// nunchuck_init (); Serial.begin (115200); chuck.begin (); chuck.update (); //chuck.calibrateJoy (); }
boşluq döngəsi () {
gecikmə (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 (",");
əgər (chuck.buttonZ) {
Serial.print ("Z"); } başqa {Serial.print ("-"); }
Serial.print (",");
// funksiya deyil // əgər (chuck.buttonC ()) {
if (chuck.buttonC) {Serial.print ("C"); } başqa {Serial.print ("-"); }
Serial.println ();
}
Arduino-nu elektrikdən ayırın və WiiChuck adapterinizi Arduino-dakı Analog Pins 2-5-ə qoşun.
Yenidən gücə qoşulun və Nunchuck dəyərlərinin Arduino -ya göndərildiyini və Serial Monitorda çap olunmasını təmin edin. Nömrələrdə heç bir dəyişiklik görmürsənsə, əlaqələrinizin yaxşı olduğundan və Nunchuck -un işlədiyindən əmin olun. Nunchuck telimin daxildən qırıldığını anlamaqdan əvvəl bir neçə gün proqram təminatını düzəltməyə çalışdım!
Sonra hər şeyi Mozziyə bağlayacağıq…
Addım 2: Mozzi ilə tanış olun
Əvvəlcə Mozzinin son versiyasını yükləməlisiniz. Bağışlardan qaynaqlanırlar, buna görə özünüzü meylli hiss edirsinizsə və kitabxananı yükləyin. Arduino IDE -dən Sketch> Kitabxanalar> ZIP Kitabxana əlavə et… seçərək kitabxanalarınıza asanlıqla əlavə edə bilərsiniz.
İndi 3,5 mm qulaqlıq yuvasını çörək taxtasına və Arduino -ya bağlayacağıq ki, sonra asanlıqla qoşula bilək (Nunchuck və adapteri indiyə qədər ayıra bilərsiniz).
- Qalanları üçün yer açmaq üçün Jack -ini lövhənin sağ alt küncünə bağlayın. Krikonun eni 5 sancaq olmalıdır.
- Orta cərgəni yerə tullanan bir tel ilə bağlayın.
- Krikonun ən üst sırasını yuxarıdakı boş bir cərgəyə bağlayın (şəkildəki 10 -cu sıra). Bu səs siqnalını daşıyan teldir.
- Digital Pin ~ 9 -u 10 -cu sıraya qoşun.
- Arduino'nuzdakı Ground'u çörək taxtasındakı yer relsinə qoşun.
- Rezistoru və kondansatörü hələ istifadə etməyinizə ehtiyac yoxdur, amma istifadə etməsəniz yüksək bir cızıq görə bilərsiniz. ~ 15 kHz -dən yuxarı olan tezlikləri aradan qaldırmaq üçün aşağı keçid filtri rolunu oynayır.
Fayl> Nümunələr> Mozzi> Əsaslar> Sinewave seçərək Arduino IDE -də Mozzinin Sinewave eskizini açın. Bu, əslində Mozzinin "Hello World" ə bərabərdir.
Eskizi yükləyin və çörək taxtasına bir dinamik qoşun. Çörək taxtasını hələ audio jakına bağlamamısınızsa, səs siqnalı da istifadə edə bilərsiniz.
Dinamikdən A4 (440Hz) sabit bir səs eşitmirsinizsə, bütün əlaqələrinizin yaxşı olduğundan əmin olun və yenidən cəhd edin.
Sonra, Nunchuck -ı Arduino -ya bağlayacağıq!
Addım 3: Hamısını bir araya gətirmək
İndi bir Sinewave tezliyini dəyişdirmək üçün Nunchuck -dan yuvarlanan dəyərdən istifadə edəcəyik.
Arduino IDE -dən Fayl> Nümunələr> Mozzi> Sensorlar> Piezo Tezliyi seçin
Nunchuck ilə işləməsini təmin etmək üçün bu koda bir neçə sətir əlavə etməliyik. WiiChuck kitabxanasına bir əlavə əlavə edin və chuck adlı bir WiiChuck obyekti yaradın. PIEZO_PIN bəyannaməsini şərh edə və ya istifadə etməyəcəyimiz üçün sadəcə silə bilərsiniz.
#"WiiChuck. H" daxil edin
WiiChuck ayağı = WiiChuck (); // const int PIEZO_PIN = 3; // piezo üçün analoq giriş pinini təyin edin
İndi quraşdırma zamanı aşağıdakıları əlavə etməliyik:
chuck.begin (); chuck.update ();
və nəhayət updateControl () da bir neçə şeyi dəyişdirməyimiz lazım olacaq:
etibarsız updateControl () {
chuck.update (); // son nunchuck məlumatlarını əldə edin // piezo oxuyun // int piezo_value = mozziAnalogRead (PIEZO_PIN); // dəyər 0-1023 int piezo_value = map (Piezo_value təyin edən xətti şərh edin və altına aşağıdakıları əlavə edin:
etibarsız updateControl () {chuck.update (); // son nunchuck məlumatlarını əldə edin // piezo oxuyun // int piezo_value = mozziAnalogRead (PIEZO_PIN); // dəyəri 0-1023-dir // Yuxarıdakı xəttə ehtiyacımız yoxdur, amma niyə rulonu eyni aralığa uyğunlaşdırmırıq? int piezo_value = xəritə (chuck.readRoll (), -180, 180, 0 1023);
Kodu yükləyin və tezlik Nunchuck Roll -a uyğun olmalıdır. Fərqli tezlik aralığına uyğunlaşdırmağa çalışın. Eskizdə daha sonra hiss etməmisinizsə, sensorun dəyəri 3 ilə vurulur, buna görə hazırda 0 Hz -dən 3000 Hz -ə qədər ton oynayırıq.
Addım 4: Son toxunuşlar
İndi əvvəlki addımdan topladığım kodun son versiyasını və daha bir neçə Mozzi nümunəsini yükləməyə hazırsınız (Phase_Mod_Envelope və Control_Gain daha doğrusu). Həyatımı asanlaşdırmaq üçün pitches.h adlı bir fayl da əlavə etdim ki, bu da adi qeyd adları ilə tezlik dəyərlərini təyin edir (yəni NOTE_A4).
Kodun çox hissəsi Nunchuck kodu istisna olmaqla nümunələrdən düz olduğundan Mozzi sənədlərini oxumağı təklif edirəm.
Budur Git depomun bağlantısı. Veb saytından əldə etməli olduğunuz Mozzi kitabxanası istisna olmaqla, bütün vacib sənədlər daxil edilmişdir, buna görə də aktualdır. WiiMusic.inonu yükləyin və nə kimi səsləndiyini eşitmək üçün cihazınıza yükləyin. Dəyişdirdiyim parametrlərlə oynamağı təklif edirəm (xəritə aralığını dəyişdirmək, ədədləri bölmək/çoxaltmaq və s.).
Refleksiya
Tamamilə bitmiş kimi hiss etmirəm. Bu, layihədən və ya səsdən razı qalmadığımı söyləmək deyil, ancaq ayaqlarımı araşdırmağa davam etmək istədiyim yeni bir dünyaya batırmış kimi hiss edirəm, buna görə də davam edərkən bu layihədən yeni bir filial əlavə edəcəyəm. işləmək.
Yenə də bu, mikro nəzarətçilər dünyasına ilk əsl səyahətim olduğuna görə öyrənmə təcrübəsi üçün çox minnətdaram. Bunun üzərində işlədiyim iyirmi saata yaxın vaxt mənə özüm və ailənin hər bir üzvü üçün Milad fikirləri verdi. Yol boyu çoxlu məsləhət və bələdçilikdən istifadə edə bildiyim üçün bu layihədə başqası ilə işləməməyimə bir qədər peşmanam. Bununla birlikdə, heç vaxt olmadığı bir proqram problemini düzəltmək üçün üç gün saçlarımı çəkərək sınamaqla çox şey öyrəndim (Nunchuckdakı daxili tel qırıldı).
Hələ irəliləmək üçün bir sıra imkanlar var. Məsələn, Arduino -dan MIDI nəzarətçi ilə qulaqlıq arasındakı MIDI qeydinin parametrlərini dəyişdirmək üçün bir MIDI interfeysi növü olaraq istifadə etmək istərdim, çünki seçmək üçün çox şey var (həcm, kəsmə, zərf tezliyi, addım bükülməsi), modulyasiya, vibrato, buna ad verirsiniz). Bu, düymələrlə parametrlərin dəyişdirilməsi və sadəcə C ++ serialına kodlaşdırılmamış bir akkordun çalınması da daxil olmaqla daha çox rahatlığa imkan verəcəkdir.
Tövsiyə:
MakeyMakey və Scratch ilə Su Sintezatoru: 6 Addım (Şəkillərlə)
MakeyMakey və Scratch ilə Su Sintezatoru: Müxtəlif materialları açarlara və ya düymələrə çevirmək və beləliklə kompüterdə hərəkətləri və ya səsləri tetiklemek üçün MakeyMakey -dən istifadə etmək maraqlı bir işdir. Hansı materialın zəif cərəyan impulsunu keçirdiyini öyrənir və onu icad edə və təcrübə edə bilərəm
Zəhmli Analoq Sintezatoru/Yalnız Diskret Komponentlərdən İstifadə Edən Orqan: 10 Addım (Şəkillərlə)
Zəhmli Analoq Sintezatoru/Orqan Yalnız Ayrı -ayrı Komponentlərdən istifadə edir: Analog sintezatorlar çox sərin, həm də hazırlamaq olduqca çətindir.Belə ki, əldə edə biləcəyi qədər sadə etmək istədim, buna görə də onun işləməsi asan başa düşülə bilər. bir neçə əsas alt sxemə ehtiyac var: rezisi olan sadə bir osilatör
Eurorack Sintezatoru Güc Təchizatı: 8 addım
Eurorack Synthesizer Güc Təchizatı: Eurorack sintezatoru üçün DIY enerji təchizatı hazırlamaq təlimatına xoş gəldiniz. Ehtiyatlı olun ki, enerji təchizatı dizaynı və Eurorack sintezatoru haqqında biliklərim heç bir şeydən üstün deyil. Məsləhətlərimi diqqətlə qəbul edin. Məsuliyyət daşımayacağam
Arduino MIDI Chiptune Sintezatoru: 7 addım (şəkillərlə)
Arduino MIDI Chiptune Synthesizer: Hər hansı bir müasir DAW proqramının rahatlığından MIDI üzərində idarə edə biləcəyiniz orijinal 8 bitlik chiptune sintezatoru ilə erkən kompüter oyun musiqisinin əyləncəsini yaşayın. 8910 proqramlaşdırıla bilən səs
Simsiz Wii Nunchuck Arduino: 7 addım
Simsiz Wii Nunchuck Nəzarətli Arduino: Arduino əsaslı hər hansı bir layihə üçün bir nəzarət sistemi olaraq tamamilə dəyişdirilməmiş simsiz Wii Nunchuck istifadə edin. Əlavə radio ötürücü/qəbuledici cütü və s. Bu təlimatlandırıcı Arduino mikrokontrolörü ilə müəyyən təcrübəyə malik deyildir. Radi