Taula de continguts:

Sintetitzador Wii Nunchuck: 4 passos
Sintetitzador Wii Nunchuck: 4 passos

Vídeo: Sintetitzador Wii Nunchuck: 4 passos

Vídeo: Sintetitzador Wii Nunchuck: 4 passos
Vídeo: Nunchuk module prototype 2024, Juliol
Anonim
Sintetitzador Wii Nunchuck
Sintetitzador Wii Nunchuck

El món de la música Wii:

Vaig decidir finalment combinar el meu amor per la música amb la poca experiència de programació que he adquirit durant els darrers anys. Des que vaig veure una xerrada de Tod Machover a la meva escola, m’interessa crear un instrument propi. Si no esteu familiaritzat amb el seu treball, doneu-li un Google, ja que des de fa uns quants anys ha estat superant els límits de la música, la tecnologia i la seva intersecció (laboratoris de mitjans del MIT, banda de rock, Guitar Hero, etc.).).

He connectat el meu Nunchuck a un Arduino Uno que funciona a la biblioteca de síntesi de so Mozzi a causa de l’ús ben documentat d’ambdós en línia. Per facilitat, estic fent servir un adaptador de taulers de WiiChuck que es connecta directament a l’Arduino. Aquest projecte relativament senzill reprodueix una sèrie de pitchs en funció del pitch (YZ-Plane) mesurat a partir de l’acceleròmetre de Nunchuck. El valor Y del joystick està assignat al guany per fer el to més fort o més suau. També canvia els acords segons el botó Z i activa un embolcall de modulació de fase quan es prem el botó C. La freqüència de l’embolcall es modifica després amb el Roll mesurat des del Nunchuck (imatge girant un pom).

Recursos:

  • 1 x Arduino Uno
  • 1 x Wii Nunchuck
  • 1 x adaptador WiiChuck
  • 1 x connector estèreo femella compatible amb taulers de pa de 3,5 mm
  • 1 cable d'àudio de 3,5 mm
  • 1 altaveu d'algun tipus (podeu connectar un brunzidor al principi per provar-lo
  • 4-5 cables de diversos colors

Opcional però recomanable:

  • Resistència de 1 x 330 Ohm
  • 1 x.1 condensador uF

Pas 1: connecteu el vostre NunChuck

Connectant el vostre NunChuck
Connectant el vostre NunChuck
Connectant el vostre NunChuck
Connectant el vostre NunChuck
Connectant el vostre NunChuck
Connectant el vostre NunChuck

Copieu / enganxeu la classe de WiiChuck des d’Arduino Playground. Necessitarem la versió amb la declaració de pins PWR i GND. Deseu-lo com a WiiChuck.h i mantingueu-lo al mateix directori que el vostre projecte.

Ara copieu / enganxeu el següent a Arduino IDE i pengeu-lo.

#include "Wire.h" // # include "WiiChuckClass.h" // probablement sigui el seu WiiChuck.h per a la resta de nosaltres. #include "WiiChuck.h" WiiChuck chuck = WiiChuck ();

configuració nul·la () {

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

bucle buit () {

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

// no és una funció // if (chuck.buttonC ()) {

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

Serial.println ();

}

Desconnecteu el vostre Arduino de l'alimentació i connecteu l'adaptador WiiChuck als pins analògics 2-5 del vostre Arduino.

Connecteu-vos de nou a l’alimentació i assegureu-vos que els valors de Nunchuck s’envien al vostre Arduino i s’imprimeixin al monitor sèrie. Si no veieu cap canvi en els números, assegureu-vos que les connexions siguin bones i que Nunchuck funcioni. Vaig passar uns dies intentant arreglar el programari abans de comprendre que el cable de Nunchuck estava trencat internament.

A continuació, ho connectarem tot a Mozzi…

Pas 2: Conèixer Mozzi

Conèixer Mozzi
Conèixer Mozzi

En primer lloc, haureu de descarregar la versió més recent de Mozzi. Són alimentats per les donacions, així que doneu si us sentiu tan inclinat i descarregueu la biblioteca. Podeu afegir-lo fàcilment a les vostres biblioteques si seleccioneu Sketch> Biblioteques> Afegeix biblioteca. ZIP … des de Arduino IDE.

Ara connectarem el connector per a auriculars de 3,5 mm a la placa de configuració i a Arduino perquè puguem connectar-nos-hi fàcilment més endavant (per ara podeu desconnectar el Nunchuck i l’adaptador).

  1. Connecteu el Jack a l'extrem inferior dret del tauler per deixar espai a la resta. El gat hauria de tenir 5 pins d'ample.
  2. Connecteu la fila central a terra amb un cable de pont.
  3. Connecteu la fila superior de la presa a una fila buida de sobre (fila 10 de la imatge). Aquest és el cable que transporta el senyal d'àudio.
  4. Connecteu el pin digital ~ 9 a la fila 10 també.
  5. Connecteu Ground al vostre Arduino al rail de terra de la placa.
  6. Encara no necessiteu necessàriament utilitzar la resistència i el condensador, però és possible que noteu un crit agut si no ho feu. Actua com a filtre de pas baix per eliminar freqüències superiors a ~ 15 kHz.

Obriu l’esbós de Sinewave de Mozzi a Arduino IDE triant Fitxer> Exemples> Mozzi> Conceptes bàsics> Sinewave. Aquest és essencialment l'equivalent de Mozzi a "Hello World".

Pengeu l’esbós i connecteu un altaveu a la taula de treball. Podeu utilitzar un brunzidor si encara no heu connectat la placa de connexió al connector d'àudio.

Si no sentiu un A4 constant (440Hz) que prové del vostre altaveu, assegureu-vos que totes les connexions siguin bones i torneu-ho a provar.

A continuació, connectarem el Nunchuck a l’Arduino.

Pas 3: ajuntar-ho tot

Posant-ho tot junt
Posant-ho tot junt

Ara farem servir el valor de rotllo del Nunchuck per canviar la freqüència d’una Sinewave.

A Arduino IDE, seleccioneu Fitxer> Exemples> Mozzi> Sensors> Freqüència piezoelèctrica

Haurem d’afegir algunes línies a aquest codi per tal que funcioni amb el Nunchuck. Afegiu una inclusió a la biblioteca WiiChuck i instancieu un objecte WiiChuck anomenat chuck. També podeu comentar la declaració de PIEZO_PIN o simplement eliminar-la, ja que no la farem servir.

#include "WiiChuck. H"

WiiChuck chuck = WiiChuck (); // const int PIEZO_PIN = 3; // definiu el pin d'entrada analògic per al piezo

Ara, a la configuració, haurem d’afegir el següent:

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

i finalment haurem de canviar algunes coses a updateControl ():

void updateControl () {

chuck.update (); // obtenir les darreres dades de nunchuck // llegir el piezo // int piezo_value = mozziAnalogRead (PIEZO_PIN); // el valor és 0-1023 int piezo_value = map (Comenteu la línia que defineix piezo_value i afegiu-hi el següent:

void updateControl () {chuck.update (); // obtenir les darreres dades de nunchuck // llegir el piezo // int piezo_value = mozziAnalogRead (PIEZO_PIN); // el valor és 0-1023 // No necessitem la línia anterior, però per què no assignar el rodet al mateix interval? int piezo_value = map (chuck.readRoll (), -180, 180, 0 1023);

Pengeu el codi i la freqüència hauria de correspondre al vostre Nunchuck's Roll. Proveu de mapear-lo a diferents intervals de freqüència. Si no us n’heu adonat més avall a l’esbós, el valor del sensor es multiplica per 3, de manera que actualment estem reproduint tons des de 0 Hz fins a uns 3000 Hz.

Pas 4: tocs finals

Tocs finals
Tocs finals

Ara ja esteu a punt per carregar la versió final del codi que he compaginat del pas anterior i alguns exemples més de Mozzi (Phase_Mod_Envelope i Control_Gain per ser exactes). Per fer-me la vida més fàcil, també he inclòs un fitxer anomenat pitches.h que simplement defineix els valors de freqüència amb noms de notes coneguts (és a dir, NOTE_A4).

Suggereixo llegir la documentació de Mozzi, ja que gran part del codi és directe dels exemples, excepte el codi del Nunchuck.

Aquí teniu un enllaç al meu dipòsit de Git. S'inclouen tots els fitxers importants, excepte la biblioteca Mozzi, que hauríeu d'obtenir des del seu lloc web perquè estigui actualitzada. Descarregueu WiiMusic.ino i pengeu-lo al dispositiu per escoltar com sona. Us proposo que jugueu amb els paràmetres que estic canviant (canvieu els rangs del mapa, dividiu / multipliqueu nombres, etc.), ja que és així com he trobat el so concret que cercava.

Reflexió

No tinc la sensació d’haver acabat. Això no vol dir que no estigui satisfet amb el projecte ni amb el so que fa, però em sembla que acabo de submergir els meus dits en un món nou que vull continuar explorant, així que afegiré una nova branca d’aquest projecte mentre continuo treballar.

Tot i això, dit això, aquest va ser el meu primer viatge real al món dels microcontroladors, així que estic molt agraït per l'experiència d'aprenentatge. Les vint hores aproximadament que vaig dedicar a treballar-hi em van donar idees nadalenques per a mi i per a pràcticament tots els membres de la meva família. Lamento no haver treballat en aquest projecte amb una altra persona, ja que podria haver utilitzat molts consells i orientacions en el camí. No obstant això, personalment vaig aprendre molt a través dels meus assajos, inclosos tres dies de treure els cabells intentant depurar un problema de programari que mai no hi havia (un cable intern al Nunchuck s'havia trencat).

Encara hi ha una sèrie de possibilitats per avançar. Per exemple, m'encantaria utilitzar l'Arduino com a tipus d'interfície MIDI entre un controlador MIDI i els auriculars per canviar els paràmetres de la nota MIDI, ja que n'hi ha tants per triar (volum, tall, freqüència de l'embolcall, pitch bend), modulació, vibrato, ho dius). Això permetria una flexibilitat molt més gran, incloent canviar paràmetres amb els botons i simplement reproduir un acord que no estigui codificat en una matriu C ++.

Recomanat: