Sisukord:

Wii Nunchucki süntesaator: 4 sammu
Wii Nunchucki süntesaator: 4 sammu

Video: Wii Nunchucki süntesaator: 4 sammu

Video: Wii Nunchucki süntesaator: 4 sammu
Video: Прошивка Nintendo Wii 2024, November
Anonim
Wii Nunchuck süntesaator
Wii Nunchuck süntesaator

Wii muusika maailm:

Otsustasin lõpuks ühendada oma muusikaarmastuse vähese programmeerimiskogemusega, mille olen viimaste aastate jooksul omandanud. Olen olnud huvitatud oma instrumendi loomisest alates sellest ajast, kui nägin oma koolis Tod Machoveri juttu. Kui te pole tema tööga tuttav, andke talle Google, kuna ta on juba mitu aastat nihutanud nii muusika, tehnoloogia kui ka nende piiri (MIT meedialaborid, Rock Band, Guitar Hero jne).).

Olen ühendanud oma Nunchucki Arduino Unoga, mis töötab Mozzi helisünteesiteegis, kuna mõlemad on hästi dokumenteeritud. Lihtsuse huvides kasutan WiiChucki leivaplaadi adapterit, mis ühendatakse otse Arduinoga. See suhteliselt lihtne projekt mängib Nunchucki kiirendusmõõturilt mõõdetud helikõrguse (YZ-tasapind) põhjal mitmeid helikõrgusi. Juhtkangi Y väärtus kaardistatakse võimendusega, et muuta helikõrgus valjemaks või pehmemaks. Samuti muudab see akorde sõltuvalt Z-nupust ja lülitab C-nupu vajutamisel sisse faasimodulatsiooni ümbriku. Seejärel muudetakse ümbriku sagedust Nunchuckist mõõdetud rulliga (pilt keerab nuppu).

Ressursid:

  • 1 x Arduino Uno
  • 1 x Wii Nunchuck
  • 1 x WiiChucki adapter
  • 1 x leivalauaga ühilduv 3,5 mm stereopistik
  • 1 x 3,5 mm helikaabel
  • 1 x mingisugune kõlar (selle testimiseks võite kõigepealt ühendada summeri
  • 4-5 erinevat värvi traati

Valikuline, kuid soovitatav:

  • 1 x 330 oomi takisti
  • 1 x.1 uF kondensaator

Samm: ühendage oma NunChuck vooluvõrku

NunChucki ühendamine
NunChucki ühendamine
NunChucki ühendamine
NunChucki ühendamine
NunChucki ühendamine
NunChucki ühendamine

Kopeerige/kleepige WiiChuck klass Arduino mänguväljakult. Vajame PWR- ja GND -tihvtide deklaratsiooniga versiooni. Salvestage see nimega WiiChuck.h ja hoidke seda oma projektiga samas kataloogis.

Nüüd kopeerige/kleepige järgmine teave Arduino IDE -sse ja laadige see üles.

#include "Wire.h" //#include "WiiChuckClass.h" // tõenäoliselt meie teiste jaoks selle WiiChuck.h. #include "WiiChuck.h" WiiChuck padrun = WiiChuck ();

tühine seadistus () {

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

void loop () {

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

// mitte funktsioon // if (chuck.buttonC ()) {

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

Serial.println ();

}

Ühendage Arduino toiteallikast lahti ja ühendage WiiChucki adapter Arduino analoogpistikutega 2-5.

Ühendage uuesti vooluvõrku ja veenduge, et Nunchucki väärtused saadetakse teie Arduinole ja trükitakse jadamonitorile. Kui te ei näe numbrites mingeid muutusi, veenduge, et ühendused on head ja Nunchuck töötab. Püüdsin paar päeva tarkvara parandada, enne kui mõistsin, et mu Nunchucki juhe on sisemiselt katki!

Järgmisena ühendame kõik Mozzi külge…

2. samm: Mozzi tundmaõppimine

Mozziga tutvumine
Mozziga tutvumine

Esiteks peate alla laadima Mozzi uusima versiooni. Neid toidavad annetused, nii et annetage, kui tunnete end nii kaldu, ja laadige raamatukogu alla. Saate selle oma raamatukogudesse hõlpsalt lisada, valides Arduino IDE -st visandid> Raamatukogud> Lisa. ZIP -raamatukogu….

Nüüd ühendame 3,5 mm kõrvaklappide pesa leivalaua ja Arduinoga, et saaksime sellega hiljem hõlpsalt ühenduse luua (saate Nunchucki ja adapteri praegu lahti ühendada).

  1. Ühendage pistikupesa tahvli paremasse alumisse nurka, et teha ruumi ülejäänud jaoks. Tungraud peaks olema 5 tihvti lai.
  2. Ühendage keskmine rida maaga hüppajajuhtmega.
  3. Ühendage tungraua ülemine rida ülaltoodud tühja reaga (pildil olev rida 10). See juhe kannab helisignaali.
  4. Ühendage ka digitaalne tihvt ~ 9 reaga 10.
  5. Ühendage Arduino Ground leivaplaadil oleva rööpaga.
  6. Te ei pea tingimata veel takistit ja kondensaatorit kasutama, kuid kui te seda ei tee, võite märgata tugevat kriuksumist. See toimib madalpääsfiltrina, et kõrvaldada sagedused üle ~ 15 kHz.

Avage Mozzi Sinewave'i visand Arduino IDE -s, valides Fail> Näited> Mozzi> Põhitõed> Sinewave. See on sisuliselt Mozzi vaste "Tere maailm".

Laadige eskiis üles ja ühendage kõlar leivaplaadile. Võite kasutada ka helisignaali, kui te pole veel leivaplaati helipistikuga ühendanud.

Kui te ei kuule kõlarist pidevat A4 (440 Hz), veenduge, et kõik ühendused on korras ja proovige uuesti.

Järgmisena ühendame Nunchucki Arduinoga!

3. samm: pange see kõik kokku

Kõike kokku panema
Kõike kokku panema

Nüüd kasutame Nunchucki rullväärtust Sinewave'i sageduse muutmiseks.

Valige Arduino IDE -st Fail> Näited> Mozzi> Andurid> Pieso -sagedus

Peame sellele koodile lisama paar rida, et see saaks Nunchuckiga töötada. Lisage kaasamine WiiChucki teeki ja initsieerige WiiChucki objekt nimega chuck. Samuti saate kommenteerida PIEZO_PIN deklaratsiooni või lihtsalt selle kustutada, kuna me ei kasuta seda.

#include "WiiChuck. H"

WiiChucki padrun = WiiChuck (); // const int PIEZO_PIN = 3; // seada pieso analoogsisendi pin

Nüüd peame seadistamisel lisama järgmise:

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

ja lõpuks peame värskendusjuhtimises () muutma mõnda asja:

void updateControl () {

chuck.update (); // hankida viimased nunchucki andmed // lugeda pieso // int piezo_value = mozziAnalogRead (PIEZO_PIN); // väärtus on 0-1023 int piezo_value = map (Kommenteerige rida, mis seab piezo_value, ja lisage selle alla järgmine:

void updateControl () {chuck.update (); // hankida viimased nunchucki andmed // lugeda pieso // int piezo_value = mozziAnalogRead (PIEZO_PIN); // väärtus on 0-1023 // Me ei vaja ülaltoodud joont, aga miks mitte kaardistada rull samasse vahemikku? int piezo_value = kaart (chuck.readRoll (), -180, 180, 0 1023);

Laadige kood üles ja sagedus peaks vastama teie Nunchucki rullile. Proovige kaardistada see erinevatele sagedusvahemikele. Kui te pole visandis allpool märganud, korrutatakse anduri väärtus 3 -ga, nii et praegu mängime toone vahemikus 0 Hz kuni umbes 3000 Hz.

4. samm: viimased puudutused

Viimased puudutused
Viimased puudutused

Nüüd olete valmis üles laadima koodi lõpliku versiooni, mille olen eelmisest sammust kokku pannud, ja veel mõned Mozzi näited (täpsemalt Phase_Mod_Envelope ja Control_Gain). Oma elu lihtsustamiseks lisasin ka faili nimega pitches.h, mis lihtsalt määratleb sagedusväärtused tuttavate noodinimedega (nt NOTE_A4).

Soovitan lugeda Mozzi dokumentatsiooni, kuna suurem osa koodist on otse näidetest, välja arvatud Nunchucki kood.

Siin on link minu Giti hoidlale. Kõik olulised failid on lisatud, välja arvatud Mozzi raamatukogu, mille peaksite hankima nende veebisaidilt, et see oleks ajakohane. Laadige alla WiiMusic.ino ja laadige see oma seadmesse, et kuulda, kuidas see kõlab. Soovitan teil mängida parameetritega, mida ma muudan (kaardivahemike muutmine, numbrite jagamine/korrutamine jne.), Sest nii leidsin ma otsitava heli.

Peegeldus

Ma ei tunne, et olen päris lõpetanud. See ei tähenda, et ma ei oleks rahul projekti ega selle heliga, kuid mul on tunne, et ma just kastsin oma varbad uude maailma, mida tahan jätkata uurimist, nii et lisan jätkates sellest projektist uue haru töötama.

Sellegipoolest oli see minu esimene tõeline teekond mikrokontrollerite maailma, nii et olen õppimiskogemuse eest väga tänulik. Paarkümmend tundi, mis ma selle kallal töötasin, andsid mulle jõuluideid endale ja praktiliselt igale pereliikmele. Mul on kahju, et ma ei töötanud selle projektiga koos kellegi teisega, kuna oleksin võinud oma teel palju nõu ja juhiseid kasutada. Siiski õppisin isiklikult oma katsete kaudu palju, sealhulgas kolm päeva juukseid tõmmates, proovides siluda tarkvaraprobleemi, mida kunagi polnud (Nunchucki sisemine juhe oli katki).

Edasiliikumiseks on veel mitmeid võimalusi. Näiteks sooviksin kasutada Arduinot MIDI -liidese tüübina MIDI -kontrolleri ja kõrvaklappide vahel, et muuta MIDI -märkme parameetreid, kuna valida on nii palju (helitugevus, piirjoon, ümbriku sagedus, helikõrgus, modulatsioon, vibrato, nimetage seda). See võimaldaks palju rohkem paindlikkust, sealhulgas parameetrite vahetamist nuppudega ja lihtsalt akordi mängimist, mis pole C ++ massiivi kõvakodeeritud.

Soovitan: