INHOUDSOPGAWE:

Wii Nunchuck -sintetiseerder: 4 stappe
Wii Nunchuck -sintetiseerder: 4 stappe

Video: Wii Nunchuck -sintetiseerder: 4 stappe

Video: Wii Nunchuck -sintetiseerder: 4 stappe
Video: Wii Remote and Nunchuck in Virtual Reality Steam VR (Tutorial) 2024, November
Anonim
Wii Nunchuck -sintetiseerder
Wii Nunchuck -sintetiseerder

Die wêreld van Wii -musiek:

Ek het besluit om my liefde vir musiek uiteindelik te kombineer met die bietjie programmeringservaring wat ek die afgelope paar jaar opgedoen het. Sedert ek 'n toespraak deur Tod Machover by my skool gesien het, het ek daarin belanggestel om 'n eie instrument te skep. As jy nie vertroud is met sy werk nie, gee hom 'n Google, aangesien hy al 'n aantal jare die grense van musiek, tegnologie en die kruising daarvan verskuif (MIT media labs, Rock Band, Guitar Hero, ens.).

Ek het my Nunchuck gekoppel aan 'n Arduino Uno wat op die Mozzi-klanksintese-biblioteek werk weens die goed gedokumenteerde gebruik van beide aanlyn. Vir gemak gebruik ek 'n WiiChuck -broodbordadapter wat direk in die Arduino kan aansluit. Hierdie relatief eenvoudige projek speel 'n reeks toonhoogtes, afhangende van die Pitch (YZ-Plane) gemeet aan die Nunchuck se versnellingsmeter. Die Y -waarde van die joystick word aan die versterking gekoppel om die toonhoogte harder of sagter te maak. Dit verander ook akkoorde afhangende van die Z-knoppie en skakel 'n fasemodulasie-koevert aan wanneer die C-knoppie ingedruk word. Die frekwensie van die koevert word dan aangepas met die rol gemeet vanaf die Nunchuck (prentjie draai 'n knop).

Hulpbronne:

  • 1 x Arduino Uno
  • 1 x Wii Nunchuck
  • 1 x WiiChuck -adapter
  • 1 x broodbord -versoenbare 3,5 mm vroulike stereo -aansluiting
  • 1 x 3,5 mm klank kabel
  • 1 x luidspreker van een of ander aard (u kan eers 'n buzzer aansluit om dit te toets
  • 4-5 drade van verskillende kleure

Opsioneel, maar aanbeveel:

  • 1 x 330 Ohm weerstand
  • 1 x.1 uF kapasitor

Stap 1: Koppel u NunChuck aan

Koppel jou NunChuck aan
Koppel jou NunChuck aan
Koppel jou NunChuck aan
Koppel jou NunChuck aan
Koppel jou NunChuck aan
Koppel jou NunChuck aan

Kopieer/plak die WiiChuck -klas van Arduino Playground. Ons benodig die weergawe met die verklaring van PWR- en GND -penne. Stoor dit as WiiChuck.h en hou dit in dieselfde gids as u projek.

Kopieer/plak nou die volgende in Arduino IDE en laai dit op.

#sluit "Wire.h" //#sluit "WiiChuckClass.h" in // waarskynlik die WiiChuck.h vir die res van ons. #include "WiiChuck.h" WiiChuck chuck = WiiChuck ();

ongeldige opstelling () {

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

leemte -lus () {

vertraging (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 (",");

as (chuck.buttonZ) {

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

Serial.print (",");

// nie 'n funksie // as (chuck.buttonC ()) {

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

Serial.println ();

}

Ontkoppel u Arduino van die krag en koppel u WiiChuck-adapter aan op Analog Pins 2-5 op u Arduino.

Koppel weer aan die krag en sorg dat die Nunchuck -waardes na u Arduino gestuur word en op die Serial Monitor gedruk word. As u geen verandering in die getalle sien nie, maak seker dat u verbindings goed is en dat Nunchuck funksioneer. Ek het 'n paar dae probeer om sagteware op te los voordat ek besef het dat my Nunchuck -draad intern gebreek is!

Vervolgens verbind ons alles met Mozzi…

Stap 2: Maak kennis met Mozzi

Maak kennis met Mozzi
Maak kennis met Mozzi

Eerstens moet u die nuutste weergawe van Mozzi aflaai. Hulle word aangevuur deur skenkings, so skenk as u so geneig is en laai die biblioteek af. U kan dit maklik by u biblioteke voeg deur Sketch> Libraries> Add. ZIP Library … uit Arduino IDE te kies.

Nou sal ons die 3,5 mm -koptelefoonaansluiting op die broodbord en die Arduino koppel, sodat ons later maklik daaraan kan koppel (u kan die Nunchuck en die adapter vir eers ontkoppel).

  1. Koppel u Jack in die onderste regterkantste hoek van die bord om plek te maak vir die res. Die domkrag moet 5 penne breed wees.
  2. Verbind die middelste ry met die grond met 'n springdraad.
  3. Koppel die boonste ry van die domkrag aan 'n leë ry hierbo (ry 10 op die foto). Dit is die draad wat die klanksein dra.
  4. Koppel Digital Pin ~ 9 ook aan ry 10.
  5. Koppel Ground op jou Arduino aan die grondrail op die broodbord.
  6. U hoef nog nie noodwendig die weerstand en die kondensator te gebruik nie, maar as u dit nie doen nie, kan u 'n hoë piep sien. Dit dien as 'n laagdeurlaatfilter om frekwensies bo ~ 15 kHz uit te skakel.

Maak Mozzi se Sinewave -skets in Arduino IDE oop deur File> Voorbeelde> Mozzi> Basics> Sinewave te kies. Dit is in wese Mozzi se ekwivalent van "Hello World".

Laai die skets op en steek 'n luidspreker in die broodbord. U kan ook 'n gonser gebruik as u nog nie die broodbord aan die klankaansluiting gekoppel het nie.

As u nie 'n konstante A4 (440Hz) uit u luidspreker hoor nie, moet u seker maak dat al u verbindings goed is en probeer weer.

Vervolgens koppel ons die Nunchuck aan die Arduino!

Stap 3: Alles saamvoeg

Om alles bymekaar te sit
Om alles bymekaar te sit

Nou gaan ons die rolwaarde van die Nunchuck gebruik om die frekwensie van 'n Sinewave te verander.

Kies uit Arduino IDE Lêer> Voorbeelde> Mozzi> Sensors> Piezo -frekwensie

Ons moet 'n paar reëls by hierdie kode voeg om dit met die Nunchuck te laat werk. Voeg 'n byvoeging by die WiiChuck -biblioteek en installeer 'n WiiChuck -voorwerp genaamd chuck. U kan ook kommentaar lewer op die verklaring van PIEZO_PIN of dit net uitvee, aangesien ons dit nie sal gebruik nie.

#sluit "WiiChuck. H" in

WiiChuck chuck = WiiChuck (); // const int PIEZO_PIN = 3; // stel die analoog invoerpen vir die piezo in

Nou in die opstelling, moet ons die volgende byvoeg:

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

en uiteindelik moet ons 'n paar dinge in updateControl () verander:

ongeldig updateControl () {

chuck.update (); // kry die nuutste nunchuck -data // lees die piezo // int piezo_value = mozziAnalogRead (PIEZO_PIN); // waarde is 0-1023 int piezo_value = map (Lewer kommentaar op die reël wat piezo_value stel en voeg die volgende daaronder by:

ongeldige updateControl () {chuck.update (); // kry die nuutste nunchuck -data // lees die piezo // int piezo_value = mozziAnalogRead (PIEZO_PIN); // waarde is 0-1023 // Ons het nie die lyn hierbo nodig nie, maar waarom rol ons nie die rol in dieselfde reeks nie? int piezo_value = map (chuck.readRoll (), -180, 180, 0 1023);

Laai die kode op en die frekwensie moet ooreenstem met u Nunchuck's Roll. Probeer om dit na verskillende frekwensie -omgewings toe te pas. As u nie verder in die skets opgemerk het nie, word die waarde van die sensor met 3 vermenigvuldig, dus speel ons tans klanke van 0 Hz tot ongeveer 3000 Hz.

Stap 4: Laaste aanraking

Finale aanraking
Finale aanraking

Nou is u gereed om die finale weergawe van die kode op te laai wat ek van die vorige stap saamgevoeg het en nog 'n paar voorbeelde van Mozzi (Phase_Mod_Envelope en Control_Gain om presies te wees). Om my lewe makliker te maak, het ek ook 'n lêer met die naam pitches.h ingesluit wat frekwensiewaarde eenvoudig definieer met bekende nootname (dws NOTE_A4).

Ek stel voor dat u die Mozzi -dokumentasie lees, aangesien die meeste van die kode direk uit die voorbeelde is, behalwe die kode vir die Nunchuck.

Hier is 'n skakel na my Git -bewaarplek. Alle belangrike lêers is ingesluit, behalwe die Mozzi -biblioteek wat u van hul webwerf moet kry, sodat dit op datum is. Laai WiiMusic.ino af en laai dit op u toestel af om te hoor hoe dit klink. Ek stel voor dat u speel met die parameters wat ek verander (verander die kaartreekse, deel/vermenigvuldig getalle, ens.), Want dit is hoe ek die spesifieke geluid gevind het waarna ek gesoek het.

Besinning

Ek voel nie asof ek heeltemal klaar is nie. Dit wil nie sê dat ek nie tevrede is met die projek of die geluid wat dit maak nie, maar ek voel asof ek net my tone ingeduik het in 'n nuwe wêreld wat ek wil aanhou ondersoek, so ek sal 'n nuwe tak van hierdie projek byvoeg terwyl ek aangaan om te werk.

Tog, dit gesê, dit was my eerste ware reis na die wêreld van mikrobeheerders, so ek is baie dankbaar vir die leerervaring. Die twintig uur wat ek daaraan gewerk het, het my Kersfees -idees vir myself en feitlik elke lid van my gesin gegee. Ek is jammer dat ek nie saam met iemand anders aan hierdie projek gewerk het nie, aangesien ek baie advies en leiding onderweg kon gebruik het. Persoonlik het ek egter baie geleer deur middel van my proewe, waaronder drie dae om my hare uit te trek om 'n sagtewareprobleem te ontfout wat nooit daar was nie ('n interne draad in die Nunchuck het gebreek).

Daar is nog 'n aantal moontlikhede wat vorentoe beweeg. Ek sou byvoorbeeld die Arduino graag as 'n tipe MIDI -koppelvlak tussen 'n MIDI -kontroleerder en die koptelefoon wil gebruik om die parameters van die MIDI -noot te verander, aangesien daar soveel is om uit te kies (volume, afsny, koevertfrekwensie, toonhoogte buiging, modulasie, vibrato, noem maar op). Dit sal baie meer buigsaamheid moontlik maak, insluitend die oorskakeling van parameters met die knoppies, en bloot die speel van 'n akkoord wat nie in 'n C ++ skikking is nie.

Aanbeveel: