Kazalo:

Wii Nunchuck sintetizator: 4 koraki
Wii Nunchuck sintetizator: 4 koraki

Video: Wii Nunchuck sintetizator: 4 koraki

Video: Wii Nunchuck sintetizator: 4 koraki
Video: Nunchuk module prototype 2024, Julij
Anonim
Wii Nunchuck sintetizator
Wii Nunchuck sintetizator

Svet glasbe Wii:

Odločil sem se, da bom ljubezen do glasbe končno združil z malo izkušnjami s programiranjem, ki sem jih pridobil v zadnjih nekaj letih. Ustvarjanje lastnega inštrumenta me zanima, odkar sem v svoji šoli videl govor Toda Machoverja. Če niste seznanjeni z njegovim delom, mu dajte Google, saj že vrsto let premika meje glasbe, tehnologije in njihovega preseka (medijski laboratoriji MIT, Rock Band, Guitar Hero itd.).

Svoj Nunchuck sem povezal z Arduino Uno, ki deluje v knjižnici za sintezo zvoka Mozzi, zaradi dobro dokumentirane uporabe obeh na spletu. Za lažjo uporabo uporabljam adapter za ploščo WiiChuck, ki se priključi neposredno v Arduino. Ta razmeroma preprost projekt predvaja vrsto višin, odvisno od višine (YZ-ravnina), merjene z merilnikom pospeška Nunchuck. Vrednost Y igralne palice je preslikana v dobiček, da bo glasnost glasnejša ali mehkejša. Prav tako spreminja akorde glede na gumb Z in vklopi ovojnico fazne modulacije, ko pritisnete gumb C. Frekvenco ovojnice nato spremenimo z zvitkom, izmerjenim iz Nunchucka (slika obrača gumb).

Viri:

  • 1 x Arduino Uno
  • 1 x Wii Nunchuck
  • 1 x WiiChuck adapter
  • 1 x 3,5 mm ženski stereo vtič, združljiv s ploščami
  • 1 x 3,5 mm avdio kabel
  • 1 x nekakšen zvočnik (najprej lahko priključite zvočni signal, da ga preizkusite
  • 4-5 žic različnih barv

Neobvezno, vendar priporočljivo:

  • 1 x 330 ohmski upor
  • 1 x.1 uF kondenzator

1. korak: Priključite svoj NunChuck

Priključite vaš NunChuck
Priključite vaš NunChuck
Priključite vaš NunChuck
Priključite vaš NunChuck
Priključite vaš NunChuck
Priključite vaš NunChuck

Kopirajte/prilepite razred WiiChuck z igrišča Arduino. Potrebovali bomo različico z deklaracijo zatičev PWR in GND. Shranite ga kot WiiChuck.h in ga hranite v istem imeniku kot vaš projekt.

Zdaj kopirajte/prilepite naslednje v Arduino IDE in ga naložite.

#include "Wire.h" //#include "WiiChuckClass.h" // najverjetneje njegov WiiChuck.h za nas ostale. #include "WiiChuck.h" WiiChuck chuck = WiiChuck ();

void setup () {

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

void loop () {

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

// ni funkcija // if (chuck.buttonC ()) {

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

Serial.println ();

}

Arduino odklopite iz napajanja in priključite adapter WiiChuck na analogne nožice 2-5 na vašem Arduinu.

Ponovno se povežite z napajanjem in se prepričajte, da se vrednosti Nunchucka pošiljajo na vaš Arduino in se natisnejo na serijski monitor. Če ne vidite sprememb v številkah, se prepričajte, da so povezave dobre in da Nunchuck deluje. Nekaj dni sem poskušal popraviti programsko opremo, preden sem spoznal, da je bila moja žica Nunchuck notranje prekinjena!

Nato bomo vse priklopili na Mozzija…

2. korak: Spoznavanje Mozzija

Spoznavanje Mozzija
Spoznavanje Mozzija

Najprej boste morali prenesti najnovejšo različico Mozzija. Poganjajo jih donacije, zato podarite, če se vam zdi tako naklonjeno, in naložite knjižnico. Z lahkoto ga lahko dodate v svoje knjižnice tako, da iz Arduino IDE izberete Sketch> Libraries> Add. ZIP Library….

Zdaj bomo 3,5 -milimetrski priključek za slušalke priključili na ploščo in Arduino, tako da se lahko pozneje enostavno povežemo z njim (zaenkrat lahko odklopite Nunchuck in adapter).

  1. Priključite Jack v spodnji desni kot plošče, da naredite prostor za ostale. Vtičnica mora biti široka 5 zatičev.
  2. Srednjo vrsto povežite z ozemljitvijo s skakalno žico.
  3. Zgornjo vrstico priključka povežite s prazno vrstico zgoraj (10. vrstica na sliki). To je žica, ki nosi zvočni signal.
  4. Digitalni pin ~ 9 priključite tudi v 10. vrsto.
  5. Priključite ozemljitev na svojem Arduinu na ozemljitveno tirnico na plošči.
  6. Še vedno vam ni treba uporabiti upora in kondenzatorja, če pa tega ne storite, boste morda opazili močno piščanje. Deluje kot nizkoprepustni filter za odpravo frekvenc nad ~ 15 kHz.

Odprite Mozzijevo skico Sinewave v Arduino IDE tako, da izberete Datoteka> Primeri> Mozzi> Osnove> Sinewave. To je v bistvu Mozzijev ekvivalent "Hello World".

Naložite skico in priključite zvočnik na ploščo. Uporabite lahko tudi zvočni signal, če plošče še niste priključili na avdio priključek.

Če iz zvočnika ne slišite konstantnega A4 (440Hz), se prepričajte, da so vse povezave dobre, in poskusite znova.

Nato bomo Nunchuck povezali z Arduinom!

Korak: Združite vse skupaj

Vse skupaj
Vse skupaj

Zdaj bomo uporabili vrednost roll -a iz Nunchucka za spreminjanje frekvence sinusnega vala.

V Arduino IDE izberite Datoteka> Primeri> Mozzi> Senzorji> Piezo frekvenca

Kodi bomo morali dodati nekaj vrstic, da bo delovala z Nunchuckom. V knjižnico WiiChuck dodajte vključitev in ustvarite primerek predmeta WiiChuck, imenovanega chuck. Izjavo o PIEZO_PIN lahko tudi komentirate ali pa jo preprosto izbrišete, ker je ne bomo uporabljali.

#include "WiiChuck. H"

WiiChuck chuck = WiiChuck (); // const int PIEZO_PIN = 3; // nastavimo pin analognega vhoda za piezo

Zdaj v nastavitvah bomo morali dodati naslednje:

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

in nazadnje bomo morali v updateControl () spremeniti nekaj stvari:

void updateControl () {

chuck.update (); // dobimo najnovejše podatke nunchucka // preberemo piezo // int piezo_value = mozziAnalogRead (PIEZO_PIN); // vrednost je 0-1023 int piezo_value = map (Komentirajte vrstico, ki nastavi piezo_value, in spodaj dodajte naslednje:

void updateControl () {chuck.update (); // dobimo najnovejše podatke nunchucka // preberemo piezo // int piezo_value = mozziAnalogRead (PIEZO_PIN); // vrednost je 0-1023 // Ne potrebujemo zgornje vrstice, ampak zakaj ne bi preslikali zvitka v isti obseg? int piezo_value = zemljevid (chuck.readRoll (), -180, 180, 0 1023);

Naložite kodo in frekvenca mora ustrezati vašemu Nunchuckovemu zvitku. Poskusite ga preslikati v različna frekvenčna območja. Če spodaj na skici niste opazili, se vrednost senzorja pomnoži s 3, zato trenutno predvajamo tone od 0 Hz do približno 3000 Hz.

4. korak: Zadnji dotiki

Zadnji dotiki
Zadnji dotiki

Zdaj ste pripravljeni naložiti končno različico kode, ki sem jo sestavil iz prejšnjega koraka, in še nekaj Mozzijevih primerov (natančneje Phase_Mod_Envelope in Control_Gain). Da bi si olajšal življenje, sem vključil tudi datoteko, imenovano pitches.h, ki preprosto definira vrednosti frekvence z znanimi imeni opomb (npr. NOTE_A4).

Predlagam, da preberete dokumentacijo Mozzi, saj je večina kode naravnost iz primerov, razen kode za Nunchuck.

Tukaj je povezava do mojega skladišča Git. Vse pomembne datoteke so vključene, razen knjižnice Mozzi, ki bi jo morali dobiti na njihovi spletni strani, da je posodobljena. Prenesite WiiMusic.ino in ga naložite v napravo, da slišite, kako zveni. Predlagam, da se poigrate s parametri, ki jih spreminjam (spremenite obseg zemljevida, delite/pomnožite številke itd.), Saj sem tako našel določen zvok, ki sem ga iskal.

Odsev

Ne zdi se mi, da sem končal. To ne pomeni, da nisem zadovoljen s projektom ali zvokom, ki ga oddaja, vendar se mi zdi, kot da sem ravno potopil prste v nov svet, ki ga želim še naprej raziskovati, zato bom med nadaljevanjem tega projekta dodal novo vejo delati.

Kljub temu je bilo to moje prvo pravo potovanje v svet mikrokrmilnikov, zato sem zelo hvaležen za učno izkušnjo. Osemindvajset ur, ki sem jih porabil za to, mi je dalo božične ideje zase in za skoraj vsakega člana svoje družine. Nekoliko obžalujem, da pri tem projektu nisem sodeloval z nekom drugim, saj bi lahko na tej poti uporabil veliko nasvetov in napotkov. Vendar sem se osebno na svojih preizkušnjah veliko naučil, vključno s tridnevnim odstranjevanjem las, ko sem poskušal odpraviti težavo s programsko opremo, ki je nikoli ni bilo (notranja žica v Nunchucku se je pretrgala).

Za naprej obstaja še kar nekaj možnosti. Na primer, rad bi uporabil Arduino kot vrsto vmesnika MIDI med krmilnikom MIDI in slušalkami za spreminjanje parametrov opombe MIDI, saj je na izbiro toliko (glasnost, mejna vrednost, frekvenca ovojnice, upogib naklona), modulacija, vibrato, poimenuj). To bi omogočilo veliko večjo prilagodljivost, vključno s preklapljanjem parametrov z gumbi in preprosto igranjem akorda, ki ni trdo kodiran v matriko C ++.

Priporočena: