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, Srpanj
Anonim
Wii Nunchuck sintetizator
Wii Nunchuck sintetizator

Svijet Wii glazbe:

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

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

Resursi:

  • 1 x Arduino Uno
  • 1 x Wii Nuchuck
  • 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 kabel
  • 1x nekakav zvučnik (Prvo možete uključiti zujalicu da biste je isprobali
  • 4-5 žica raznih boja

Izborno, ali preporučeno:

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

Korak 1: Uključite svoj NunChuck

Priključivanje vašeg NunChucka
Priključivanje vašeg NunChucka
Priključivanje vašeg NunChucka
Priključivanje vašeg NunChucka
Priključivanje vašeg NunChucka
Priključivanje vašeg NunChucka

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

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

#include "Wire.h" //#include "WiiChuckClass.h" // najvjerojatnije 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 brojevima, provjerite jesu li veze dobre i funkcionirate li Nunchuck. Nekoliko sam dana pokušavao 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 se donacijama pa donirajte ako se osjećate tako skloni i preuzmite knjižnicu. Možete ga jednostavno dodati u svoje knjižnice 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 Jack u donji desni kut ploče kako biste napravili mjesta za ostale. Utičnica bi trebala biti široka 5 igala.
  2. Spojite srednji red sa masom kratkospojnom žicom.
  3. Spojite gornji red utičnice s 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 s uzemljenjem na 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 biti Mozzijev ekvivalent "Hello World".

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

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

Zatim ćemo Nunchuck spojiti na Arduino!

Korak 3: Sve spojite

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 bi mogao raditi s Nunchuckom. Dodajte uključivanje u knjižnicu WiiChuck i instancirajte objekt WiiChuck koji se zove chuck. Također možete komentirati deklaraciju PIEZO_PIN ili je jednostavno izbrisati jer je nećemo koristiti.

#include "WiiChuck. H"

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

Sada u postavljanju trebat ćemo dodati sljedeće:

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

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

void updateControl () {

chuck.update (); // dobiti najnovije podatke o nunchucku // pročitati piezo // int piezo_value = mozziAnalogRead (PIEZO_PIN); // vrijednost je 0-1023 int piezo_value = map (Komentirajte redak koji postavlja piezo_value i ispod dodajte sljedeće:

void updateControl () {chuck.update (); // dobiti najnovije podatke o nunchucku // pročitati piezo // int piezo_value = mozziAnalogRead (PIEZO_PIN); // vrijednost je 0-1023 // Ne treba nam gornji redak, ali zašto ne bismo preslikali role na isti raspon? int piezo_value = karta (chuck.readRoll (), -180, 180, 0 1023);

Učitajte kôd i učestalost bi trebala odgovarati vašem Nunchuck's Roll -u. Pokušajte ga preslikati u različite frekvencijske raspone. Ako niste dolje u skici primijetili, vrijednost senzora pomnožena je 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 učitavanje konačne verzije koda koju sam sastavio iz prethodnog koraka i još nekoliko Mozzijevih primjera (Phase_Mod_Envelope i Control_Gain da budemo točni). Da bih si olakšao život uključio sam i datoteku pod nazivom pitches.h koja jednostavno definira vrijednosti frekvencije s 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 knjižnice koju biste trebali nabaviti s njihove web stranice kako bi bila ažurirana. Preuzmite WiiMusic.ino i prenesite ga na svoj uređaj da biste čuli kako zvuči. Predlažem da se poigrate parametrima koje mijenjam (promijenite raspone karata, podijelite/pomnožite brojeve itd.) Jer sam tako pronašao zvuk koji sam tražio.

Odraz

Ne osjeć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 dodati novu granu iz ovog projekta dok nastavljam 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čki svakog člana svoje obitelji. Pomalo mi je žao što na ovom projektu nisam radila s nekim drugim jer sam usput mogla koristiti dosta savjeta i smjernica. Međutim, osobno sam puno naučio kroz svoja ispitivanja, 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 izlaza za slušalice za promjenu parametara MIDI note jer postoji toliko mnogo njih za izabrati (glasnoća, granična vrijednost, frekvencija omotnice, nagib tona, modulation, vibrato, you name it). To bi omogućilo puno više fleksibilnosti, uključujući promjenu parametara pomoću gumba i jednostavno sviranje akorda koji nije teško kodiran u C ++ nizu.

Preporučeni: