1 votos

Mezcla de audio en un microprocesador

Necesito hacer un proyecto en el que mezcle hasta 8 o 10 canales de audio para reproducirlos a través de un altavoz. Esto necesita ser hecho en un microcontrolador de bajo costo como un ARM cortex M0 y estoy pensando en cómo hacerlo.

El audio se colocará en un chip de memoria SPI FLASH en formato mono crudo (la profundidad de bits debería ser de 12-16).

La única forma que veo de hacerlo es sumar las muestras, pero para ello necesito un rango dinámico mucho mayor que el de 16 bits. Así que creo que necesitaría un DAC de 24 bits.

¿Hay algo más que me falte? ¿Alguna otra forma de mezclar audio o de hacerlo sin un DAC caro? ¿Es posible hacerlo?

3voto

RelaXNow Puntos 1164

La suma de 8 muestras sólo requiere 3 bits adicionales.

Después de sumar las muestras para obtener la señal mixta, divídela por el número de muestras. Se garantiza que siempre cabe en el ancho de palabra original, aunque la suma debe ser más amplia. En concreto, el acumulador necesita Log 2 (muestras) más bits que cada una de las muestras. Tenga en cuenta que al dividir por 2 N es simplemente desplazarse a la derecha en N bits. Para obtener la media de 8 muestras, hay que sumarlas y desplazar el resultado 3 bits a la derecha.

Este tipo de aritmética es para lo que están pensados los DSP. Tienen acumuladores en los que se puede sumar y que son más amplios que las palabras de datos normales. También pueden desplazar el resultado un número arbitrario de bits en un solo ciclo de instrucción.

Has dicho que tus muestras originales podrían ser de sólo 12 bits. En ese caso, puedes añadir hasta 16 sin desbordar una palabra de 16 bits. Eso podría ser suficiente para tus propósitos.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X