Tartalomjegyzék:

Wii Nunchuck szintetizátor: 4 lépés
Wii Nunchuck szintetizátor: 4 lépés

Videó: Wii Nunchuck szintetizátor: 4 lépés

Videó: Wii Nunchuck szintetizátor: 4 lépés
Videó: Nunchuk module prototype 2024, Július
Anonim
Wii Nunchuck szintetizátor
Wii Nunchuck szintetizátor

A Wii zene világa:

Úgy döntöttem, hogy végre összekapcsolom a zene iránti szeretetemet azzal a kis programozási tapasztalattal, amelyet az elmúlt években kaptam. Azóta érdekel, hogy saját hangszert készítsek, mióta láttam az iskolában Tod Machover előadását. Ha nem ismerné munkásságát, adjon neki egy Google -t, mivel már évek óta feszegeti a zene, a technológia és azok metszéspontjainak határait (MIT médialaboratóriumok, Rock Band, Guitar Hero stb.)).

A Nunchuck-ot a Mozzi hangszintézis könyvtárában futó Arduino Uno-hoz kötöttem, mindkettő jól dokumentált online használata miatt. A könnyebbség kedvéért WiiChuck kenyérsütő -adaptert használok, amely közvetlenül az Arduino -hoz csatlakozik. Ez a viszonylag egyszerű projekt a Nunchuck gyorsulásmérőjével mért emelkedés (YZ-sík) függvényében egy sor pályát játszik le. A joystick Y -értéke a nyereséghez van hozzárendelve, hogy a hangmagasság hangosabb vagy lágyabb legyen. Ezenkívül megváltoztatja az akkordokat a Z-gomb függvényében, és bekapcsolja a fázismodulációs borítékot, amikor megnyomja a C-gombot. A boríték frekvenciáját ezután a Nunchuckból mért tekercs segítségével módosítják (a kép elforgatása).

Erőforrások:

  • 1 x Arduino Uno
  • 1 x Wii Nunchuck
  • 1 x WiiChuck adapter
  • 1 x kenyérsütőlappal kompatibilis 3,5 mm -es női sztereó jack
  • 1 x 3,5 mm -es audio kábel
  • 1 x valamilyen hangszóró (teszteléshez először csatlakoztathat egy hangjelzőt
  • 4-5 különböző színű huzal

Opcionális, de ajánlott:

  • 1 x 330 Ohm ellenállás
  • 1 x.1 uF kondenzátor

1. lépés: A NunChuck csatlakoztatása

A NunChuck csatlakoztatása
A NunChuck csatlakoztatása
A NunChuck csatlakoztatása
A NunChuck csatlakoztatása
A NunChuck csatlakoztatása
A NunChuck csatlakoztatása

Másolja/illessze be a WiiChuck osztályt az Arduino Playgroundból. Szükségünk lesz a PWR és GND csapok deklarációjával ellátott verzióra. Mentse el WiiChuck.h néven, és tartsa ugyanabban a könyvtárban, mint a projektje.

Most másolja/illessze be az alábbiakat az Arduino IDE -be, és töltse fel.

#include "Wire.h" //#include "WiiChuckClass.h" // valószínűleg a WiiChuck.h a többiek számára. #include "WiiChuck.h" WiiChuck tokmány = WiiChuck ();

void setup () {

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

void loop () {

késleltetés (20); chuck.update ();

Serial.print (chuck.readPitch ());

Serial.print (","); Serial.print (chuck.readRoll ()); Serial.print (",");

Serial.print (chuck.readJoyX ());

Serial.print (","); Soros.nyomat (chuck.readJoyY ()); Serial.print (",");

if (chuck.buttonZ) {

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

Serial.print (",");

// nem függvény // if (chuck.buttonC ()) {

if (chuck.buttonC) {Soros.nyomtatás ("C"); } else {Serial.print ("-"); }

Sorozat.println ();

}

Húzza ki az Arduino áramellátását, és csatlakoztassa a WiiChuck adaptert az Arduino Analog Pins 2-5 csatlakozójához.

Csatlakoztassa újra az áramellátáshoz, és győződjön meg arról, hogy a Nunchuck értékeit elküldi az Arduino készülékére, és kinyomtatja a soros monitorra. Ha nem lát változást a számokban, győződjön meg arról, hogy a kapcsolatok megfelelőek, és a Nunchuck működik. Néhány napot a szoftverek kijavításával töltöttem, mielőtt rájöttem, hogy a Nunchuck vezetékem belsőleg megszakadt!

Ezután mindent összekötünk Mozzival…

2. lépés: Ismerkedés Mozzi -val

Mozzi megismerése
Mozzi megismerése

Először le kell töltenie a Mozzi legújabb verzióját. Adományok táplálják őket, ezért adományozzon, ha úgy érzi, hogy hajlandó, és töltse le a könyvtárat. Könnyen hozzáadhatja könyvtáraihoz a Vázlat> Könyvtárak>. ZIP könyvtár hozzáadása… paranccsal az Arduino IDE -ből.

Most csatlakoztatjuk a 3,5 mm -es fejhallgató -csatlakozót a kenyértáblához és az Arduino -hoz, hogy később könnyen csatlakozhassunk hozzá (egyelőre kihúzhatja a Nunchuck -ot és az adaptert).

  1. Csatlakoztassa a Jack -et a tábla jobb alsó sarkához, hogy legyen hely a többi számára. Az emelőnek 5 csap szélesnek kell lennie.
  2. Csatlakoztassa a középső sort a földhöz egy áthidaló vezetékkel.
  3. Csatlakoztassa az aljzat legfelső sorát a fenti üres sorhoz (a kép 10. sora). Ez a vezeték vezeti az audio jelet.
  4. Csatlakoztassa a ~ 9 -es digitális tűt a 10. sorhoz is.
  5. Csatlakoztassa az Arduino Ground -ját a kenyértábla földi sínjéhez.
  6. Még nem feltétlenül kell használnia az ellenállást és a kondenzátort, de előfordulhat, hogy nagy csikorgást észlel. Aluláteresztő szűrőként működik a ~ 15 kHz feletti frekvenciák kiküszöbölésére.

Nyissa meg a Mozzi Sinewave vázlatát az Arduino IDE programban a Fájl> Példák> Mozzi> Alapok> Sinewave menüpont kiválasztásával. Ez lényegében Mozzi "Hello World" megfelelője.

Töltse fel a vázlatot, és csatlakoztasson egy hangszórót a kenyértáblához. Használhat zümmögőt is, ha még nem csatlakoztatta a kenyértáblát az audiocsatlakozóhoz.

Ha nem hall egy állandó A4 -t (440 Hz) a hangszóróból, győződjön meg róla, hogy minden kapcsolat megfelelő, és próbálja újra.

Ezután összekapcsoljuk a Nunchuckot az Arduino -val!

3. lépés: Összerakni

Összerakni
Összerakni

Most a Nunchuck tekercsértékét használjuk a szinuszhullámok frekvenciájának megváltoztatására.

Az Arduino IDE programban válassza a Fájl> Példák> Mozzi> Érzékelők> Piezo frekvencia lehetőséget

Hozzá kell adnunk néhány sort ehhez a kódhoz, hogy működjön a Nunchuck. Adjon hozzá egy elemet a WiiChuck könyvtárhoz, és példányosítson egy Chuck nevű WiiChuck objektumot. Megjegyzést fűzhet a PIEZO_PIN nyilatkozatához, vagy egyszerűen törölheti, mivel nem fogjuk használni.

#include "WiiChuck. H"

WiiChuck tokmány = WiiChuck (); // const int PIEZO_PIN = 3; // állítsa be a piezo analóg bemeneti érintkezőjét

A telepítés során a következőket kell hozzáadnunk:

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

és végül meg kell változtatnunk néhány dolgot az updateControl () -ban:

void updateControl () {

chuck.update (); // a legfrissebb nunchuck adatok beszerzése // a piezo olvasása // int piezo_value = mozziAnalogRead (PIEZO_PIN); // értéke 0-1023 int piezo_value = map (Írja be megjegyzésbe a piezo_value értéket beállító sort, és tegye alatta a következőt:

void updateControl () {chuck.update (); // a legfrissebb nunchuck adatok beszerzése // a piezo olvasása // int piezo_value = mozziAnalogRead (PIEZO_PIN); // érték 0-1023 // Nincs szükségünk a fenti sorra, de miért ne rendeljük a tekercset ugyanarra a tartományra? int piezo_value = map (chuck.readRoll (), -180, 180, 0 1023);

Töltse fel a kódot és a gyakoriságot a Nunchuck tekercsének. Próbálja leképezni különböző frekvenciatartományokra. Ha még nem vette észre alább a vázlatban, akkor az érzékelőből származó értéket megszorozzuk 3 -mal, így jelenleg 0 Hz és körülbelül 3000 Hz közötti hangokat játszunk le.

4. lépés: Utolsó érintések

Utolsó érintések
Utolsó érintések

Most már készen áll arra, hogy feltöltse a kód végleges verzióját, amelyet az előző lépésből összegyűjtöttem, és néhány további Mozzi -példát (pontosabban a Phase_Mod_Envelope és a Control_Gain). Hogy megkönnyítsem az életemet, mellékeltem egy pitches.h nevű fájlt is, amely egyszerűen meghatározza a gyakorisági értékeket ismerős jegyzetnevekkel (azaz NOTE_A4).

Javaslom, hogy olvassa el a Mozzi dokumentációját, mivel a kód nagy része egyenesen a példákból származik, kivéve a Nunchuck kódját.

Itt egy link a Git tárhelyemre. Minden fontos fájl benne van, kivéve a Mozzi könyvtárat, amelyet a webhelyéről kell beszerezni, hogy naprakész legyen. Töltse le a WiiMusic.ino -t, és töltse fel a készülékére, hogy meghallgassa, hogyan hangzik. Javaslom, hogy játsszon az általam módosított paraméterekkel (változtassa meg a térképtartományokat, ossza/szorozza meg a számokat stb.), Mivel így találtam meg a keresett hangot.

Visszaverődés

Nem érzem úgy, hogy teljesen kész vagyok. Ez nem azt jelenti, hogy nem vagyok elégedett a projekttel vagy a hangzással, de úgy érzem, hogy csak a lábujjaimat merítettem egy új világba, amelyet továbbra is szeretnék felfedezni, így a folytatás során hozzáadok egy új ágat a projektből dolgozni.

Ennek ellenére ez volt az első igazi utam a mikrokontrollerek világába, ezért nagyon hálás vagyok a tanulási élményért. Az a húsz óra, amit ezen dolgoztam, karácsonyi ötleteket adott magamnak és gyakorlatilag minden családtagomnak. Kissé sajnálom, hogy nem mással dolgoztam ezen a projekten, mivel rengeteg tanácsot és útmutatást tudtam volna használni az út során. Én azonban személyesen sokat tanultam a kísérleteim során, többek között három napig húztam ki a hajamat, és megpróbáltam elhárítani egy olyan szoftverproblémát, amely soha nem létezett (a Nunchuck belső vezetéke megszakadt).

Még számos lehetőség van a továbblépésre. Például szívesen használnám az Arduino -t MIDI interfész típusaként a MIDI vezérlő és a fejhallgató között, hogy megváltoztassam a MIDI jegyzet paramétereit, mivel nagyon sok közül lehet választani (hangerő, levágás, borítékfrekvencia, hangmagasság hajlítás), moduláció, vibrato, nevezd meg). Ez sokkal nagyobb rugalmasságot tesz lehetővé, beleértve a paraméterek gombokkal történő váltását, és egyszerűen egy akkord lejátszását, amely nincs C ++ tömbbe kódolva.

Ajánlott: