Sisällysluettelo:

Wii Nunchuck -syntetisaattori: 4 vaihetta
Wii Nunchuck -syntetisaattori: 4 vaihetta

Video: Wii Nunchuck -syntetisaattori: 4 vaihetta

Video: Wii Nunchuck -syntetisaattori: 4 vaihetta
Video: Wii Remote and Nunchuck in Virtual Reality Steam VR (Tutorial) 2024, Marraskuu
Anonim
Wii Nunchuck -syntetisaattori
Wii Nunchuck -syntetisaattori

Wii -musiikin maailma:

Päätin lopulta yhdistää rakkauteni musiikkiin pieneen ohjelmointikokemukseen, jonka olen saanut viime vuosina. Olen ollut kiinnostunut oman soittimen luomisesta siitä lähtien, kun näin koulussani Tod Machoverin puheen. Jos et tunne hänen työtään, anna hänelle Google, koska hän on rikkonut musiikin, tekniikan ja niiden leikkausrajoja jo useiden vuosien ajan (MIT -medialaboratoriot, Rock Band, Guitar Hero jne.).).

Olen liittänyt Nunchuckini Arduino Unoon, joka toimii Mozzin äänisynteesikirjastossa, koska molempien online-käyttö on hyvin dokumentoitua. Käytän helpottamiseksi WiiChuck -leipälauta -sovitinta, joka kytketään suoraan Arduinoon. Tämä suhteellisen yksinkertainen projekti pelaa useita kenttiä riippuen Nunchuckin kiihtyvyysmittarista mitatusta noususta (YZ-Plane). Ohjaussauvan Y -arvo kartoitetaan vahvistukseen, jotta äänenvoimakkuus olisi kovempi tai pehmeämpi. Se muuttaa myös sointuja Z-painikkeesta riippuen ja kytkee vaihemodulaatiokuoren päälle, kun C-painiketta painetaan. Kirjekuoren taajuutta muutetaan sitten rullalla mitattuna Nunchuckista (kuva kääntämällä nuppia).

Resurssit:

  • 1 x Arduino Uno
  • 1 x Wii Nunchuck
  • 1 x WiiChuck -sovitin
  • 1 x leipälautayhteensopiva 3,5 mm: n stereoliitin
  • 1 x 3,5 mm: n äänikaapeli
  • 1 x jonkinlainen kaiutin (Voit liittää summerin aluksi testataksesi sen
  • 4-5 eri värin johtoa

Valinnainen, mutta suositeltava:

  • 1 x 330 ohmin vastus
  • 1 x.1 uF kondensaattori

Vaihe 1: Liitä NunChuck

Kytkeminen NunChuck -laitteeseen
Kytkeminen NunChuck -laitteeseen
Kytkeminen NunChuck -laitteeseen
Kytkeminen NunChuck -laitteeseen
Kytkeminen NunChuck -laitteeseen
Kytkeminen NunChuck -laitteeseen

Kopioi/liitä WiiChuck -luokka Arduinon leikkikentästä. Tarvitsemme version, jossa on PWR- ja GND -nastojen ilmoitus. Tallenna se nimellä WiiChuck.h ja säilytä se samassa hakemistossa kuin projektisi.

Kopioi/liitä seuraava seuraava Arduino IDE: hen ja lataa se.

#Sisällytä "Wire.h" //#sisältää "WiiChuckClass.h" // todennäköisesti sen WiiChuck.h meille muille. #include "WiiChuck.h" WiiChuck -istukka = WiiChuck ();

void setup () {

// nunchuck_init (); Sarja.alku (115200); istukka.begin (); chuck.update (); //chuck.calibrateJoy (); }

void loop () {

viive (20); chuck.update ();

Sarjanjälki (chuck.readPitch ());

Serial.print (","); Sarjanjälki (chuck.readRoll ()); Serial.print (",");

Sarjajälki (chuck.readJoyX ());

Serial.print (","); Sarjanjälki (chuck.readJoyY ()); Serial.print (",");

if (chuck.buttonZ) {

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

Serial.print (",");

// ei funktio // if (chuck.buttonC ()) {

if (istukka.buttonC) {Sarjajälki ("C"); } else {Serial.print ("-"); }

Sarja.println ();

}

Irrota Arduino virtalähteestä ja liitä WiiChuck-sovitin Arduinon analogisiin nastoihin 2-5.

Kytke virta uudelleen ja varmista, että Nunchuckin arvot lähetetään Arduinoosi ja tulostetaan sarjamonitoriin. Jos et näe muutoksia numeroissa, varmista, että yhteydet ovat hyvät ja että Nunchuck toimii. Yritin muutaman päivän yrittää korjata ohjelmistoja ennen kuin huomasin, että Nunchuckin lanka oli sisäisesti rikki!

Seuraavaksi kiinnitämme kaiken Mozziin…

Vaihe 2: Tutustu Mozziin

Tutustu kohteeseen Mozzi
Tutustu kohteeseen Mozzi

Ensin sinun on ladattava Mozzin uusin versio. Niitä ruokkii lahjoitukset, joten lahjoita, jos sinusta tuntuu siltä, ja lataa kirjasto. Voit lisätä sen kirjastoihisi helposti valitsemalla Luonnos> Kirjastot> Lisää. ZIP -kirjasto… Arduino IDE: stä.

Nyt liitämme 3,5 mm: n kuulokeliitännän leipälevyyn ja Arduinoon, jotta voimme muodostaa sen helposti myöhemmin (voit irrottaa Nunchuckin ja sovittimen pistorasiasta).

  1. Kytke jakkisi levyn oikeaan alakulmaan, jotta saat tilaa muille. Tunkin tulee olla 5 nastaa leveä.
  2. Kytke keskirivi maahan maadoitusjohdolla.
  3. Liitä pistokkeen ylin rivi yllä olevaan tyhjään riviin (kuvan rivi 10). Tämä on äänisignaalia johtava johto.
  4. Kytke myös digitaalinen nasta ~ 9 riville 10.
  5. Yhdistä Arduino -laitteesi Ground leipälevyn maadoituskiskoon.
  6. Sinun ei välttämättä tarvitse käyttää vastusta ja kondensaattoria vielä, mutta saatat huomata voimakkaan äänen, jos et tee sitä. Se toimii alipäästösuodattimena, joka poistaa yli 15 kHz: n taajuudet.

Avaa Mozzin Sinewave -luonnos Arduino IDE: ssä valitsemalla Tiedosto> Esimerkit> Mozzi> Perusteet> Sinewave. Tämä on lähinnä Mozzin vastine "Hello World".

Lataa luonnos ja liitä kaiutin leipälevylle. Voit myös käyttää summeria, jos et ole johdotanut leipälevyä ääniliitäntään.

Jos et kuule jatkuvasti A4 (440 Hz) kaiuttimesta, varmista, että kaikki liitännät ovat kunnossa ja yritä uudelleen.

Seuraavaksi yhdistämme Nunchuckin Arduinoon!

Vaihe 3: Yhdistä kaikki

Kokonaisuuden yhdistäminen
Kokonaisuuden yhdistäminen

Nyt aiomme käyttää Nunchuckin rullan arvoa muuttaaksesi Sinewaven taajuutta.

Valitse Arduino IDE: stä Tiedosto> Esimerkit> Mozzi> Anturit> Pietsotaajuus

Meidän on lisättävä tähän koodiin muutama rivi, jotta se toimisi Nunchuckin kanssa. Lisää sisälly WiiChuck -kirjastoon ja luo WiiChuck -objekti, jonka nimi on istukka. Voit myös kommentoida PIEZO_PIN -ilmoitusta tai poistaa sen, koska emme käytä sitä.

#Sisällytä "WiiChuck. H"

WiiChuck -istukka = WiiChuck (); // const int PIEZO_PIN = 3; // aseta pietson analoginen tulotappi

Nyt asennuksessa meidän on lisättävä seuraava:

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

ja lopuksi meidän on muutettava muutamia asioita updateControlissa ():

void updateControl () {

chuck.update (); // hanki uusimmat nunchuck -tiedot // lue piezo // int piezo_value = mozziAnalogRead (PIEZO_PIN); // arvo on 0-1023 int piezo_value = map (Kommentoi piezo_value -riviä ja lisää seuraava alla:

void updateControl () {chuck.update (); // hanki uusimmat nunchuck -tiedot // lue piezo // int piezo_value = mozziAnalogRead (PIEZO_PIN); // arvo on 0-1023 // Emme tarvitse yllä olevaa riviä, mutta miksi et yhdistä rullaa samaan alueeseen? int piezo_value = kartta (chuck.readRoll (), -180, 180, 0 1023);

Lähetä koodi ja taajuus vastaavat Nunchuck's Rollia. Yritä yhdistää se eri taajuusalueille. Jos et ole huomannut tarkemmin alla olevassa luonnoksessa, anturin arvo kerrotaan 3: lla, joten toistamme tällä hetkellä ääniä välillä 0 Hz - noin 3000 Hz.

Vaihe 4: Viimeiset kosketukset

Viimeiset kosketukset
Viimeiset kosketukset

Nyt olet valmis lataamaan koodin lopullisen version, jonka olen koonnut edellisestä vaiheesta, ja muutamia muita Mozzin esimerkkejä (Phase_Mod_Envelope ja tarkasti Control_Gain). Elämäni helpottamiseksi sisällytin myös tiedoston nimeltä pitches.h, joka yksinkertaisesti määrittelee taajuusarvot tutuilla nuotin nimillä (esim. NOTE_A4).

Ehdotan Mozzin dokumentaation lukemista, koska suurin osa koodista on peräisin esimerkeistä lukuun ottamatta Nunchuckin koodia.

Tässä on linkki Git -arkistooni. Kaikki tärkeät tiedostot ovat mukana, paitsi Mozzi -kirjasto, jonka sinun pitäisi saada heidän verkkosivustoltasi, jotta se on ajan tasalla. Lataa WiiMusic.ino ja lataa se laitteellesi kuullaksesi miltä se kuulostaa. Ehdotan, että pelaat muuttuvien parametrien kanssa (muuta kartta -alueita, jaa/kerro numerot jne.), Sillä näin löysin etsimäni äänen.

Heijastus

En koe olevani aivan valmis. Tämä ei tarkoita sitä, ettenkö olisi tyytyväinen projektiin tai sen tuottamaan ääneen, mutta minusta tuntuu, että upotin varpaani uuteen maailmaan, jota haluan tutkia jatkuvasti, joten lisään uuden haaran tästä projektista jatkaessani työskennellä.

Silti tämä oli ensimmäinen todellinen matkani mikrokontrollerien maailmaan, joten olen erittäin kiitollinen oppimiskokemuksesta. Noin kaksikymmentä tuntia, jotka vietin sen parissa, antoivat minulle jouluideoita itselleni ja käytännössä jokaiselle perheelleni. Olen hieman pahoillani siitä, että en työskennellyt tämän projektin kanssa jonkun muun kanssa, koska olisin voinut käyttää paljon neuvoja ja opastusta matkan varrella. Kuitenkin olen henkilökohtaisesti oppinut paljon kokeistani, mukaan lukien kolme päivää hiukseni vetämisestä ulos yrittämällä korjata ohjelmisto -ongelmaa, jota ei koskaan ollut (Nunchuckin sisäinen johto oli rikki).

Edessä on vielä useita mahdollisuuksia. Haluaisin esimerkiksi käyttää Arduinoa MIDI -rajapintana MIDI -ohjaimen ja kuulokeliitännän välillä MIDI -muistiinpanon parametrien muuttamiseksi, koska valittavana on niin paljon (äänenvoimakkuus, raja, kirjekuorien taajuus, sävelkorkeus, modulaatio, vibrato, voit nimetä sen). Tämä antaisi paljon enemmän joustavuutta, mukaan lukien parametrien vaihtaminen painikkeilla ja yksinkertaisesti soitto soittimella, jota ei ole koodattu C ++ -taulukkoon.

Suositeltava: