Sadržaj:

Wii Nunchuck sintetizator: 4 koraka
Wii Nunchuck sintetizator: 4 koraka

Video: Wii Nunchuck sintetizator: 4 koraka

Video: Wii Nunchuck sintetizator: 4 koraka
Video: Wii Remote (Motion plus) + Nunchuk - китайская копия 2024, Juli
Anonim
Wii Nunchuck sintetizator
Wii Nunchuck sintetizator

Svijet Wii muzike:

Odlučio sam konačno spojiti svoju ljubav prema muzici s malo iskustva u programiranju koje sam stekao u posljednjih nekoliko godina. Zainteresovan sam za stvaranje vlastitog instrumenta otkad sam u školi vidio govor Toda Machovera. Ako niste upoznati s njegovim radom, dajte mu Google jer on već nekoliko godina pomiče granice muzike, tehnologije, kao i njihovo ukrštanje (medijske laboratorije MIT -a, Rock Band, Guitar Hero itd.).

Povezao sam svoj Nunchuck s Arduino Uno koji radi na Mozzijevoj biblioteci za sintezu zvuka zbog dobro dokumentirane upotrebe oba na mreži. Radi lakšeg korištenja, WiiChuck adapter za matičnu ploču koji se priključuje direktno na Arduino. Ovaj relativno jednostavan projekt reproducira niz tonova ovisno o visini (YZ-ravnina) mjerenoj s Nunchuckovog akcelerometra. Vrijednost Y džojstika je preslikana u pojačanje kako bi visina tona bila glasnija ili mekša. Također mijenja akorde ovisno o Z-gumbu i uključuje omotač fazne modulacije kada se pritisne C-dugme. Učestalost omotnice se zatim mijenja Roll -om izmjerenim iz Nunchucka (slika okreće gumb).

Resursi:

  • 1 x Arduino Uno
  • 1 x Wii Nunchuck
  • 1 x WiiChuck adapter
  • 1 x kompatibilna 3,5 mm ženska stereo utičnica za matičnu ploču
  • 1 x 3,5 mm audio kabl
  • 1x nekakav zvučnik (Prvo možete uključiti zujalicu da biste je testirali
  • 4-5 žica različitih boja

Opcionalno, ali preporučljivo:

  • 1 x 330 Ohm otpornik
  • 1 x.1 uF kondenzator

Korak 1: Uključite svoj NunChuck

Uključivanje vašeg NunChucka
Uključivanje vašeg NunChucka
Uključivanje vašeg NunChucka
Uključivanje vašeg NunChucka
Uključivanje vašeg NunChucka
Uključivanje vašeg NunChucka

Kopirajte/zalijepite klasu WiiChuck s Arduino igrališta. Trebat će nam verzija s deklaracijom PWR i GND pinova. Sačuvajte ga kao WiiChuck.h i držite ga u istom direktoriju kao i vaš projekat.

Sada kopirajte/zalijepite sljedeće u Arduino IDE i prenesite ga.

#include "Wire.h" //#include "WiiChuckClass.h" // najvjerovatnije njegov WiiChuck.h za nas ostale. #include "WiiChuck.h" WiiChuck chuck = WiiChuck ();

void setup () {

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

void loop () {{100} {101}

kašnjenje (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 (",");

if (chuck.buttonZ) {

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

Serial.print (",");

// nije funkcija // if (chuck.buttonC ()) {

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

Serial.println ();

}

Isključite svoj Arduino iz napajanja i spojite svoj WiiChuck adapter na analogne pinove 2-5 na vašem Arduinu.

Ponovo se spojite na napajanje i provjerite da li se vrijednosti Nunchucka šalju na vaš Arduino i ispisuju na serijski monitor. Ako ne vidite nikakvu promjenu u broju, provjerite jesu li veze dobre i funkcionirate li Nunchuck. Proveo sam nekoliko dana pokušavajući popraviti softver prije nego što sam shvatio da je žica mog Nunchucka interno prekinuta!

Zatim ćemo sve spojiti na Mozzija…

Korak 2: Upoznajte Mozzija

Upoznavanje Mozzija
Upoznavanje Mozzija

Prvo ćete morati preuzeti najnoviju verziju Mozzija. Pokreću ih donacije pa donirajte ako se osjećate tako skloni i preuzmite biblioteku. Možete ga lako dodati u svoje biblioteke odabirom Sketch> Libraries> Add. ZIP Library … iz Arduino IDE -a.

Sada ćemo spojiti priključak za slušalice od 3,5 mm na matičnu ploču i Arduino kako bismo se kasnije mogli lako povezati s njim (zasad možete isključiti Nunchuck i adapter).

  1. Priključite utičnicu u donji desni kut ploče kako biste napravili mjesta za ostale. Utičnica bi trebala biti široka 5 pinova.
  2. Spojite srednji red sa masom kratkospojnom žicom.
  3. Spojite gornji red utičnice sa praznim redom iznad (10. red na slici). Ovo je žica koja prenosi audio signal.
  4. Spojite i digitalni pin ~ 9 na red 10.
  5. Spojite uzemljenje na svom Arduinu na uzemljenu šinu na matičnoj ploči.
  6. Ne morate nužno koristiti otpornik i kondenzator, ali ako to ne učinite, možda ćete primijetiti snažan škripu. Djeluje kao niskopropusni filter za uklanjanje frekvencija iznad ~ 15 kHz.

Otvorite Mozzijevu Sinewave skicu u Arduino IDE -u odabirom Datoteka> Primjeri> Mozzi> Osnove> Sinewave. Ovo je u suštini Mozzijev ekvivalent "Hello World".

Otpremite skicu i priključite zvučnik na matičnu ploču. Možete koristiti i zujalicu ako još niste spojili matičnu ploču na audio priključak.

Ako iz zvučnika ne čujete konstantan A4 (440Hz), provjerite jesu li sve veze dobre i pokušajte ponovo.

Zatim ćemo povezati Nunchuck s Arduinom!

Korak 3: Sastavite sve zajedno

Spajajući sve zajedno
Spajajući sve zajedno

Sada ćemo koristiti vrijednost kotrljanja iz Nunchucka za promjenu frekvencije sinusnog vala.

Iz Arduino IDE -a odaberite Datoteka> Primjeri> Mozzi> Senzori> Piezo frekvencija

Morat ćemo dodati nekoliko redaka ovom kodu kako bismo mogli raditi s Nunchuckom. Dodajte uključivanje u WiiChuck biblioteku i napravite instancu WiiChuck objekta koji se zove chuck. Možete i komentirati deklaraciju PIEZO_PIN ili je jednostavno izbrisati jer je nećemo koristiti.

#include "WiiChuck. H"

WiiChuck chuck = WiiChuck (); // const int PIEZO_PIN = 3; // postavlja pin za analogni ulaz za piezo

Sada u postavljanju morat ćemo dodati sljedeće:

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

i na kraju ćemo morati promijeniti nekoliko stvari u updateControl ():

void updateControl () {

chuck.update (); // dobivamo najnovije nunchuck podatke // čitamo piezo // int piezo_value = mozziAnalogRead (PIEZO_PIN); // vrijednost je 0-1023 int piezo_value = map (Komentirajte red koji postavlja piezo_value i dodajte sljedeće ispod:

void updateControl () {chuck.update (); // dobivamo najnovije nunchuck podatke // čitamo piezo // int piezo_value = mozziAnalogRead (PIEZO_PIN); // vrijednost je 0-1023 // Ne treba nam gornja linija, ali zašto ne preslikati rolu u isti raspon? int piezo_value = map (chuck.readRoll (), -180, 180, 0 1023);

Otpremite kôd i frekvencija bi trebala odgovarati vašem Nunchuck's Roll -u. Pokušajte ga preslikati u različite frekvencijske raspone. Ako niste dolje na skici primijetili, vrijednost senzora se množi s 3, pa trenutno sviramo tonove od 0 Hz do oko 3000 Hz.

Korak 4: Završni dodiri

Završni dodiri
Završni dodiri

Sada ste spremni za postavljanje konačne verzije koda koju sam sastavio iz prethodnog koraka i još nekoliko Mozzijevih primjera (Phase_Mod_Envelope i Control_Gain da budemo tačni). Da bih si olakšao život uključio sam i datoteku pod nazivom pitches.h koja jednostavno definira vrijednosti frekvencije sa poznatim imenima nota (npr. NOTE_A4).

Predlažem da pročitate Mozzijevu dokumentaciju jer je veći dio koda izravno iz primjera, osim koda za Nunchuck.

Evo veze do mog Git spremišta. Uključene su sve važne datoteke osim Mozzijeve biblioteke koju biste trebali preuzeti s njihove web stranice kako bi bila ažurirana. Preuzmite WiiMusic.ino i postavite ga na svoj uređaj da biste čuli kako zvuči. Predlažem da se poigrate parametrima koje mijenjam (promijenite raspone mapa, podijelite/pomnožite brojeve itd.) Jer sam tako pronašao određeni zvuk koji sam tražio.

Refleksija

Ne osećam se kao da sam završio. To ne znači da nisam zadovoljan projektom ili zvukom koji proizvodi, ali osjećam se kao da sam samo umočio prste u novi svijet koji želim nastaviti istraživati pa ću u nastavku dodati novu granu iz ovog projekta raditi.

Ipak, s obzirom na to da je ovo moje prvo istinsko putovanje u svijet mikrokontrolera pa sam jako zahvalan na iskustvu učenja. Dvadesetak sati koje sam proveo radeći na tome dalo mi je božićne ideje za sebe i praktično svakog člana svoje porodice. Pomalo mi je žao što na ovom projektu nisam radio s nekim drugim jer sam mogao usput koristiti dosta savjeta i smjernica. Međutim, ja sam lično mnogo naučio kroz svoja suđenja, uključujući tri dana čupanja kose pokušavajući otkloniti softverski problem koji nikada nije postojao (unutrašnja žica u Nunchucku je pukla).

Još uvijek postoji niz mogućnosti za napredovanje. Na primjer, volio bih koristiti Arduino kao vrstu MIDI sučelja između MIDI kontrolera i vanjskih slušalica za promjenu parametara MIDI note jer postoji toliko mnogo njih za izabrati (glasnoća, granična vrijednost, frekvencija omotnice, visina tona, modulacija, vibrato, kako god. To bi omogućilo mnogo više fleksibilnosti, uključujući promjenu parametara pomoću dugmadi i jednostavno sviranje akorda koji nije hardkodiran u C ++ niz.

Preporučuje se: