Hacer luces que reaccionan a Audio (3 / 5 paso)

Paso 3: Software

Usted puede encontrar el software de Atmel estudio proyecto en github

Hay 2 proyectos en esta git. El proyecto básico incluye todas las funciones básicas para medir y calcular los datos. También incluye una clase de WS2812 LED. El Matrixproject incluye todos los datos para mi proyecto basado un una matriz de LED 7 x 6 con WS2812 LED. Como esto es muy específico, este código es más de inspiración y ejemplo de lo que puede hacer.

Esta parte es la más compleja de este proyecto, el software tiene que hacer un montón de cosas.

Los datos de muestreo

En primer lugar usted necesita obtener los datos en el controlador. Esto se hace mediante el muestreo de la señal de audio con un ADC. La frecuencia de muestreo depende del rango de frecuencia que desea trabajar con. Si usted muestra la señal con una velocidad de 32kHz que puede recrear señales de hasta 16kHz con la transformación de Fourier (FT). Este es el rango de frecuencia que desea trabajar.

Para hacer este trabajo un temporizador para activar con una frecuencia de 32kHz y leer un valor desde la ADC cada vez que esto sucede. Puesto que el controlador atxmega tiene un controlador DMA, se utiliza para automatizar el proceso. DMA (acceso directo de memoria) le permite mover datos de un punto en la memoria a otro completamente en hardware. La DMA se configura de una manera, que se mueve el resultado de la ADC en un lugar específico en la RAM cada vez que se activa por el temporizador. Nos muestra los 128 valores por el canal.

Transformación de Fourier rápida (FFT)

Utilizamos la biblioteca de la FFT de elmchan para este proyecto.

Generalmente un FT utiliza mucho tiempo de cálculo, pero le permite recrear cada frecuencia dentro del espectro de la señal dada. La FFT simplifica este proceso y lo acelera. La desventaja es, que no te da las frecuencias específicas pero las bandas de frecuencia. Con el propósito de este proyecto, esta información es suficiente.

Ya que nos muestra valores de 128, la FFT nos dará 64 resultados. Debido a la frecuencia de muestreo (32 kHz) podemos recrear las frecuencias hasta 16 kHz, que se divide en bandas de 64 por la FFT. 16000 / 64 = 250. Esto significa que cada banda FFT describe el nivel de 250 Hz. FFT banda 1 le da un valor de 1Hz a 250Hz, banda 2 251 Hz a 500Hz, banda 3 Hz 501 a 750Hz y así sucesivamente. Al aumentar el número de muestras de entrada podría aumentar esta resolución, pero también aumentar el tiempo de cálculo necesario.

Esas 64 bandas se consolidan en 7 bandas, que se utilizan para la matriz, que tiene una anchura de 7 LED. Algunos efectos se basan todavía en las bandas de 64 originales.

El algoritmo para el cálculo de la FFT se codifica de manera que no todos los pasos de cálculo a la vez, pero divide en pedazos más pequeños. Esto se hace para darle tiempo al controlador para calcular otra cosa entre esas medidas. Si no haces esto, las animaciones se a veces tartamudeo, que no se ven bien.

El oído humano reacciona diferente a ciertas frecuencias. Es muy sensible a las frecuencias alrededor de 4kHz y no sensible a muy bajas y altas frecuencias. En una señal de audio que las bajas frecuencias tendrá una gran amplitud, que conduce a resultados altos de la FFT, y bajas amplitudes en las frecuencias medias, que conduce a resultados bajos de FFT. Esto hace difícil hacer cálculos con. Para contrarrestar este un sistema muy simple de una ponderación inverso se utiliza. Los coeficientes son calculados previamente para cada banda y multiplicados con cada una de las 64 bandas FFT.

Detección de Beat

La idea básica detrás de esto es simple: promedio de la potencia del nivel sonoro. Si el nivel de potencia actual es cierto superior a esta media tiene un ritmo. Para hacer esto correctamente necesita la señal de audio continuamente, que nosotros no la muestra. Pero todavía vamos a usar esta idea.

Los resultados de la FFT se dividen en 3 grupos: baja, media y alta. Esos valores son promediados en el tiempo como una media móvil. Si el nivel actual es mayor que 50% a 100% (dependiendo de la banda) de este promedio se evalúa como beat. Esto funciona muy bien con un metrónomo, que produce un sonido simple, pero no funciona demasiado bien con señales complejas como canciones. La detección de beat en la banda inferior funciona mejor y el centro de banda lo peor cuando hay voz en la canción.

¿Qué hacer con esos datos?
Como ejemplo voy a explicar cómo funciona la pantalla de espectro mono. Puede encontrar el código en el proyecto completo en animations.cpp en la función void anim_monospektrum_step(). Esta animación se utiliza en el video de intro.

Los valores de las 7 bandas consolidadas se establecen como valores objetivo para la altura de las columnas. Se escala de forma que este valor varía entre 0 y 9000. El desplazamiento de color blanco se encuentra por la amplitud. Los valores reales, que se utilizará para el cálculo de la salida, poco a poco cambian su valor para que coincida con el valor objetivo. Esto hace que la animación se vea muy fluido y evita saltos repentinos.

La matriz tiene una altura de 6 LED. Esto significa que cada LED abarca 9000 / 6 = 1500 cuentas del valor real. Si el valor real de una banda es 1500, enciende solamente el LED en la parte inferior. Si el valor es de 3000 los dos inferiores más LED se enciende. Como mucho el valor real es mayor que 1500 nos ilumina uno más dirigido y restar 1500 del valor. Si después de este proceso, el valor no es 0, el LED el LED de encendido completo pasado se enciende así, pero el brillo se ajusta con el valor. Cuanto menor el restante valor más bajo el brillo.

Como un detalle adicional las bandas parpadeará cuando se detecta un latido dentro de esta banda.

Artículos Relacionados

Cómo hacer luces de flor de cereza

Cómo hacer luces de flor de cereza

me encanta la forma de los cerezos fuera de mi edificio alegre floración cada primavera.  Quería traer la belleza de los cerezos en flor en el interior así que hice algunos de papel de seda y para hacerlos aún más especiales agregué LEDsEstas luces b
Cómo hacer luces del partido pulsante Beat

Cómo hacer luces del partido pulsante Beat

este es un tutorial de vídeo que muestra cómo hacer un dispositivo que toma una señal de tus estéreo y hace luces flashes para tu música.
Hacer luces Flash

Hacer luces Flash

Fresco luces intermitentes! DIY - los mejores bloopers son aquí muy facilmente para hacer luces de Navidad o cualquier luces twinkle Just hack una cuerda y utilizarlo en cualquier lugar que necesita
Arduino y procesamiento: Motion graphics y luces reaccionan al audio

Arduino y procesamiento: Motion graphics y luces reaccionan al audio

tomó un rato para captar lo que quería, pero valió la pena.
Cómo hacer luces bicicleta magnética con sugru + imanes

Cómo hacer luces bicicleta magnética con sugru + imanes

Luces de bicicleta pueden ser frustrante y lenta para colocar y quitar, sobre todo con mal tiempo con guantes! Mediante la adición de imanes y sus luces, su bicicleta, podrás ajustar las luces y apagar con los guantes y en cuestión de un movimiento m
Como hacer un reproductor de CD Audio del Cdrom viejo

Como hacer un reproductor de CD Audio del Cdrom viejo

Hola amigos este es mi primer proyecto en Instructable.En él te mostraré cómo hacer un reproductor de Cd de viejo Cd Rom.ES MUY SIMPLE, FÁCIL Y BARATA DEL PROYECTO INCLUSO UN 8-10 AÑOS NIÑO PUEDE HACERLO.HE HICE DE VIEJAS PIEZAS DE PC VIEJAS COMO PEN
Hacer un sencillo amplificador de Audio

Hacer un sencillo amplificador de Audio

es mi primer instructable. Vamos a ver cómo hacer un amplificador de audio que se puede utilizar con cualquiera de sus instrumentos musicales como guitarra, piano y con ipod y otros dispositivos. Que permite comenzar el viaje...Descargo de responsabi
Hacer mejor que el nuevo soporte para acuario

Hacer mejor que el nuevo soporte para acuario

Después de 15 años de servicio muy apreciado en la celebración de 750 libras de una combinación de vidrio, roca, equipo eléctrico, agua y la variedad de peces y plantas acuáticas que me dan paz, era tiempo de aceptar la dimisión de mi antiguo, stand
Hacer su propio Cable de Audio/Video de ADAM Coleco

Hacer su propio Cable de Audio/Video de ADAM Coleco

Este artículo describe cómo crear un cable de Audio y Video que permitirá una Coleco Adán para conectarse a un televisor mediante los TV compuesto audio y video RCA conectores, que proporciona una conexión de audio y vídeo mejorada de forma significa
Fijación bicicleta luces que gire demasiado fácilmente con Sugru

Fijación bicicleta luces que gire demasiado fácilmente con Sugru

como un ávido ciclista, soy un gran fan de la seguridad. Aparte de cascos, las luces son probablemente la cosa más grande que un ciclista puede hacer para mejorar su seguridad en la carretera.Lamentablemente vivo en una ciudad medio grande y como man
Cómo hacer un colgante de pared Audio/iPod plataforma de un viejo patín de

Cómo hacer un colgante de pared Audio/iPod plataforma de un viejo patín de

Hola chicos,Así que yo quería hacer algo fresco con un viejo patín mío (skate en cuestión era un juguete máquina 7.9 ancho) y también tuve un par de altavoces a poner alrededor así que me decidí a hacer esta cosa y voy a mostrarte cómo hacerlo!¡ Disf
Cómo hacer luces de policía Arduino

Cómo hacer luces de policía Arduino

requiere de elementos:Arduino (cualquier tipo)Computadora programa Arduino8 LED (preferiblemente alta intensidad azul y rojo)Cable 22AWG para protoboardresistencias de ohm 7 100 (pin 13 no necesita una resistencia en el Duemilanove)(opcional) Protobo
Hacer papel que crece - reciclar, renovar y planta que en la tierra

Hacer papel que crece - reciclar, renovar y planta que en la tierra

¿cuántas toneladas de correo basura obtenemos a lo largo de una semana en todo Estados Unidos? Todo el mundo quiere vender todo y la solución a cualquier problema que se te ocurra y que llena nuestros botes de basura y rellenos sanitarios. Aquí está
Cómo hacer texto que brilla intensamente en Paint.NET

Cómo hacer texto que brilla intensamente en Paint.NET

esto es como hacer texto tienen un efecto que brilla intensamente en Paint.NET. En este instructable, utilicé la fuente Tengwar Annatar con efecto brillante para hacer una especie de mirada "runes de la magia"; sin embargo, esta técnica puede ap