Përmbajtje:

Sintetizuesi Wii Nunchuck: 4 hapa
Sintetizuesi Wii Nunchuck: 4 hapa

Video: Sintetizuesi Wii Nunchuck: 4 hapa

Video: Sintetizuesi Wii Nunchuck: 4 hapa
Video: Wii - Just Perfect 2024, Korrik
Anonim
Sintetizuesi Wii Nunchuck
Sintetizuesi Wii Nunchuck

Bota e Muzikës Wii:

Vendosa që më në fund ta kombinoj dashurinë time për muzikën me pak përvojë programimi që kam fituar gjatë viteve të fundit. Unë kam qenë i interesuar të krijoj një instrument timen që kur kam parë një fjalim nga Tod Machover në shkollën time. Nëse nuk jeni të njohur me punën e tij, jepini atij një Google, pasi ai ka shtyrë kufijtë e muzikës, teknologjisë, si dhe ndërprerjen e tyre për disa vite tani (laboratorët e mediave MIT, Rock Band, Guitar Hero etj…)

Unë e kam lidhur Nunchuck-in tim me një Arduino Uno që funksionon në bibliotekën e sintezës së zërit Mozzi për shkak të përdorimit të mirë-dokumentuar të të dyjave në internet. Për lehtësi, unë jam duke përdorur një përshtatës të panoramës WiiChuck i cili futet direkt në Arduino. Ky projekt relativisht i thjeshtë luan një sërë fushash në varësi të Pitch (YZ-Plane) të matur nga përshpejtuesi i Nunchuck. Vlera Y e levës është hartuar në fitim për ta bërë fushën më të fortë ose më të butë. Ai gjithashtu ndryshon akordet në varësi të butonit Z dhe ndez një zarf të modulimit të fazës kur shtypet butoni C. Frekuenca e zarfit modifikohet më pas me Roll të matur nga Nunchuck (fotografia duke kthyer një çelës).

Burimet:

  • 1 x Arduino Uno
  • 1 x Wii Nunchuck
  • 1 x Përshtatës WiiChuck
  • 1 x prizë stereo femërore 3.5 mm e pajtueshme
  • 1 kabllo audio 3.5 mm
  • 1 x altoparlant i një lloji (Mund të lidhni një zile në fillim për ta provuar
  • 4-5 Tela me ngjyra të ndryshme

Opsionale por e rekomanduar:

  • Rezistencë 1 x 330 Ohm
  • 1 x.1 kondensator uF

Hapi 1: Lidhja në NunChuck -in tuaj

Lidhja në NunChuck -in tuaj
Lidhja në NunChuck -in tuaj
Lidhja në NunChuck -in tuaj
Lidhja në NunChuck -in tuaj
Lidhja në NunChuck -in tuaj
Lidhja në NunChuck -in tuaj

Kopjoni/Ngjitni klasën WiiChuck nga Arduino Playground. Ne do të kemi nevojë për versionin me deklaratën e kunjave PWR dhe GND. Ruajeni atë si WiiChuck.h dhe mbajeni në të njëjtën drejtori me projektin tuaj.

Tani kopjoni/ngjisni sa vijon në Arduino IDE dhe ngarkojeni.

#përfshijnë "Wire.h" //#përfshijnë "WiiChuckClass.h" // me shumë mundësi WiiChuck.h e saj për ne të tjerët. #përfshi "WiiChuck.h" WiiChuck chuck = WiiChuck ();

void setup () {

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

lak void () {

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

nëse (chuck.buttonZ) {

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

Serial.print (",");

// jo një funksion // if (chuck.buttonC ()) {

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

Serial.println ();

}

Shkëputeni Arduino-n tuaj nga fuqia dhe lidhni përshtatësin tuaj WiiChuck me kunjat analoge 2-5 në Arduino tuaj.

Lidhuni përsëri me energjinë dhe sigurohuni që vlerat e Nunchuck të dërgohen në Arduino tuaj dhe të printohen në Monitor Serial. Nëse nuk po shihni ndonjë ndryshim në numra, sigurohuni që lidhjet tuaja janë të mira dhe se Nunchuck po funksionon. Kalova disa ditë duke u përpjekur për të rregulluar softuerin para se të kuptoja që tela e Nunchuck tim ishte thyer brenda!

Tjetra, ne do të lidhim gjithçka me Mozzi. Me Me

Hapi 2: Njohja me Mozzi

Njohja me Mozzi
Njohja me Mozzi

Së pari, do t'ju duhet të shkarkoni versionin e fundit të Mozzi. Ato ushqehen nga donacionet, kështu që dhuroni nëse ndiheni aq të prirur dhe shkarkoni bibliotekën. Mund ta shtoni me lehtësi në bibliotekat tuaja duke zgjedhur Sketch> Bibliotekat> Add. ZIP Library … nga Arduino IDE.

Tani do të lidhim folenë e kufjeve 3.5 mm në tabelën e bukës dhe Arduino, në mënyrë që të lidhemi lehtësisht me të më vonë (mund të shkëputni Nunchuck dhe përshtatësin tani për tani).

  1. Lidheni Jack -in tuaj në këndin e poshtëm të djathtë të tabelës për të bërë vend për pjesën tjetër. Foleja duhet të jetë 5 kunja e gjerë.
  2. Lidhni rreshtin e mesëm me tokën me një tel kërcyes.
  3. Lidhni rreshtin më të lartë të folesë me një rresht bosh sipër (Rreshti 10 në figurë). Ky është tela që mbart sinjalin audio.
  4. Lidhni Pin Pin Digital 9 me rreshtin 10 gjithashtu.
  5. Lidhni Ground në Arduino tuaj me hekurudhën tokësore në dërrasën e bukës.
  6. Ju nuk keni domosdoshmërisht nevojë të përdorni rezistencën dhe kondensatorin, por mund të vini re një kërcitje të lartë nëse nuk e bëni. Ai vepron si një filtër me kalim të ulët për të eleminuar frekuencat mbi ~ 15 kHz.

Hapni skicën e Mozzi's Sinewave në Arduino IDE duke zgjedhur Skedar> Shembuj> Mozzi> Bazat> Sinewave. Ky është në thelb ekuivalenti i Mozzi me "Përshëndetje Botë".

Ngarko skicën dhe fut një altoparlant në tabelën e bukës. Ju gjithashtu mund të përdorni një zile, nëse nuk e keni lidhur akoma panelin e bukës në folenë audio.

Nëse nuk dëgjoni një A4 konstante (440Hz) që vjen nga altoparlanti juaj sigurohuni që të gjitha lidhjet tuaja të jenë të mira dhe provoni përsëri.

Tjetra, ne do ta lidhim Nunchuck me Arduino!

Hapi 3: Vendosja e të gjitha së bashku

Vendosja e të gjitha së bashku
Vendosja e të gjitha së bashku

Tani ne do të përdorim vlerën e rrotullës nga Nunchuck për të ndryshuar frekuencën e një Vala Sinewave.

Nga Arduino IDE Zgjidhni Skedarin> Shembuj> Mozzi> Sensorë> Frekuenca Piezo

Ne do të duhet të shtojmë disa rreshta në këtë kod në mënyrë që të funksionojë me Nunchuck. Shtoni një përfshirje në bibliotekën WiiChuck dhe krijoni një objekt WiiChuck të quajtur chuck. Ju gjithashtu mund të komentoni deklaratën e PIEZO_PIN ose thjesht ta fshini pasi nuk do ta përdorim.

#përfshi "WiiChuck. H"

WiiChuck chuck = WiiChuck (); // const int PIEZO_PIN = 3; // vendosni pinin e hyrjes analoge për piezo

Tani në konfigurim, do të na duhet të shtojmë sa vijon:

chuck.filloj (); chuck.update ();

dhe së fundi do të na duhet të ndryshojmë disa gjëra në updateControl ():

void updateControl () {

chuck.update (); // merrni të dhënat më të fundit nunchuck // lexoni piezo // int piezo_value = mozziAnalogRead (PIEZO_PIN); // vlera është 0-1023 int piezo_value = map (Komentoni rreshtin që vendos piezo_value dhe shtoni sa vijon poshtë:

void updateControl () {chuck.update (); // merrni të dhënat më të fundit nunchuck // lexoni piezo // int piezo_value = mozziAnalogRead (PIEZO_PIN); // vlera është 0-1023 // Ne nuk kemi nevojë për rreshtin e mësipërm, por pse të mos e hartojmë rrotullën në të njëjtën gamë? int piezo_value = hartë (chuck.readRoll (), -180, 180, 0 1023);

Ngarko kodin dhe frekuenca duhet të korrespondojë me Roll -in tuaj të Nunchuck. Provoni ta hartoni atë në diapazone të ndryshme frekuencash. Nëse nuk e keni vënë re më poshtë në skicë, vlera e sensorit shumëzohet me 3, kështu që ne aktualisht po luajmë tone nga 0 Hz në rreth 3000 Hz.

Hapi 4: Prekjet përfundimtare

Prekjet përfundimtare
Prekjet përfundimtare

Tani jeni gati të ngarkoni versionin përfundimtar të kodit të cilin e kam bashkuar nga hapi i mëparshëm dhe disa shembuj të tjerë të Mozzi -t (Phase_Mod_Envelope, dhe Control_Gain për të qenë të saktë). Për ta bërë jetën time më të lehtë, unë gjithashtu përfshiva një skedar të quajtur pitches.h i cili thjesht përcakton vlerat e frekuencës me emrat e shënimeve të njohura (p.sh. NOTE_A4).

Unë sugjeroj të lexoni dokumentacionin Mozzi pasi shumica e kodit është drejtpërdrejt nga shembujt përveç kodit për Nunchuck.

Këtu është një lidhje me depon time Git. Të gjithë skedarët e rëndësishëm përfshihen përveç bibliotekës Mozzi të cilën duhet ta merrni nga faqja e tyre e internetit në mënyrë që të jetë e përditësuar. Shkarkoni WiiMusic.ino dhe ngarkojeni atë në pajisjen tuaj për të dëgjuar se si duket. Unë ju sugjeroj të luani me parametrat që po ndryshoj (ndryshoni vargjet e hartës, ndani/shumëzoni numrat, etj….) Pasi kështu e gjeta tingullin e veçantë që po kërkoja.

Reflektim

Nuk ndihem sikur jam përfunduar. Kjo nuk do të thotë se nuk jam i kënaqur me projektin ose tingullin që bën, por ndjehem sikur sapo i kam futur gishtërinjtë në një botë të re që dua të vazhdoj ta eksploroj kështu që do të shtoj një degë të re nga ky projekt ndërsa vazhdoj te punosh.

Megjithatë, duke u thënë ky ishte udhëtimi im i parë i vërtetë në botën e mikrokontrolluesve, kështu që jam shumë mirënjohës për përvojën e të mësuarit. Njëzet orët që kalova duke punuar në të më dhanë ide Krishtlindjesh për veten dhe praktikisht çdo anëtar të familjes sime. Jam penduar disi që nuk punova në këtë projekt me dikë tjetër pasi mund të kisha përdorur shumë këshilla dhe udhëzime gjatë rrugës. Sidoqoftë, unë personalisht mësova shumë përmes sprovave të mia, duke përfshirë tre ditë heqje flokësh duke u përpjekur të korrigjoja një problem softuerik që nuk ishte kurrë atje (një tel i brendshëm në Nunchuck ishte prishur).

Ende ka një sërë mundësish për të ecur përpara. Për shembull, do të më pëlqente të përdorja Arduino si një lloj ndërfaqe MIDI midis një kontrolluesi MIDI dhe kufjeve jashtë për të ndryshuar parametrat e shënimit MIDI pasi ka kaq shumë për të zgjedhur (vëllimi, ndërprerja, frekuenca e zarfit, përkulja e katranit), modulim, vibrato, e emërtoni). Kjo do të lejonte shumë më tepër fleksibilitet duke përfshirë ndërrimin e parametrave me butona dhe thjesht luajtjen e një akordi që nuk është i koduar në një grup C ++.

Recommended: