Tabla de contenido:
- Paso 1: Conectando su NunChuck
- Paso 2: Conociendo a Mozzi
- Paso 3: Poniéndolo todo junto
- Paso 4: Toques finales
Video: Sintetizador Wii Nunchuck: 4 pasos
2024 Autor: John Day | [email protected]. Última modificación: 2024-01-30 08:40
El mundo de la música de Wii:
Decidí finalmente combinar mi amor por la música con la poca experiencia en programación que he ganado en los últimos años. Me ha interesado crear un instrumento propio desde que vi una charla de Tod Machover en mi escuela. Si no está familiarizado con su trabajo, dele un Google, ya que ha estado ampliando los límites de la música, la tecnología y su intersección durante varios años (laboratorios de medios del MIT, Rock Band, Guitar Hero, etc.).).
He conectado mi Nunchuck a un Arduino Uno que se ejecuta en la biblioteca de síntesis de sonido de Mozzi debido al uso bien documentado de ambos en línea. Para mayor facilidad, estoy usando un adaptador de tablero de WiiChuck que se conecta directamente al Arduino. Este proyecto relativamente simple reproduce una serie de tonos dependiendo del tono (YZ-Plane) medido desde el acelerómetro del Nunchuck. El valor Y del joystick se asigna a la ganancia para hacer que el tono sea más alto o más suave. También cambia los acordes dependiendo del botón Z y activa una envolvente de modulación de fase cuando se presiona el botón C. Luego, la frecuencia de la envolvente se modifica con el rollo medido desde el Nunchuck (imagen girando una perilla).
Recursos:
- 1 x Arduino Uno
- 1 x Wii Nunchuck
- 1 x adaptador de WiiChuck
- 1 x conector estéreo hembra de 3,5 mm compatible con placa de pruebas
- 1 x cable de audio de 3,5 mm
- 1 x altavoz de algún tipo (puede conectar un timbre al principio para probarlo
- 4-5 alambres de varios colores
Opcional pero recomendado:
- 1 x resistencia de 330 ohmios
- 1 x condensador de 1 uF
Paso 1: Conectando su NunChuck
Copia / pega la clase WiiChuck de Arduino Playground. Necesitaremos la versión con la declaración de pines PWR y GND. Guárdelo como WiiChuck.hy guárdelo en el mismo directorio que su proyecto.
Ahora copie / pegue lo siguiente en Arduino IDE y cárguelo.
#include "Wire.h" // # incluye "WiiChuckClass.h" // lo más probable es que sea WiiChuck.h para el resto de nosotros. #incluya "WiiChuck.h" WiiChuck chuck = WiiChuck ();
configuración vacía () {
// nunchuck_init (); Serial.begin (115200); chuck.begin (); chuck.update (); //chuck.calibrateJoy (); }
bucle vacío () {
retraso (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 es una función // if (chuck.buttonC ()) {
if (mandril.buttonC) {Serial.print ("C"); } else {Serial.print ("-"); }
Serial.println ();
}
Desconecte su Arduino de la energía y conecte su adaptador WiiChuck a los pines analógicos 2-5 en su Arduino.
Conéctese a la alimentación nuevamente y asegúrese de que los valores de Nunchuck se envíen a su Arduino y se impriman en el Monitor serie. Si no ve ningún cambio en los números, asegúrese de que las conexiones sean buenas y que Nunchuck esté funcionando. ¡Pasé unos días tratando de arreglar el software antes de darme cuenta de que el cable de mi Nunchuck estaba roto internamente!
A continuación, conectaremos todo a Mozzi…
Paso 2: Conociendo a Mozzi
Primero, deberá descargar la última versión de Mozzi. Se alimentan de donaciones, así que haga una donación si lo desea y descargue la biblioteca. Puede agregarlo a sus bibliotecas fácilmente eligiendo Sketch> Bibliotecas> Agregar biblioteca. ZIP … desde Arduino IDE.
Ahora conectaremos el conector para auriculares de 3,5 mm a la placa de pruebas y Arduino para que podamos conectarnos fácilmente más tarde (puede desconectar el Nunchuck y el adaptador por ahora).
- Conecte su Jack a la esquina inferior derecha del tablero para dejar espacio para el resto. El conector debe tener 5 pines de ancho.
- Conecte la fila del medio a tierra con un cable de puente.
- Conecte la fila superior del gato a una fila vacía arriba (Fila 10 en la imagen). Este es el cable que transporta la señal de audio.
- Conecte el Pin digital ~ 9 a la fila 10 también.
- Conecte Ground en su Arduino al riel de tierra en la placa de pruebas.
- No es necesario que use la resistencia y el condensador todavía, pero puede notar un chillido agudo si no lo hace. Actúa como un filtro de paso bajo para eliminar frecuencias por encima de ~ 15 kHz.
Abra el boceto de Sinewave de Mozzi en Arduino IDE seleccionando Archivo> Ejemplos> Mozzi> Básicos> Sinewave. Este es esencialmente el equivalente de Mozzi a "Hello World".
Sube el boceto y conecta un altavoz a la placa de pruebas. También puede usar un timbre si aún no ha conectado la placa de pruebas al conector de audio.
Si no escucha un A4 (440Hz) constante proveniente de su altavoz, asegúrese de que todas las conexiones estén bien y vuelva a intentarlo.
A continuación, conectaremos el Nunchuck al Arduino.
Paso 3: Poniéndolo todo junto
Ahora vamos a utilizar el valor de rollo del Nunchuck para cambiar la frecuencia de una onda sinusoidal.
Desde Arduino IDE, elija Archivo> Ejemplos> Mozzi> Sensores> Frecuencia piezoeléctrica
Necesitaremos agregar algunas líneas a este código para que funcione con el Nunchuck. Agrega una inclusión a la biblioteca de WiiChuck y crea una instancia de un objeto de WiiChuck llamado chuck. También puede comentar la declaración de PIEZO_PIN o simplemente eliminarla, ya que no la usaremos.
#include "WiiChuck. H"
Mandril de WiiChuck = WiiChuck (); // const int PIEZO_PIN = 3; // establece el pin de entrada analógica para el piezo
Ahora en la configuración, necesitaremos agregar lo siguiente:
chuck.begin (); chuck.update ();
y finalmente necesitaremos cambiar algunas cosas en updateControl ():
void updateControl () {
chuck.update (); // obtener los últimos datos de nunchuck // leer el piezo // int piezo_value = mozziAnalogRead (PIEZO_PIN); // el valor es 0-1023 int piezo_value = map (Comente la línea que establece piezo_value y agregue lo siguiente debajo:
void updateControl () {chuck.update (); // obtener los últimos datos de nunchuck // leer el piezo // int piezo_value = mozziAnalogRead (PIEZO_PIN); // el valor es 0-1023 // No necesitamos la línea anterior, pero ¿por qué no asignar el rollo al mismo rango? int piezo_value = map (chuck.readRoll (), -180, 180, 0 1023);
Sube el código y la frecuencia debe corresponder a tu Nunchuck's Roll. Intente mapearlo en diferentes rangos de frecuencia. Si no lo ha notado más abajo en el boceto, el valor del sensor se multiplica por 3, por lo que actualmente estamos reproduciendo tonos de 0 Hz a aproximadamente 3000 Hz.
Paso 4: Toques finales
Ahora está listo para cargar la versión final del código que he reunido del paso anterior y algunos ejemplos más de Mozzi (Phase_Mod_Envelope y Control_Gain para ser exactos). Para hacer mi vida más fácil, también incluí un archivo llamado pitches.h que simplemente define valores de frecuencia con nombres de notas familiares (es decir, NOTE_A4).
Sugiero leer la documentación de Mozzi ya que gran parte del código proviene directamente de los ejemplos, excepto el código del Nunchuck.
Aquí hay un enlace a mi repositorio de Git. Se incluyen todos los archivos importantes, excepto la biblioteca de Mozzi, que debe obtener de su sitio web para que esté actualizado. Descarga WiiMusic.ino y cárgalo en tu dispositivo para escuchar cómo suena. Le sugiero que juegue con los parámetros que estoy cambiando (cambiar los rangos del mapa, dividir / multiplicar números, etc.) ya que así es como encontré el sonido particular que estaba buscando.
Reflexión
No siento que haya terminado del todo. Eso no quiere decir que no esté satisfecho con el proyecto o el sonido que hace, pero siento que simplemente sumergí los dedos de los pies en un nuevo mundo que quiero seguir explorando, así que agregaré una nueva rama de este proyecto a medida que continúe. trabajar.
Aún así, dicho esto, este fue mi primer viaje verdadero al mundo de los microcontroladores, así que estoy muy agradecido por la experiencia de aprendizaje. Las veinte horas que pasé trabajando en él me dieron ideas navideñas para mí y para prácticamente todos los miembros de mi familia. Lamento un poco no haber trabajado en este proyecto con otra persona, ya que podría haber usado muchos consejos y orientación en el camino. Sin embargo, personalmente aprendí mucho a través de mis pruebas, incluidos tres días de jalarme de los pelos tratando de depurar un problema de software que nunca estuvo allí (un cable interno en el Nunchuck se había roto).
Todavía hay una serie de posibilidades de seguir adelante. Por ejemplo, me encantaría usar el Arduino como un tipo de interfaz MIDI entre un controlador MIDI y la salida de auriculares para cambiar los parámetros de la nota MIDI, ya que hay muchos para elegir (volumen, corte, frecuencia de envolvente, inflexión de tono, modulación, vibrato, lo que sea). Esto permitiría mucha más flexibilidad, incluido el cambio de parámetros con los botones y simplemente tocar un acorde que no esté codificado en una matriz de C ++.
Recomendado:
Oh Christmas Tree (Oh Tannenbaum) con MakeyMakey en el sintetizador de agua: 7 pasos
Oh árbol de Navidad (Oh Tannenbaum) con MakeyMakey en el sintetizador de agua: Esta canción navideña es buena para jugar con el makeymakey en el sintetizador de agua. Puedes jugarlo con nueve tonos. Para el ambiente es agradable tener un poco de luz navideña :-) ¡Disfruta
Sintetizador de arpegiación (Mosquito I): 6 pasos
Sintetizador de arpegio (Mosquito I): Mosquito I es un pequeño sintetizador de arpegio que utiliza un Arduino Nano y la biblioteca de síntesis de sonido Mozzi. Puede reproducir más de veinte secuencias de 8 pasos, pero puede agregar tantas secuencias personalizadas como desee. Es relativamente sencillo de configurar y no
Feliz cumpleaños en el sintetizador de agua con MakeyMakey y Scratch: 5 pasos
Feliz cumpleaños en el sintetizador de agua con MakeyMakey y Scratch: en lugar de Flowers and Singing, puedes construir esta instalación como una gran sorpresa para los cumpleaños
Keytar Hero (usando un controlador de guitarra de Wii como sintetizador): 7 pasos (con imágenes)
Keytar Hero (usando un controlador de guitarra de Wii como sintetizador): Los juegos de Guitar Hero estaban de moda hace una docena de años, por lo que seguramente habrá un montón de controladores de guitarra viejos por ahí acumulando polvo. Tienen muchos botones, perillas y palancas, así que ¿por qué no volver a utilizarlos bien? El control de la guitarra
Arduino inalámbrico controlado por Wii Nunchuck: 7 pasos
Arduino inalámbrico controlado por Wii Nunchuck: utilice un Wii Nunchuck inalámbrico completamente sin modificar como sistema de control para cualquier proyecto basado en Arduino. No se agregaron pares de transmisor / receptor de radio, etc. Este instructable asume cierta experiencia con el microcontrolador Arduino. La radio