Mezcla de audio en un microprocesador

1

Necesito hacer un proyecto en el que mezclo de 8 a 10 canales de audio para reproducir a través de un altavoz. Esto debe hacerse con 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 en bruto (la profundidad de bits debería ser 12-16).

La única forma en que puedo verlo es sumar las muestras, pero para esto necesito un rango dinámico mucho mayor que 16 bits. Así que creo que necesitaría un DAC de 24 bits.

¿Hay algo más que me esté perdiendo? ¿Alguna otra forma de mezclar audio o hacerlo sin un DAC costoso? ¿Es incluso alcanzable?

    
pregunta gcb

1 respuesta

3

Agregar 8 muestras juntas solo requiere 3 bits adicionales.

Después de sumar las muestras para obtener la señal mixta, divida por el número de muestras. Siempre se garantiza que se ajuste al ancho de la palabra original, aunque la suma debe ser más amplia. Específicamente, el acumulador necesita Log 2 (muestras) más bits que cada una de las muestras. Tenga en cuenta que dividir por 2 N simplemente se desplaza hacia la derecha en N bits. Para obtener el promedio de 8 muestras, súmelas y luego cambie el resultado a 3 bits.

Este tipo de aritmética es para lo que están destinados los DSP. Tienen acumuladores que puede agregar que son más anchas que las palabras de datos normales. En general, también pueden cambiar el resultado un número arbitrario de bits en un solo ciclo de instrucción.

Usted dijo que sus muestras originales podrían ser solo de 12 bits. En ese caso, puede agregar hasta 16 de ellos sin desbordar una palabra de 16 bits. Eso podría ser lo suficientemente bueno para sus propósitos.

    
respondido por el Olin Lathrop

Lea otras preguntas en las etiquetas