Paso 7: Sincronización de música
Modificaciones de circuito
Para permitir que nuestra matriz de LED sincronizar las animaciones con música, necesitamos de interfaz a una fuente de audio. El MCU ATmega328 convenientemente contiene convertidores que podemos utilizar para este propósito. Aunque existen varios diseños para órganos del color, que trabajan con distintas bandas de frecuencia, me quedo con sincronización con la pista de bajo.
Podríamos utilizar un pin analógico muestra música, y luego realizar análisis de frecuencia en el Arduino, pero esto introduce un retraso y todavía nos obligan a construir un filtro antialiasing. Ya que necesitamos para construir un filtro, nosotros podríamos también mantener las cosas simples. Construí un filtro analógico paso bajo, alimentado su salida en un análogo de la entrada y luego simplemente prueba la amplitud contra un umbral. Empecé con un filtro más simple posible, un primer filtro de RC paso bajo pedido. Mucho para mi sorpresa, funcionaba bastante bien. Para diseñar el filtro, primero debe averiguar qué frecuencia de corte a utilizar. La frecuencia de corte, Fc, de un filtro es la frecuencia donde la energía se corta por la mitad. Después de jugar con Ecualizadores gráficos en Winamp durante la reproducción de música con pistas bajo thumpy, se asentaron en Fc = 100Hz. No tienen la resistencia adecuada práctica, usé el valor más cercano que tenía, que dio lugar a Fc = 133Hz. Aquí está el circuito:
Piezas necesarias:
(1) condensador electrolítico de 10uF
(1) resistencia ohm 120
(1) 1/8 jack TRS
La salida se conecta al pin analógico 0 en Arduino. Conectar su entrada a una fuente de audio, como los auriculares de un estéreo o un reproductor de MP3. NO se conectan a las salidas de nivel de altavoz de un amplificador a menos que estés seguro de las salidas < = 5V. Cualquier fuente de audio diseñado para auriculares de la unidad debe ser segura. Ya que uso a los auriculares de un estéreo, todavía puedo oír la música incluso cuando el circuito está conectado. Si usas algo con sólo una salida, como un reproductor de MP3, puede conectar dos conectores TRS en paralelo y luego alimentar el audio desde el conector de 2 º a un conjunto de altavoces amplificados o auriculares.
Tenga en cuenta que el circuito anteriormente sólo controla un canal de audio, que trabaja con la mayoría de las canciones, ya que el bajo es generalmente amplitud aproximadamente igual en ambos canales. Funciona OK, pero he encontrado para conseguir una entrada lo suficientemente alta para la Arduino a responder muy bien, que tengo el volumen hasta un poco demasiado alto para mi gusto. Por lo tanto, también construyó el circuito alternativo siguiente:
Piezas necesarias:
(1) condensador electrolítico de 10uF
(1) resistencia ohm 120
(3) 10K resistencia de ohm
(1) 100K resistencia de ohm
(1) 1/8" estéreos TRS jack
(1) TLC272CP amplificador operacional IC
ACTUALIZACIÓN: Lo sentimos, el esquema anterior está mal. Debe haber una tercera resistencia de 10K, R5, que se conecta entre el pin 2 (- entrada del opamp) y GND. La ganancia del amplificador es R4 / R5.
Puede sustituir cualquier amplificador operacional adecuado. Utilicé el TLC272CP ya pasa a ser lo que tenía en mano, y tiene la característica particularmente agradable que no le importa correr en una alimentación balanceado de solo 5V, así que apenas pude enganchar hasta alimentación de Arduino. El circuito anterior mezcla los canales de audio izquierdos y derecho y tiene una ganancia de 10. Sólo puede conectarlo a su fuente de audio estéreo y conecte la salida al pin analógico 0, como antes. Los 5V y GND también conectan tu Arduino.
Si usted prefiere usar un micrófono en lugar de cableado directo, pepehdes ha publicado un circuito alternativo mediante un micrófono electret en comentarios de paso 1, que dice que funciona bien. Tenga en cuenta que es un diseño del todo-pase por lo que se activará en todas las frecuencias, no sólo bajas. No uso un micrófono, porque mi diseño pistas el bajo que podría no ser muy bien a través de pequeños altavoces y un micrófono.
Revisión de bosquejo
A continuación, tenemos que modificar el bosquejo para leer la entrada de audio y activar el siguiente fotograma de la animación cuando se supera un umbral. El nuevo boceto, daftPunkSyncV2.zip, se coloca por debajo. Puede cambiar el esbozo entre la sincronización de música y libre mediante la modificación de
Music = 1 = sincronización de música
= 0 = uso temporizador
Music int = 1;
Usted tendrá que sintonizar manualmente la variable de umbral :
gatillo al marco siguiente amplitud música > umbral
aumentar el umbral para disminuir la sensibilidad
disminuir el umbral para aumentar la sensibilidad
int umbral = 5;
Cuando la entrada de pin analógico 0 supera el umbral, se activará el siguiente fotograma. Si está ejecutando el bosquejo en un arduino real que tiene un LED en el pin digital 13, es útil que descomentar la siguiente línea:
#define BLINKY / / parpadear el LED en el pin 13
mediante la eliminación de la principal / / personajes. Esto hará que el LED parpadee cuando se supera el umbral . Lo tengo desactivado en el bosquejo de forma predeterminada, porque estoy usando mi pequeña protoboard en lugar de un Arduino ahora, y no tiene un LED. Por último, usted puede experimentar un poco con minBeatInterval:
contra rebotes - filtrar consecutivos desencadenadores que están demasiado cercanas
para ralentizar la animación. disminuir este valor
para que sea más sensible a la menor intervalos beats
int minBeatInterval = 1000;
Tenga en cuenta que esta variable es menos de la unidad. Simplemente define cuántos bucles consecutivos después de la entrada excede el umbral antes de que el bosquejo está permitido disparar el siguiente fotograma. Encontré que en muchas canciones, golpes bajos son en realidad compuesto por varios picos muy espaciadas. Si no filtramos hacia fuera, la pantalla avanzará varios fotogramas para cada ritmo. Realmente te interese este efecto, ya que hace más viva la pantalla. Jugar con él y ver qué ajuste usted prefiere.