Cov txheej txheem:

Wii Nunchuck Synthesizer: 4 Kauj Ruam
Wii Nunchuck Synthesizer: 4 Kauj Ruam

Video: Wii Nunchuck Synthesizer: 4 Kauj Ruam

Video: Wii Nunchuck Synthesizer: 4 Kauj Ruam
Video: [ $9 ] DIY modular synth Wii nunchuck controller and Multi LFO / Joystic , Acceleration sensor 2024, Hlis ntuj nqeg
Anonim
Wii Nunchuck Synthesizer
Wii Nunchuck Synthesizer

Lub Ntiaj Teb ntawm Wii Music:

Kuv txiav txim siab thaum kawg ua ke kuv txoj kev hlub nkauj nrog me ntsis ntawm cov kev paub uas kuv tau txais dhau ob peb xyoos dhau los. Kuv tau txaus siab tsim lub cuab yeej ntawm kuv tus kheej txij li thaum kuv pom tham los ntawm Tod Machover ntawm kuv lub tsev kawm ntawv. Yog tias koj tsis tau paub txog nws txoj haujlwm muab nws rau Google, raws li nws tau thawb thaj tsam ntawm cov nkauj, thev naus laus zis, nrog rau lawv cuam tshuam rau ntau xyoo tam sim no (MIT media labs, Rock Band, Guitar Hero thiab lwm yam …).

Kuv tau txuas kuv Nunchuck mus rau Arduino Uno khiav ntawm Mozzi lub suab sib txuas ua tsev qiv ntawv vim muaj cov ntaub ntawv teev cia zoo ntawm ob qho online. Kom yooj yim, Kuv siv WiiChuck breadboard adapter uas ntsaws ncaj rau hauv Arduino. Txoj haujlwm yooj yim no ua ntu zus ntawm qhov suab nyob ntawm Lub Suab (YZ-Dav Hlau) ntsuas los ntawm Nunchuck's tus ntsuas qhov ntsuas. Tus joystick tus Y tus nqi tau teeb tsa kom nce mus ua suab nrov dua lossis softer. Nws kuj tseem hloov pauv chords nyob ntawm Z-Khawm thiab tig rau ntawm qib ntawv hloov pauv lub hnab ntawv thaum C-Khawm raug nias. Lub hnab ntawv qhov zaus tau hloov pauv nrog Roll ntsuas los ntawm Nunchuck (daim duab tig lub pob qhov rooj).

Cov peev txheej:

  • 1 x Arduino Uno
  • 1 x Wii Nunchuck
  • 1 x WiiChuck Adapter
  • 1 x breadboard tau tshaj 3.5mm poj niam lub tso suab nkaus
  • 1 x 3.5mm audio cable
  • 1 x hais lus ntawm qee yam (Koj tuaj yeem ntsaws lub suab nrov thaum xub thawj los sim nws
  • 4-5 Xov ntawm ntau xim

Yeem tab sis pom zoo:

  • 1 x 330 Ohm resistor
  • 1 x.1 uF capacitor

Kauj ruam 1: Txuas rau hauv koj NunChuck

Plugging hauv Koj NunChuck
Plugging hauv Koj NunChuck
Plugging hauv Koj NunChuck
Plugging hauv Koj NunChuck
Plugging hauv Koj NunChuck
Plugging hauv Koj NunChuck

Luam/Paste chav WiiChuck los ntawm Arduino Chaw Ua Si. Peb yuav xav tau cov ntawv tshaj tawm nrog PWR thiab GND pins. Txuag nws li WiiChuck.h thiab khaws nws hauv cov npe tib yam li koj txoj haujlwm.

Tam sim no luam/muab tshuaj txhuam hauv qab no rau hauv Arduino IDE thiab rub tawm.

#suav nrog "Wire.h" //#suav nrog "WiiChuckClass.h" // feem ntau yuav yog nws WiiChuck.h rau tag nrho peb. #include "WiiChuck.h" WiiChuck chuck = WiiChuck ();

void teeb tsa () {

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

void voj () {

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

yog (chuck.buttonZ) {

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

Serial.print (",");

// tsis muaj nuj nqi // yog (chuck.buttonC ()) {

yog (chuck.buttonC) {Serial.print ("C"); } lwm {Serial.print ("-"); }

Serial.println ();

}

Txuas koj Arduino los ntawm lub zog thiab txuas koj WiiChuck adapter rau Analog Pins 2-5 ntawm koj Arduino.

Txuas mus rau lub zog dua thiab xyuas kom meej tias Nunchuck tus nqi raug xa mus rau koj Arduino thiab luam tawm rau Serial Monitor. Yog tias koj tsis pom ib qho kev hloov pauv hauv tus lej kom ntseeg tau tias koj txuas tau zoo, thiab koj Nunchuck tau ua haujlwm. Kuv tau siv ob peb hnub sim kho software ua ntej paub kuv Nunchuck cov hlau tau tawg sab hauv!

Tom ntej no, peb yuav txuas txhua yam mus rau Mozzi…

Kauj Ruam 2: Paub Paub Mozzi

Paub Paub Mozzi
Paub Paub Mozzi

Ua ntej tshaj, koj yuav tsum rub tawm qhov tshiab ntawm Mozzi. Lawv tau txhawb nqa los ntawm kev pub dawb yog li pub dawb yog tias koj xav zoo li ntawd thiab rub tawm lub tsev qiv ntawv. Koj tuaj yeem ntxiv nws rau koj lub tsev qiv ntawv yooj yim los ntawm kev xaiv Sketch> Libraries> Ntxiv. ZIP Library … los ntawm Arduino IDE.

Tam sim no peb yuav txuas lub 3.5mm lub mloog pob ntseg mus rau lub khob cij thiab Arduino yog li peb tuaj yeem txuas tau yooj yim rau nws tom qab (koj tuaj yeem tshem tawm Nunchuck thiab adapter rau tam sim no).

  1. Txuas koj lub Jack rau hauv qab txoj cai kaum ntawm pawg thawj coj saib kom ua rau chav so. Lub jack yuav tsum yog 5 pins dav.
  2. Txuas kab nruab nrab mus rau hauv av nrog xaim jumper.
  3. Txuas cov kab ntawv saum toj kawg nkaus ntawm lub nkaus rau kab uas tsis muaj dab tsi saum toj no (Kab 10 hauv daim duab). Nov yog xaim nqa lub teeb liab.
  4. Txuas Digital Pin ~ 9 rau kab 10 ib yam.
  5. Txuas hauv av ntawm koj Arduino mus rau txoj kev tsheb nqaj hlau ntawm lub khob cij.
  6. Koj tsis tas yuav tsum tau siv tus tiv thaiv thiab lub tshuab hluav taws xob tseem tab sis koj yuav pom tias muaj suab nrov nrov yog tias koj tsis ua. Nws ua raws li cov lim lim qis kom tshem tawm cov zaus ntau dua ~ 15 kHz.

Qhib Mozzi's Sinewave kos duab hauv Arduino IDE los ntawm xaiv Cov Ntawv> Piv txwv> Mozzi> Pib> Sinewave. Qhov no yog qhov tseem ceeb Mozzi qhov sib npaug ntawm "Nyob Zoo Ntiaj Teb".

Tshaj tawm qhov kos duab thiab ntsaws tus neeg hais lus rau hauv daim ntawv qhia zaub mov. Koj tuaj yeem siv lub buzzer ib yam nkaus yog tias koj tsis tau xaim lub khob cij rau lub suab nkaus tseem.

Yog tias koj tsis hnov ib txwm A4 (440Hz) los ntawm koj tus neeg hais lus kom ntseeg tau tias koj txhua qhov kev sib txuas tau zoo thiab sim dua.

Tom ntej no, peb yuav txuas Nunchuck rau Arduino!

Kauj Ruam 3: Muab tag nrho ua ke

Muab Nws Tag Nrho Ua Ke
Muab Nws Tag Nrho Ua Ke

Tam sim no peb yuav siv tus nqi yob los ntawm Nunchuck los hloov qhov zaus ntawm Sinewave.

Los ntawm Arduino IDE Xaiv Cov Ntaub Ntawv> Piv txwv> Mozzi> Sensors> Piezo Zaus

Peb yuav tsum tau ntxiv ob peb kab rau cov cai no txhawm rau kom nws ua haujlwm nrog Nunchuck. Ntxiv qhov suav nrog rau WiiChuck lub tsev qiv ntawv thiab muab cov khoom WiiChuck hu ua chuck. Koj tseem tuaj yeem tawm lus tshaj tawm PIEZO_PIN lossis tsuas yog rho tawm nws vim peb yuav tsis siv nws.

#suav nrog "WiiChuck. H"

WiiChuck chuck = WiiChuck (); // const int PIEZO_PIN = 3; // teeb tus pin nkag analog rau piezo

Tam sim no hauv kev teeb tsa, peb yuav xav tau ntxiv cov hauv qab no:

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

thiab thaum kawg peb yuav xav hloov qee yam hauv kev hloov kho tshiab ():

void updateControl () {

chuck.update (); // tau txais cov ntaub ntawv tshiab nunchuck // nyeem piezo // int piezo_value = mozziAnalogRead (PIEZO_PIN); // tus nqi yog 0-1023 int piezo_value = daim ntawv qhia (Tawm tswv yim tawm kab uas teev piezo_value thiab ntxiv cov hauv qab no hauv qab no:

void updateControl () {chuck.update (); // tau txais cov ntaub ntawv tshiab nunchuck // nyeem piezo // int piezo_value = mozziAnalogRead (PIEZO_PIN); // tus nqi yog 0-1023 // Peb tsis xav tau kab saum toj no tab sis vim li cas ho tsis qhia daim ntawv yob rau tib yam? int piezo_value = daim ntawv qhia (chuck.readRoll (), -180, 180, 0 1023);

Tshaj tawm cov cai thiab zaus yuav tsum sib haum rau koj Nunchuck's Roll. Sim ua daim phiaj rau qhov sib txawv ntau zaus. Yog tias koj tsis tau pom dua hauv qab no hauv qhov kos duab tus nqi los ntawm lub ntsuas pa tau muab 3 ntxiv yog li tam sim no peb tab tom ua suab nrov los ntawm 0 Hz txog li 3000 Hz.

Kauj Ruam 4: Kov Kawg

Kov Kawg
Kov Kawg

Tam sim no koj tau npaj los rub tawm qhov kawg ntawm cov cai uas kuv tau ua ua ke los ntawm cov kauj ruam dhau los thiab ob peb ntxiv ntawm Mozzi tus piv txwv (Phase_Mod_Envelope, thiab Control_Gain kom raug). Ua kom kuv lub neej yooj yim dua kuv kuj suav nrog cov ntaub ntawv hu ua pitches.h uas yooj yim txhais cov zaus zaus nrog cov npe paub zoo (piv txwv li NOTE_A4).

Kuv hais qhia nyeem Mozzi cov ntaub ntawv ntau npaum li cov cai tau ncaj los ntawm cov piv txwv tshwj tsis yog cov cai rau Nunchuck.

Nov yog qhov txuas rau kuv Git chaw cia khoom. Txhua cov ntaub ntawv tseem ceeb suav nrog tshwj tsis yog lub tsev qiv ntawv Mozzi uas koj yuav tsum tau txais los ntawm lawv lub vev xaib yog li nws yog qhov tshiab. Rub tawm WiiMusic.ino thiab xa nws mus rau koj lub cuab yeej kom hnov lub suab zoo li cas. Kuv qhia koj ua si ib puag ncig nrog qhov ntsuas uas kuv tau hloov pauv (hloov pauv daim duab qhia chaw, faib/faib cov lej, thiab lwm yam …) raws li qhov kuv pom lub suab tshwj xeeb uas kuv tab tom nrhiav.

Kev xav

Kuv tsis hnov zoo li kuv ua tiav lawm. Qhov ntawd tsis tau hais tias kuv tsis txaus siab rau txoj haujlwm lossis lub suab nws ua, tab sis kuv zoo li kuv nyuam qhuav dov kuv cov ntiv taw mus rau hauv lub ntiaj teb tshiab uas kuv xav tshawb nrhiav ntxiv yog li kuv yuav ntxiv ib ceg tshiab los ntawm txoj haujlwm no thaum kuv txuas ntxiv mus ua hauj lwm

Tseem, uas tau hais tias qhov no yog kuv thawj txoj kev taug mus rau hauv lub ntiaj teb ntawm microcontrollers yog li kuv zoo siab heev rau kev kawm paub. Lub sijhawm nees nkaum los yog li ntawd kuv siv sijhawm ua haujlwm rau nws muab tswv yim Christmas rau kuv tus kheej thiab xyaum ua txhua tus tswv cuab ntawm kuv tsev neeg. Kuv tu siab me ntsis tsis ua haujlwm ntawm txoj haujlwm no nrog lwm tus li kuv tuaj yeem tau siv ntau cov lus qhia thiab kev qhia raws txoj hauv kev. Txawm li cas los xij, Kuv tus kheej tau kawm ntau dhau los ntawm kuv qhov kev sim suav nrog peb hnub ntawm rub kuv cov plaub hau tawm los sim daws qhov teeb meem software uas tsis muaj nyob ntawd (cov xov hlau sab hauv hauv Nunchuck tau tawg).

Tseem muaj ntau qhov muaj peev xwm txav mus tom ntej. Piv txwv li, Kuv xav siv Arduino ua hom MIDI interface hauv nruab nrab ntawm MIDI maub los thiab lub mloog pob ntseg tawm los hloov qhov tsis ntawm MIDI ceeb toom vim tias muaj ntau yam los xaiv los ntawm (ntim, txiav tawm, lub hnab ntawv zaus, suab khoov., kev hloov kho, vibrato, koj lub npe nws). Qhov no yuav tso cai rau ntau qhov kev hloov pauv yooj yim suav nrog kev hloov pauv tsis nrog cov nyees khawm, thiab yooj yim ua si chord uas tsis nyuaj rau hauv C ++ array.

Pom zoo: