Obsah:

Syntetizátor Wii Nunchuck: 4 kroky
Syntetizátor Wii Nunchuck: 4 kroky

Video: Syntetizátor Wii Nunchuck: 4 kroky

Video: Syntetizátor Wii Nunchuck: 4 kroky
Video: Nunchuk module prototype 2024, November
Anonim
Wii Nunchuck syntetizátor
Wii Nunchuck syntetizátor

Svet hudby Wii:

Rozhodol som sa konečne spojiť svoju lásku k hudbe s trochou skúseností s programovaním, ktoré som získal za posledných niekoľko rokov. O vytvorenie vlastného nástroja som sa zaujímal odvtedy, čo som v škole videl prednášku Toda Machovera. Ak nie ste oboznámení s jeho prácou, dajte mu Google, pretože už niekoľko rokov posúva hranice hudby, technológie a ich priesečníky (mediálne laboratóriá MIT, rocková kapela, gitarový hrdina atď.)).

Pripojil som svoj Nunchuck k Arduino Uno, ktoré beží na knižnici syntézy zvuku Mozzi, kvôli dobre zdokumentovanému použitiu oboch online. Na uľahčenie používam adaptér na dosku WiiChuck, ktorý sa pripája priamo k Arduinu. Tento relatívne jednoduchý projekt hrá sériu výšok v závislosti od Pitch (YZ-Plane) meranej z Nunchuckovho akcelerometra. Hodnota Y joysticku je namapovaná na zosilnenie, aby bolo ihrisko hlasnejšie alebo mäkšie. Tiež mení akordy v závislosti od tlačidla Z a po stlačení tlačidla C zapína obálku fázovej modulácie. Frekvencia obálky sa potom upraví pomocou zvitku meraného z Nunchucku (obrázok otáčajúci sa gombíkom).

Zdroje:

  • 1 x Arduino Uno
  • 1 x Wii Nunchuck
  • 1 x adaptér WiiChuck
  • 1 x 3,5 mm stereo stereofónny konektor kompatibilný s doštičkou
  • 1 x 3,5 mm zvukový kábel
  • 1 x nejaký reproduktor (Na vyskúšanie môžete najskôr zapojiť bzučiak
  • 4-5 Drôty rôznych farieb

Voliteľné, ale odporúčané:

  • 1 x odpor 330 ohmov
  • 1 x.1 uF kondenzátor

Krok 1: Pripojte svoj NunChuck

Pripojte svoj NunChuck
Pripojte svoj NunChuck
Pripojte svoj NunChuck
Pripojte svoj NunChuck
Pripojte svoj NunChuck
Pripojte svoj NunChuck

Skopírujte/prilepte triedu WiiChuck z Arduino Playground. Budeme potrebovať verziu s deklaráciou pinov PWR a GND. Uložte ho ako WiiChuck.h a uložte ho do rovnakého adresára ako váš projekt.

Teraz skopírujte/prilepte nasledujúce položky do IDE Arduino a nahrajte ich.

#include "Wire.h" //#include "WiiChuckClass.h" // s najväčšou pravdepodobnosťou je to WiiChuck.h pre nás ostatných. #include "WiiChuck.h" skľučovadlo WiiChuck = WiiChuck ();

neplatné nastavenie () {

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

prázdna slučka () {

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

// nie je funkcia // if (chuck.buttonC ()) {

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

Serial.println ();

}

Odpojte zariadenie Arduino od napájania a pripojte adaptér WiiChuck k analógovým kolíkom 2-5 na zariadení Arduino.

Znova pripojte napájanie a zaistite, aby sa hodnoty Nunchucku odosielali do vášho Arduina a tlačili sa na sériový monitor. Ak na číslach nevidíte žiadnu zmenu, uistite sa, že máte dobré kontakty a že Nunchuck funguje. Strávil som niekoľko dní pokusom o opravu softvéru, kým som zistil, že môj Nunchuckov drôt bol vnútorne zlomený!

Ďalej všetko spojíme s Mozzim…

Krok 2: Zoznámte sa s Mozzi

Zoznámte sa s Mozzim
Zoznámte sa s Mozzim

Najprv si musíte stiahnuť najnovšiu verziu programu Mozzi. Živia sa darmi, takže ak máte pocit, že majú záujem, darujte ich a stiahnite si knižnicu. Môžete ho ľahko pridať do svojich knižníc výberom položky Skica> Knižnice> Pridať knižnicu. ZIP … z Arduino IDE.

Teraz pripojíme 3,5 mm konektor pre slúchadlá k breadboardu a Arduinu, aby sme sa k nemu neskôr mohli ľahko pripojiť (zatiaľ môžete odpojiť Nunchuck a adaptér).

  1. Pripojte konektor do pravého dolného rohu dosky a uvoľnite tak miesto pre ostatné. Zdvihák by mal mať šírku 5 pinov.
  2. Pripojte stredný rad k zemi prepojovacím káblom.
  3. Pripojte horný rad zdviháka k prázdnemu radu vyššie (riadok 10 na obrázku). Toto je drôt prenášajúci zvukový signál.
  4. Pripojte digitálny kolík ~ 9 aj k riadku 10.
  5. Pripojte Ground na vašom Arduino k uzemňovacej lište na doske.
  6. Zatiaľ nemusíte nutne používať odpor a kondenzátor, ale ak nie, môžete si všimnúť vysoký zvuk. Funguje ako dolnopriepustný filter na elimináciu frekvencií nad ~ 15 kHz.

Otvorte skicu Mozziho sinewave v Arduino IDE výberom položky Súbor> Príklady> Mozzi> Základy> Sinewave. Toto je v podstate Mozziho ekvivalent „Hello World“.

Nahrajte náčrt a zapojte reproduktor do vývesky. Bzučiak môžete použiť aj vtedy, ak ste prepojovaciu dosku zatiaľ nepripojili k zvukovému konektoru.

Ak z reproduktora nepočujete konštantný formát A4 (440 Hz), uistite sa, že sú všetky pripojenia v poriadku, a skúste to znova.

Ďalej pripojíme Nunchuck k Arduinu!

Krok 3: Dajte to všetko dohromady

Dávať to všetko dokopy
Dávať to všetko dokopy

Teraz použijeme hodnotu zvitku z Nunchucku na zmenu frekvencie sinusovky.

Z Arduino IDE vyberte Súbor> Príklady> Mozzi> Senzory> Piezo frekvencia

Aby tento kód fungoval s Nunchuckom, budeme musieť do tohto kódu pridať niekoľko riadkov. Pridajte zahrnutie do knižnice WiiChuck a vytvorte inštanciu objektu WiiChuck s názvom chuck. Môžete tiež komentovať vyhlásenie PIEZO_PIN alebo ho jednoducho odstrániť, pretože ho nebudeme používať.

#include "WiiChuck. H"

Skľučovadlo WiiChuck = WiiChuck (); // const int PIEZO_PIN = 3; // nastavenie analógového vstupného kolíka pre piezo

Teraz v nastavení budeme musieť pridať nasledujúce:

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

a nakoniec budeme musieť zmeniť niekoľko vecí v updateControl ():

void updateControl () {

chuck.update (); // získať najnovšie údaje o nunchucku // prečítať piezo // int piezo_value = mozziAnalogRead (PIEZO_PIN); // hodnota je 0-1023 int piezo_value = mapa (Okomentujte riadok, ktorý nastavuje hodnotu piezo_value, a nižšie pridajte nasledujúce:

void updateControl () {chuck.update (); // získať najnovšie údaje o nunchucku // prečítať piezo // int piezo_value = mozziAnalogRead (PIEZO_PIN); // hodnota je 0-1023 // riadok vyššie nepotrebujeme, ale prečo nemapovať rolku na rovnaký rozsah? int piezo_value = mapa (chuck.readRoll (), -180, 180, 0 1023);

Nahrajte kód a frekvencia by mala zodpovedať vášmu Nunchuck's Roll. Skúste to mapovať do rôznych frekvenčných rozsahov. Ak ste si nižšie v náčrte nevšimli, hodnota zo snímača sa vynásobí 3, takže v súčasnej dobe hráme tóny od 0 Hz do asi 3000 Hz.

Krok 4: Konečné dotyky

Záverečné dotyky
Záverečné dotyky

Teraz ste pripravení nahrať konečnú verziu kódu, ktorý som zostavil z predchádzajúceho kroku, a niekoľko ďalších príkladov Mozziho (presnejšie Phase_Mod_Envelope a Control_Gain). Aby som si uľahčil život, pridal som aj súbor s názvom pitches.h, ktorý jednoducho definuje hodnoty frekvencie známymi názvami poznámok (t.j. NOTE_A4).

Odporúčame prečítať si dokumentáciu Mozzi, pretože veľká časť kódu je priamo z príkladov, okrem kódu pre Nunchuck.

Tu je odkaz na moje úložisko Git. Zahrnuté sú všetky dôležité súbory okrem knižnice Mozzi, ktorú by ste mali získať z ich webových stránok, takže sú aktuálne. Stiahnite si WiiMusic.ino a nahrajte ho do svojho zariadenia, aby ste počuli, ako to znie. Navrhujem, aby ste sa pohrali s parametrami, ktoré mením (zmeňte rozsahy mapy, rozdeľte/vynásobte čísla atď.), Pretože takto som našiel konkrétny zvuk, ktorý som hľadal.

Odraz

Nemám pocit, že by som celkom skončil. To neznamená, že nie som spokojný s projektom alebo so zvukom, ktorý vydáva, ale mám pocit, že som si ponoril prsty na nohách do nového sveta, ktorý chcem stále skúmať, a tak budem v pokračovaní pridávať novú vetvu z tohto projektu. pracovať.

Napriek tomu to bola moja prvá skutočná cesta do sveta mikrokontrolérov, takže som veľmi vďačný za skúsenosti s učením. Asi dvadsať hodín, ktoré som na tom strávil, mi dalo vianočné nápady pre seba a prakticky pre každého člena mojej rodiny. Trochu ľutujem, že som na tomto projekte nespracoval s niekým iným, pretože som mohol počas cesty využiť množstvo rád a usmernení. Osobne som sa však počas svojich skúšok veľa naučil, vrátane troch dní vytrhávania vlasov pri pokuse o ladenie softvérového problému, ktorý nikdy neexistoval (vnútorný vodič v Nunchucku sa zlomil).

Vpred je stále množstvo možností. Napríklad by som rád používal Arduino ako typ MIDI rozhrania medzi MIDI ovládačom a výstupom pre slúchadlá na zmenu parametrov MIDI noty, pretože je z čoho vyberať (hlasitosť, prerušenie, frekvencia obálky, pitch bend), modulácia, vibrato, pomenujete to). To by umožnilo oveľa väčšiu flexibilitu vrátane prepínania parametrov pomocou tlačidiel a jednoduchého hrania akordu, ktorý nie je pevne zakódovaný do poľa C ++.

Odporúča: