Obsah:

Wii Nunchuck Synthesizer: 4 kroky
Wii Nunchuck Synthesizer: 4 kroky

Video: Wii Nunchuck Synthesizer: 4 kroky

Video: Wii Nunchuck Synthesizer: 4 kroky
Video: [ $9 ] DIY modular synth Wii nunchuck controller and Multi LFO / Joystic , Acceleration sensor 2024, Červenec
Anonim
Wii Nunchuck Synthesizer
Wii Nunchuck Synthesizer

Svět hudby Wii:

Rozhodl jsem se konečně spojit svou lásku k hudbě s trochou zkušeností s programováním, které jsem za posledních několik let získal. O vytvoření vlastního nástroje jsem se zajímal od té doby, co jsem ve své škole viděl proslov Toda Machovera. Pokud nejste obeznámeni s jeho prací, dejte mu Google, protože již několik let posouvá hranice hudby, technologie a jejich protnutí (mediální laboratoře MIT, rocková kapela, kytarový hrdina atd.)).

Díky dobře zdokumentovanému používání obou online jsem připojil svůj Nunchuck k Arduino Uno běžícím na knihovně zvukové syntézy Mozzi. Pro usnadnění používám adaptér WiiChuck, který se zapojuje přímo do Arduina. Tento relativně jednoduchý projekt hraje řadu výšek v závislosti na Pitch (YZ-Plane) měřeném z Nunchuckova akcelerometru. Hodnota Y joysticku je namapována na zesílení, aby bylo hřiště hlasitější nebo měkčí. Také mění akordy v závislosti na tlačítku Z a zapíná obálku fázové modulace po stisknutí tlačítka C. Frekvence obálky je poté upravena pomocí role měřené z Nunchucku (obrázek otáčením knoflíku).

Zdroje:

  • 1 x Arduino Uno
  • 1 x Wii Nunchuck
  • 1 x adaptér WiiChuck
  • 1 x 3,5 mm stereo stereo jack kompatibilní s breadboard
  • 1 x 3,5 mm audio kabel
  • 1 x nějaký reproduktor (Nejprve můžete zapojit bzučák a otestovat jej
  • 4-5 Dráty různých barev

Volitelné, ale doporučené:

  • 1 x odpor 330 ohmů
  • 1 x.1 uF kondenzátor

Krok 1: Zapojte NunChuck

Zapojte svůj NunChuck
Zapojte svůj NunChuck
Zapojte svůj NunChuck
Zapojte svůj NunChuck
Zapojte svůj NunChuck
Zapojte svůj NunChuck

Zkopírujte/vložte třídu WiiChuck z Arduino Playground. Budeme potřebovat verzi s deklarací pinů PWR a GND. Uložte jej jako WiiChuck.h a uložte jej do stejného adresáře jako váš projekt.

Nyní zkopírujte/vložte následující do Arduino IDE a nahrajte jej.

#include "Wire.h" //#include "WiiChuckClass.h" // s největší pravděpodobností jeho WiiChuck.h pro nás ostatní. #include "WiiChuck.h" WiiChuck chuck = WiiChuck ();

neplatné nastavení () {

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

prázdná smyčka () {

zpoždění (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 (",");

// není funkce // if (chuck.buttonC ()) {

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

Serial.println ();

}

Odpojte Arduino od napájení a připojte adaptér WiiChuck k analogovým pinům 2-5 na Arduinu.

Znovu připojte napájení a zajistěte, aby hodnoty Nunchucku byly odesílány do vašeho Arduina a vytištěny na sériový monitor. Pokud v číslech nevidíte žádnou změnu, ujistěte se, že máte dobré připojení a že Nunchuck funguje. Strávil jsem několik dní zkoušením opravit software, než mi došlo, že můj Nunchuckův drát byl vnitřně zlomený!

Dále vše připojíme k Mozzi…

Krok 2: Seznámení s Mozzi

Seznámení s Mozzi
Seznámení s Mozzi

Nejprve si budete muset stáhnout nejnovější verzi Mozzi. Živí je dary, proto přispějte, pokud se cítíte tak nakloněni, a stáhněte si knihovnu. Můžete jej snadno přidat do svých knihoven výběrem Sketch> Libraries> Add. ZIP Library… z Arduino IDE.

Nyní připojíme 3,5 mm konektor pro sluchátka k prkénku a Arduinu, abychom se k němu mohli snadno připojit později (prozatím můžete odpojit Nunchuck a adaptér).

  1. Zapojte Jack do pravého dolního rohu desky a uvolněte místo pro zbytek. Zvedák by měl být široký 5 pinů.
  2. Připojte střední řadu k zemi pomocí propojovacího vodiče.
  3. Připojte nejvyšší řadu zvedáku k prázdné řadě výše (řada 10 na obrázku). Toto je vodič nesoucí zvukový signál.
  4. Připojte také Digital Pin ~ 9 na řádek 10.
  5. Připojte Ground na vašem Arduinu k zemnící liště na breadboardu.
  6. Ještě nemusíte nutně používat odpor a kondenzátor, ale pokud ne, můžete si všimnout vysokého pískání. Funguje jako dolní propust, která eliminuje frekvence nad ~ 15 kHz.

Otevřete skicu Mozzi's Sinewave v Arduino IDE výběrem Soubor> Příklady> Mozzi> Základy> Sinewave. Toto je v podstatě Mozziho ekvivalent „Hello World“.

Nahrajte skicu a zapojte reproduktor na prkénko. Můžete také použít bzučák, pokud jste dosud nepropojili prkénko do zvukového konektoru.

Pokud z reproduktoru neslyšíte konstantní formát A4 (440 Hz), ujistěte se, že jsou všechna vaše připojení v pořádku, a zkuste to znovu.

Dále připojíme Nunchuck k Arduinu!

Krok 3: Dát to všechno dohromady

Dát to všechno dohromady
Dát to všechno dohromady

Nyní použijeme hodnotu převrácení z Nunchucku ke změně frekvence sinusové vlny.

Z Arduino IDE zvolte Soubor> Příklady> Mozzi> Senzory> Piezo frekvence

Aby tento kód fungoval s Nunchuckem, budeme muset přidat několik řádků. Přidejte zahrnutí do knihovny WiiChuck a vytvořte instanci objektu WiiChuck s názvem chuck. Můžete také okomentovat deklaraci PIEZO_PIN nebo ji jednoduše smazat, protože ji nebudeme používat.

#include "WiiChuck. H"

WiiChuck chuck = WiiChuck (); // const int PIEZO_PIN = 3; // nastavte analogový vstupní pin pro piezo

Nyní v nastavení budeme muset přidat následující:

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

a nakonec budeme muset změnit několik věcí v updateControl ():

void updateControl () {

chuck.update (); // získat nejnovější data nunchucku // přečíst piezo // int piezo_value = mozziAnalogRead (PIEZO_PIN); // hodnota je 0-1023 int piezo_value = mapa (Okomentujte řádek, který nastavuje piezo_value, a přidejte pod něj následující:

void updateControl () {chuck.update (); // získat nejnovější data nunchucku // přečíst piezo // int piezo_value = mozziAnalogRead (PIEZO_PIN); // hodnota je 0-1023 // Nepotřebujeme řádek výše, ale proč nemapovat roli na stejný rozsah? int piezo_value = mapa (chuck.readRoll (), -180, 180, 0 1023);

Nahrajte kód a frekvence by měla odpovídat vašemu Nunchuck's Roll. Zkuste jej namapovat na různé frekvenční rozsahy. Pokud jste si níže v náčrtu nevšimli, hodnota ze snímače se vynásobí 3, takže aktuálně hrajeme tóny od 0 Hz do přibližně 3000 Hz.

Krok 4: Poslední dotyky

Poslední dotyky
Poslední dotyky

Nyní jste připraveni nahrát finální verzi kódu, který jsem sestavil z předchozího kroku, a několik dalších příkladů Mozziho (přesněji Phase_Mod_Envelope a Control_Gain). Abych si usnadnil život, přidal jsem také soubor s názvem pitches.h, který jednoduše definuje hodnoty frekvence se známými názvy not (tj. NOTE_A4).

Doporučuji přečíst si dokumentaci Mozzi, protože velká část kódu je přímo z příkladů kromě kódu pro Nunchuck.

Zde je odkaz na mé úložiště Git. Zahrnuty jsou všechny důležité soubory kromě knihovny Mozzi, kterou byste měli získat z jejich webových stránek, takže je aktuální. Stáhněte si WiiMusic.ino a nahrajte jej do svého zařízení, abyste slyšeli, jak to zní. Navrhuji, abyste si pohráli s parametry, které měním (změňte rozsahy mapy, rozdělte/vynásobte čísla atd.), Protože tak jsem našel konkrétní zvuk, který jsem hledal.

Odraz

Nemám pocit, že bych úplně skončil. To neznamená, že nejsem spokojený s projektem nebo zvukem, který vydává, ale mám pocit, že jsem jen ponořil prsty do nového světa, který chci stále zkoumat, a tak budu pokračovat, přidám novou větev z tohoto projektu pracovat.

Přesto bylo řečeno, že to byla moje první skutečná cesta do světa mikrokontrolérů, takže jsem velmi vděčný za zkušenost s učením. Asi dvacet hodin, které jsem na tom strávil, mi dalo vánoční nápady pro sebe a prakticky pro každého člena mé rodiny. Trochu lituji, že jsem na tomto projektu nepracoval s někým jiným, protože jsem mohl na cestě použít spoustu rad a pokynů. Osobně jsem se však během svých zkoušek hodně naučil, včetně třídenního vytrhávání vlasů při pokusu o ladění softwarového problému, který tu nikdy nebyl (přerušil se vnitřní drát v Nunchucku).

Stále existuje řada možností, jak se pohnout kupředu. Například bych rád použil Arduino jako typ MIDI rozhraní mezi MIDI kontrolérem a výstupem pro sluchátka pro změnu parametrů MIDI noty, protože je jich tolik na výběr (hlasitost, cutoff, frekvence obálky, pitch bend, modulace, vibrato, pojmenujete to). To by umožnilo mnohem větší flexibilitu, včetně přepínání parametrů pomocí tlačítek, a jednoduše hrát akord, který není pevně zakódován do pole C ++.

Doporučuje: