Isi kandungan:
- Langkah 1: Memasukkan NunChuck Anda
- Langkah 2: Mengenal Mozzi
- Langkah 3: Menggabungkan Semuanya
- Langkah 4: Sentuhan Akhir
Video: Wii Nunchuck Synthesizer: 4 Langkah
2024 Pengarang: John Day | [email protected]. Diubah suai terakhir: 2024-01-30 11:07
Dunia Muzik Wii:
Saya akhirnya memutuskan untuk menggabungkan minat saya terhadap muzik dengan sedikit pengalaman pengaturcaraan yang saya peroleh sejak beberapa tahun kebelakangan ini. Saya berminat untuk mencipta alat muzik saya sendiri sejak saya melihat ceramah oleh Tod Machover di sekolah saya. Sekiranya anda tidak terbiasa dengan karyanya, beri dia Google, kerana dia telah memasuki batas muzik, teknologi, dan persilangan mereka selama beberapa tahun sekarang (makmal media MIT, Rock Band, Guitar Hero dll.).).
Saya telah menghubungkan Nunchuck saya ke Arduino Uno yang berjalan di perpustakaan sintesis bunyi Mozzi kerana penggunaan kedua-duanya dalam talian dengan baik. Untuk kemudahan, saya menggunakan penyesuai papan roti WiiChuck yang dipasang terus ke Arduino. Projek yang agak sederhana ini memainkan siri nada bergantung pada Pitch (YZ-Plane) yang diukur dari accelerometer Nunchuck. Nilai Y joystick dipetakan ke keuntungan untuk membuat nada lebih kuat atau lebih lembut. Ia juga mengubah kord bergantung pada Z-Button dan menghidupkan sampul modulasi fasa apabila Butang C ditekan. Kekerapan sampul kemudian diubah dengan Roll yang diukur dari Nunchuck (gambar memutar tombol).
Sumber:
- 1 x Arduino Uno
- 1 x Wii Nunchuck
- 1 x Penyesuai WiiChuck
- 1 x bicu stereo wanita serasi dengan papan roti
- Kabel audio 1 x 3.5mm
- 1 x pembesar suara semacam (Anda boleh memasang buzzer pada awalnya untuk mengujinya
- 4-5 Wayar pelbagai warna
Pilihan tetapi disyorkan:
- Perintang 1 x 330 Ohm
- Kapasitor 1 x.1 uF
Langkah 1: Memasukkan NunChuck Anda
Salin / Tampal kelas WiiChuck dari Arduino Playground. Kami memerlukan versi dengan pengisytiharan pin PWR dan GND. Simpan sebagai WiiChuck.h dan simpan dalam direktori yang sama dengan projek anda.
Sekarang salin / tampal yang berikut ke dalam Arduino IDE dan muat naik.
#include "Wire.h" // # include "WiiChuckClass.h" // kemungkinan besar WiiChuck.h untuk kita semua. #masuk "WiiChuck.h" WiiChuck chuck = WiiChuck ();
batal persediaan () {
// nunchuck_init (); Serial.begin (115200); chuck.begin (); chuck.update (); //chuck.calibrateJoy (); }
gelung kosong () {
kelewatan (20); chuck.update ();
Serial.print (chuck.readPitch ());
Cetakan bersiri (","); Serial.print (chuck.readRoll ()); Cetakan bersiri (",");
Serial.print (chuck.readJoyX ());
Cetakan bersiri (","); Serial.print (chuck.readJoyY ()); Cetakan bersiri (",");
jika (chuck.buttonZ) {
Cetakan bersiri ("Z"); } lain {Serial.print ("-"); }
Cetakan bersiri (",");
// bukan fungsi // if (chuck.buttonC ()) {
jika (chuck.buttonC) {Serial.print ("C"); } lain {Serial.print ("-"); }
Bersiri.println ();
}
Putuskan sambungan Arduino anda dari kuasa dan sambungkan penyesuai WiiChuck anda ke Analog Pins 2-5 pada Arduino anda.
Sambung semula ke kuasa dan pastikan bahawa nilai Nunchuck dihantar ke Arduino anda dan dicetak ke Monitor Serial. Sekiranya anda tidak melihat perubahan nombor, pastikan hubungan anda baik, dan anda Nunchuck berfungsi. Saya menghabiskan beberapa hari untuk memperbaiki perisian sebelum menyedari wayar Nunchuck saya rosak secara dalaman!
Seterusnya, kami akan menghubungkan semuanya ke Mozzi…
Langkah 2: Mengenal Mozzi
Pertama, anda perlu memuat turun versi terbaru Mozzi. Mereka didorong oleh sumbangan, jadi dermakan jika anda merasa sangat berminat dan muat turun perpustakaan. Anda boleh menambahkannya ke perpustakaan anda dengan mudah dengan memilih Sketsa> Perpustakaan> Tambah. ZIP Library… dari Arduino IDE.
Sekarang kita akan menyambungkan bicu fon kepala 3.5mm ke papan roti dan Arduino supaya kita dapat menyambungnya dengan mudah kemudian (anda boleh mencabut Nunchuck dan penyesuai buat masa ini).
- Pasang Jack anda ke sudut kanan bawah papan untuk memberi ruang untuk yang lain. Jack hendaklah lebar 5 pin.
- Sambungkan barisan tengah ke tanah dengan wayar pelompat.
- Sambungkan baris paling atas jack ke baris kosong di atas (Baris 10 dalam gambar). Ini adalah wayar yang membawa isyarat audio.
- Sambungkan Pin Digital ~ 9 ke baris 10 juga.
- Sambungkan Ground di Arduino anda ke landasan tanah di papan roti.
- Anda tidak semestinya perlu menggunakan perintang dan kapasitor, tetapi anda mungkin akan merasakan bunyi pekik yang tinggi jika tidak. Ia berfungsi sebagai penapis lulus rendah untuk menghilangkan frekuensi di atas ~ 15 kHz.
Buka lakaran Moewi Sinewave di Arduino IDE dengan memilih Fail> Contoh> Mozzi> Asas> Sinewave. Ini pada dasarnya adalah setaraf Mozzi dengan "Hello World".
Muat naik lakaran dan pasangkan pembesar suara ke papan roti. Anda juga boleh menggunakan bel jika anda belum memasang papan roti ke bicu audio.
Sekiranya anda tidak mendengar bunyi berterusan A4 (440Hz) dari pembesar suara anda pastikan semua sambungan anda baik dan cuba lagi.
Seterusnya, kami akan menghubungkan Nunchuck ke Arduino!
Langkah 3: Menggabungkan Semuanya
Sekarang kita akan menggunakan nilai roll dari Nunchuck untuk mengubah frekuensi Sinewave.
Dari Arduino IDE Pilih Fail> Contoh> Mozzi> Sensor> Piezo Frequency
Kita perlu menambahkan beberapa baris pada kod ini agar dapat berfungsi dengan Nunchuck. Tambahkan termasuk ke perpustakaan WiiChuck dan buat objek WiiChuck yang disebut chuck. Anda juga boleh mengulas pernyataan PIEZO_PIN atau menghapusnya kerana kami tidak akan menggunakannya.
#sertakan "WiiChuck. H"
WiiChuck chuck = WiiChuck (); // const int PIEZO_PIN = 3; // tetapkan pin input analog untuk piezo
Sekarang dalam persediaan, kita perlu menambahkan yang berikut:
chuck.begin (); chuck.update ();
dan akhirnya kita perlu mengubah beberapa perkara dalam updateControl ():
batal kemas kiniControl () {
chuck.update (); // dapatkan data nunchuck terkini // baca piezo // int piezo_value = mozziAnalogRead (PIEZO_PIN); // nilai adalah 0-1023 int piezo_value = peta (Komen garis yang menetapkan piezo_value dan tambahkan yang berikut di bawahnya:
batal updateControl () {chuck.update (); // dapatkan data nunchuck terkini // baca piezo // int piezo_value = mozziAnalogRead (PIEZO_PIN); // nilai 0-1023 // Kami tidak memerlukan garis di atas tetapi mengapa tidak memetakan gulungan ke julat yang sama? int piezo_value = peta (chuck.readRoll (), -180, 180, 0 1023);
Muat naik kod dan frekuensi harus sesuai dengan Nunchuck's Roll anda. Cuba memetakannya ke julat frekuensi yang berbeza. Sekiranya anda tidak melihat lebih jauh di bawah dalam lakaran, nilai dari sensor didarabkan dengan 3 jadi kami sedang memainkan nada dari 0 Hz hingga sekitar 3000 Hz.
Langkah 4: Sentuhan Akhir
Sekarang anda sudah bersedia untuk memuat naik versi terakhir kod yang telah saya kumpulkan dari langkah sebelumnya dan beberapa lagi contoh Mozzi (Phase_Mod_Envelope, dan Control_Gain tepat). Untuk menjadikan hidup saya lebih mudah, saya juga memasukkan fail yang disebut pitches.h yang hanya menentukan nilai frekuensi dengan nama nota yang biasa (iaitu NOTE_A4).
Saya cadangkan membaca dokumentasi Mozzi kerana banyak kodnya langsung dari contoh kecuali kod untuk Nunchuck.
Berikut adalah pautan ke repositori Git saya. Semua fail penting disertakan kecuali untuk perpustakaan Mozzi yang harus anda dapatkan dari laman web mereka sehingga terkini. Muat turun WiiMusic.ino dan muat naik ke peranti anda untuk mendengar bunyinya. Saya cadangkan anda bermain-main dengan parameter yang saya ubah (ubah rentang peta, bahagi / darabkan nombor, dll.) Kerana itulah saya dapati suara tertentu yang saya cari.
Refleksi
Saya tidak berasa seperti saya sudah selesai. Itu bukan untuk mengatakan bahawa saya tidak berpuas hati dengan projek atau suara yang dihasilkannya, tetapi saya merasa seperti baru saja mencubit jari kaki saya ke dunia baru yang ingin saya terus meneroka sehingga saya akan menambah cabang baru dari projek ini semasa saya meneruskan bekerja.
Namun, yang dikatakan ini adalah perjalanan pertama saya yang benar ke dunia mikrokontroler jadi saya sangat bersyukur dengan pengalaman belajar. Dua puluh jam yang saya habiskan untuk mengusahakannya memberi saya idea Krismas untuk diri saya dan hampir setiap ahli keluarga saya. Saya agak menyesal kerana tidak mengerjakan projek ini dengan orang lain kerana saya boleh menggunakan banyak nasihat dan bimbingan sepanjang perjalanan. Namun, saya sendiri banyak belajar melalui percubaan saya termasuk tiga hari mencabut rambut saya untuk mencuba masalah perisian yang tidak pernah ada (wayar dalaman di Nunchuck telah rosak).
Masih terdapat beberapa kemungkinan untuk terus maju. Sebagai contoh, saya ingin menggunakan Arduino sebagai jenis antara muka MIDI di antara pengawal MIDI dan fon kepala untuk menukar parameter nota MIDI kerana terdapat banyak yang boleh dipilih (kelantangan, potongan, frekuensi sampul surat, selekoh nada, modulasi, vibrato, anda namakannya). Ini akan memungkinkan lebih banyak fleksibiliti termasuk menukar parameter dengan butang, dan hanya memainkan akord yang tidak dikodkan keras menjadi array C ++.
Disyorkan:
Oh Christmas Tree (Oh Tannenbaum) Bersama MakeyMakey on the Water Synthesizer: 7 Langkah
Oh Christmas Tree (Oh Tannenbaum) Bersama MakeyMakey on the Water Synthesizer: Lagu natal ini bagus untuk dimainkan dengan makeymakey di perintis air. Anda boleh memainkannya dengan sembilan nada. Untuk suasananya, anda dapat menikmati cahaya natal :-) Nikmati
Arpeggiating Synthesizer (Nyamuk I): 6 Langkah
Arpeggiating Synthesizer (Mosquito I): Mosquito I adalah synthesizer arpeggiating kecil yang menggunakan perpustakaan sintesis bunyi Arduino Nano dan Mozzi. Ia boleh memainkan lebih daripada dua puluh urutan 8 langkah tetapi anda boleh menambahkan seberapa banyak urutan tersuai yang anda mahukan. Agak mudah untuk menyediakan dan tidak
Selamat Hari Lahir di Water Synthesizer Dengan MakeyMakey dan Scratch: 5 Langkah
Happy Birthday on Water Synthesizer Dengan MakeyMakey dan Scratch: Daripada Bunga dan Nyanyian, anda boleh membina pemasangan ini sebagai kejutan besar untuk ulang tahun
Fokus Teleskop Terkawal Nunchuck: 6 Langkah (dengan Gambar)
Nunchuck Controlled Telescope Focuser: Sekiranya anda pernah mencuba menggunakan teleskop dengan pembesaran yang agak tinggi (> 150x), anda mungkin telah menyedari bagaimana menyesuaikan fokus teleskop secara manual boleh mengakibatkan rasa sakit di leher. Ini kerana penyesuaian yang lebih perlahan anda
Wireless Wii Nunchuck terkawal Arduino: 7 Langkah
Wireless Wii Nunchuck Controlled Arduino: Gunakan Wii tanpa wayar yang sepenuhnya diubah suai Nunchuck sebagai sistem kawalan untuk sebarang projek berasaskan Arduino. Tidak ada tambahan pasangan pemancar / penerima radio dan lain-lain. Arahan ini memerlukan beberapa pengalaman dengan mikrokontroler Arduino. Sinar