Cuprins:
- Pasul 1: conectarea la NunChuck
- Pasul 2: Cunoașterea Mozzi
- Pasul 3: Puneți totul împreună
- Pasul 4: Atingeri finale
Video: Sintetizator Wii Nunchuck: 4 pași
2024 Autor: John Day | [email protected]. Modificat ultima dată: 2024-01-30 11:41
Lumea muzicii Wii:
Am decis să combin în sfârșit dragostea mea pentru muzică cu puțina experiență de programare pe care am acumulat-o în ultimii ani. M-am interesat să creez un instrument propriu de când am văzut o discuție a lui Tod Machover la școala mea. Dacă nu sunteți familiarizați cu munca sa, oferiți-i un Google, deoarece el depășește limitele muzicii, tehnologiei, precum și intersectarea lor de câțiva ani (laboratoare media MIT, Rock Band, Guitar Hero etc.).).
Mi-am conectat Nunchuck la un Arduino Uno care rulează pe biblioteca de sinteză a sunetului Mozzi datorită utilizării bine documentate a ambelor online. Pentru ușurință, folosesc un adaptor WiiChuck pentru panouri care se conectează direct la Arduino. Acest proiect relativ simplu joacă o serie de pitchuri în funcție de pitch (YZ-Plane) măsurată de la accelerometrul Nunchuck. Valoarea Y a joystick-ului este mapată la câștig pentru a face tonul mai tare sau mai moale. De asemenea, modifică acordurile în funcție de butonul Z și pornește un plic de modulare de fază atunci când butonul C este apăsat. Frecvența plicului este apoi modificată cu rola măsurată de la Nunchuck (imaginea rotind un buton).
Resurse:
- 1 x Arduino Uno
- 1 x Wii Nunchuck
- 1 x adaptor WiiChuck
- 1 x mufă stereo femelă de 3,5 mm compatibilă
- 1 x cablu audio de 3,5 mm
- 1 x difuzor de un fel (puteți conecta la început un buzzer pentru a-l testa
- 4-5 fire de diferite culori
Opțional, dar recomandat:
- 1 rezistor de 330 Ohm
- 1 x.1 uF condensator
Pasul 1: conectarea la NunChuck
Copiați / lipiți clasa WiiChuck din Arduino Playground. Vom avea nevoie de versiunea cu declarația pinilor PWR și GND. Salvați-l ca WiiChuck.h și păstrați-l în același director cu proiectul dvs.
Acum copiați / lipiți următoarele în Arduino IDE și încărcați-le.
#includeți „Wire.h” // # include „WiiChuckClass.h” // cel mai probabil WiiChuck.h pentru restul dintre noi. #include "WiiChuck.h" WiiChuck chuck = WiiChuck ();
configurare nulă () {
// nunchuck_init (); Serial.begin (115200); chuck.begin (); chuck.update (); //chuck.calibrateJoy (); }
bucla nulă () {
întârziere (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 (",");
// nu este o funcție // if (chuck.buttonC ()) {
if (chuck.buttonC) {Serial.print ("C"); } else {Serial.print ("-"); }
Serial.println ();
}
Deconectați-vă Arduino de la alimentare și conectați adaptorul WiiChuck la pinii analogici 2-5 de pe Arduino.
Conectați-vă din nou la alimentare și asigurați-vă că valorile Nunchuck sunt trimise către Arduino și sunt tipărite pe monitorul serial. Dacă nu vedeți nicio modificare a numerelor, asigurați-vă că conexiunile sunt bune și că Nunchuck funcționează. Am petrecut câteva zile încercând să repar software-ul înainte de a-mi da seama că firul lui Nunchuck era rupt intern!
Apoi, vom conecta totul la Mozzi…
Pasul 2: Cunoașterea Mozzi
În primul rând, va trebui să descărcați cea mai recentă versiune de Mozzi. Acestea sunt alimentate de donații, așa că donați dacă vă simțiți atât de înclinați și descărcați biblioteca. Îl puteți adăuga cu ușurință în bibliotecile dvs., alegând Schiță> Biblioteci> Adăugare bibliotecă. ZIP … din Arduino IDE.
Acum vom conecta mufa pentru căști de 3,5 mm la panou și la Arduino, astfel încât să ne putem conecta cu ușurință ulterior (puteți deconecta Nunchuck și adaptorul deocamdată).
- Conectați Jack-ul la colțul din dreapta jos al plăcii pentru a face loc pentru restul. Mufa ar trebui să aibă o lățime de 5 pini.
- Conectați rândul din mijloc la masă cu un fir jumper.
- Conectați rândul de sus al cricului la un rând gol de deasupra (rândul 10 din imagine). Acesta este firul care transportă semnalul audio.
- Conectați Pinul digital ~ 9 și la rândul 10.
- Conectați masă de pe Arduino la șina de masă de pe panou.
- Nu trebuie neapărat să utilizați încă rezistorul și condensatorul, dar este posibil să observați un țipăt puternic dacă nu. Acționează ca un filtru trece jos pentru a elimina frecvențele peste ~ 15 kHz.
Deschideți schița Sinewave Mozzi în Arduino IDE alegând Fișier> Exemple> Mozzi> Noțiuni de bază> Sinewave. Acesta este în esență echivalentul lui Mozzi cu „Hello World”.
Încărcați schița și conectați un difuzor la panou. Puteți utiliza și un buzzer dacă nu ați conectat încă placa de prindere la mufa audio.
Dacă nu auziți un difuzor constant A4 (440Hz) din difuzor, asigurați-vă că toate conexiunile sunt bune și încercați din nou.
Apoi, vom conecta Nunchuck la Arduino!
Pasul 3: Puneți totul împreună
Acum vom folosi valoarea de rulare din Nunchuck pentru a schimba frecvența unei Sinewave.
Din Arduino IDE alegeți Fișier> Exemple> Mozzi> Senzori> Frecvență piezo
Va trebui să adăugăm câteva linii la acest cod pentru a putea funcționa cu Nunchuck. Adăugați o include în biblioteca WiiChuck și creați un obiect WiiChuck numit chuck. De asemenea, puteți să comentați declarația PIEZO_PIN sau pur și simplu să o ștergeți, deoarece nu o vom folosi.
#include „WiiChuck. H”
WiiChuck chuck = WiiChuck (); // const int PIEZO_PIN = 3; // setați pinul de intrare analogic pentru piezo
Acum, în configurare, va trebui să adăugăm următoarele:
chuck.begin (); chuck.update ();
și, în cele din urmă, va trebui să schimbăm câteva lucruri în updateControl ():
void updateControl () {
chuck.update (); // obține cele mai recente date nunchuck // citește piezo // int piezo_value = mozziAnalogRead (PIEZO_PIN); // valoarea este 0-1023 int piezo_value = map (Comentează linia care setează piezo_value și adaugă următoarele sub:
void updateControl () {chuck.update (); // obține cele mai recente date nunchuck // citește piezo // int piezo_value = mozziAnalogRead (PIEZO_PIN); // valoarea este 0-1023 // Nu avem nevoie de linia de mai sus, dar de ce să nu mapăm rulajul în același interval? int piezo_value = map (chuck.readRoll (), -180, 180, 0 1023);
Încărcați codul și frecvența ar trebui să corespundă cu Nunchuck's Roll. Încercați să o mapați la diferite intervale de frecvență. Dacă nu ați observat mai jos în schiță, valoarea de la senzor este înmulțită cu 3, astfel că redăm în prezent tonuri de la 0 Hz la aproximativ 3000 Hz.
Pasul 4: Atingeri finale
Acum sunteți gata să încărcați versiunea finală a codului pe care l-am creat din pasul anterior și câteva alte exemple ale lui Mozzi (Phase_Mod_Envelope și Control_Gain pentru a fi exact). Pentru a-mi face viața mai ușoară, am inclus și un fișier numit pitches.h care definește pur și simplu valorile frecvenței cu nume de note familiare (adică NOTE_A4).
Vă sugerez să citiți documentația Mozzi, deoarece o mare parte din cod este direct din exemple, cu excepția codului pentru Nunchuck.
Iată un link către depozitul meu Git. Toate fișierele importante sunt incluse, cu excepția bibliotecii Mozzi pe care ar trebui să o obțineți de pe site-ul lor web, astfel încât să fie actualizată. Descărcați WiiMusic.ino și încărcați-l pe dispozitivul dvs. pentru a auzi cum sună. Vă sugerez să vă jucați cu parametrii pe care îi schimb (modificați intervalele hărții, împărțiți / înmulțiți numerele etc.), așa cum am găsit sunetul pe care îl căutam.
Reflecţie
Nu simt că am terminat. Asta nu înseamnă că nu sunt mulțumit de proiect sau de sunetul pe care îl face, dar simt că tocmai mi-am scufundat degetele de la picioare într-o lume nouă pe care vreau să o explorez în continuare, așa că voi adăuga o nouă ramură din acest proiect pe măsură ce voi continua a munci.
Totuși, acestea fiind spuse, aceasta a fost prima mea călătorie adevărată în lumea microcontrolerelor, așa că sunt foarte recunoscător pentru experiența de învățare. Cele douăzeci și ceva de ore pe care le-am petrecut lucrând la el mi-au dat idei de Crăciun pentru mine și practic pentru fiecare membru al familiei mele. Regret oarecum că nu am lucrat la acest proiect cu altcineva, deoarece aș fi putut folosi o mulțime de sfaturi și îndrumări pe parcurs. Cu toate acestea, personal am învățat multe lucruri prin încercările mele, inclusiv trei zile de tragere a părului, încercând să depanez o problemă de software care nu a existat niciodată (un fir intern din Nunchuck s-a rupt).
Există încă o serie de posibilități care merg înainte. De exemplu, mi-ar plăcea să folosesc Arduino ca un tip de interfață MIDI între un controler MIDI și ieșirea căștilor pentru a schimba parametrii notei MIDI, deoarece există atât de multe dintre care puteți alege (volum, cutoff, frecvența plicului, pitch bend, modulație, vibrato, îl numești). Acest lucru ar permite mult mai multă flexibilitate, inclusiv schimbarea parametrilor cu butoanele și simpla redare a unei coarde care nu este codificată într-o matrice C ++.
Recomandat:
Sintetizator arpegiator (țânțar I): 6 pași
Sintetizator de arpegiere (Mosquito I): Mosquito I este un mic sintetizator de arpegiere care folosește un Arduino Nano și biblioteca de sinteză a sunetului Mozzi. Poate reda peste douăzeci de secvențe în 8 pași, dar puteți adăuga câte secvențe personalizate doriți. Este relativ simplu de configurat și nu
La mulți ani pe sintetizator de apă cu MakeyMakey și Scratch: 5 pași
La mulți ani pe sintetizator de apă cu MakeyMakey și Scratch: În loc de Flori și Cântare, puteți construi această instalație ca o mare surpriză pentru zilele de naștere
Sintetizator de apă cu MakeyMakey și Scratch: 6 pași (cu imagini)
Sintetizator de apă cu MakeyMakey și Scratch: Folosirea MakeyMakey pentru a transforma diferite materiale în comutatoare sau butoane și astfel a declanșa mișcări sau sunete pe computer este o afacere fascinantă. Se învață ce material conduce impulsul curent slab și poate inventa și experimenta cu i
Keytar Hero (Utilizarea unui controler de chitară Wii ca sintetizator): 7 pași (cu imagini)
Keytar Hero (Folosirea unui controler de chitară Wii ca sintetizator): jocurile Guitar Hero erau la modă în urmă cu o duzină de ani, așa că este obligatoriu să existe o mulțime de controlere de chitară vechi care stau în jurul prafului. Au o mulțime de butoane, butoane și pârghii, așa că de ce să nu le folosim din nou? Chitara controlează
Arduino controlat fără fir Wii Nunchuck: 7 pași
Wireless Wii Nunchuck Arduino controlat: Utilizați un Wii wireless complet nemodificat Nunchuck ca sistem de control pentru orice proiect bazat pe Arduino. Nu sunt adăugate perechi de emițătoare / receptoare radio etc. Acest instructiv presupune o anumită experiență cu microcontrolerul Arduino. Radioul