Tartalomjegyzék:
- 1. lépés: A NunChuck csatlakoztatása
- 2. lépés: Ismerkedés Mozzi -val
- 3. lépés: Összerakni
- 4. lépés: Utolsó érintések
Videó: Wii Nunchuck szintetizátor: 4 lépés
2024 Szerző: John Day | [email protected]. Utoljára módosítva: 2024-01-30 09:39
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
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
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).
- 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.
- Csatlakoztassa a középső sort a földhöz egy áthidaló vezetékkel.
- Csatlakoztassa az aljzat legfelső sorát a fenti üres sorhoz (a kép 10. sora). Ez a vezeték vezeti az audio jelet.
- Csatlakoztassa a ~ 9 -es digitális tűt a 10. sorhoz is.
- Csatlakoztassa az Arduino Ground -ját a kenyértábla földi sínjéhez.
- 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
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
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:
Erősítő szintetizátor (szúnyog I): 6 lépés
Arpeggiating Synthesizer (Mosquito I): A Mosquito I egy kicsi arpeggifikáló szintetizátor, amely egy Arduino Nano -t és a Mozzi hangszintézis könyvtárat használja. Több mint húsz 8 lépéses sorozatot tud lejátszani, de tetszés szerinti számú egyéni sorozatot hozzáadhat. Összeállítása viszonylag egyszerű, és nem
Vizes szintetizátor MakeyMakey és Scratch segítségével: 6 lépés (képekkel)
Vízszintetizátor a MakeyMakey és a Scratch segítségével: A MakeyMakey használata lenyűgöző dolog, ha különböző anyagokat kapcsolókká vagy gombokká alakít, és így mozdulatokat vagy hangokat vált ki a számítógépen. Az ember megtanulja, melyik anyag vezeti a gyengeáramú impulzust, és kitalálhat és kísérletezhet az
Félelmetes analóg szintetizátor/orgona csak diszkrét összetevők használatával: 10 lépés (képekkel)
Félelmetes analóg szintetizátor/orgona, csak diszkrét komponenseket használva: Az analóg szintetizátorok nagyon menőek, de meglehetősen nehéz elkészíteni őket. Ezért szerettem volna olyan egyszerűt készíteni, amennyire csak lehet, így működése könnyen érthető. Ahhoz, hogy működjön, szükség van néhány alapvető aláramkörre: Egy egyszerű oszcillátor rezisztens
Moduláris szintetizátor tápegység: 10 lépés (képekkel)
Moduláris szintetizátor tápegysége: Ha moduláris szintetizátort épít, akkor biztosan szüksége lesz egy tápegységre. A legtöbb moduláris szintetizátor kettős sínrendszert igényel (jellemzően 0V, +12V és -12V), és hasznos lehet egy 5V -os sín is, ha tervezi
Vezeték nélküli Wii Nunchuck vezérelt Arduino: 7 lépés
Vezeték nélküli Wii Nunchuck által vezérelt Arduino: Használjon teljesen módosítatlan vezeték nélküli Wii & Nbsuck vezérlőrendszert bármely Arduino -alapú projekthez. Nincs hozzáadott rádió adó/vevő páros stb. Ez az utasítás némi tapasztalatot feltételez az Arduino mikrovezérlővel kapcsolatban. A rádió