Paso 13: Software - Streaming de Audio
Streaming de audio es una tarea en sí misma. Quiero ser capaz de reproducir alguna música y efectos de sonido a los juegos por lo que para ello requiere una rutina de software que me permita abrir un archivo en la tarjeta SD y luego ese archivo una muestra a la vez a mi Junta de salida de audio DSP.
Podemos hacer la salida de audio sin la placa DSP simplemente utilizando un canal PWM en el microcontrolador en un de alta frecuencia para la señal de salida. Originalmente usé PWM como salida pero luego me espera de la tarjeta de salida de Audio EB086 DSP y en comparación con la calidad cuando se utiliza el CAD a bordo y la calidad de sonido es significativamente mejor que el PWM solo. La Junta DSP también me ofrece un filtro variable, un altavoz y amplificador ajustable para no tener que molestarse con estos artículos.
Lo primero que hice fue crear mis pistas de música. Fui y encontró música que pasó con el juego en cuestión y había creado un medley de todas las pistas utilizando el software libre Audacity. Luego guardé el archivo en la tarjeta SD como un archivo WAV 16KHz 16-bit.
Se trata entonces simplemente de abrir el archivo en el software y el archivo en un búfer de lectura. La salida es entonces conducida mediante una interrupción de temporizador para tirar las muestras hacia fuera el búfer y enviarlas a la DAC o PWM de una señal regular de 16KHz. El buffer es bastante pequeño (20KB en mi firmware) tenemos para asegurarse que vuelva a llenar el buffer cada cierto tiempo para evitar el transmisión de audio. Una vez que alcanzamos el final del archivo de audio hay una breve pausa y entonces el archivo es volver a abrir para comenzar la transmisión otra vez desde el principio.
Para controlar el volumen del audio corte el potenciómetro de control de volumen del tablero EB086 y luego atada con alambre en un nuevo potenciómetro con alambres el tiempo suficiente para llegar al borde de la caja. El pote entonces se monta en el caso por lo que se puede ajustar fácilmente.
Aquí están las funciones utilizadas para el procesamiento de audio.
WAVStartStream - permite configurar el nombre del archivo WAV de la tarjeta a corriente y comienza la transmisión del proceso llenando el buffer y a partir el temporizador funcionando.
WAVFillBuffer - llamada periódicamente para mantener un suministro constante de bytes en el buffer de sonido. Buffer puede tomar aproximadamente 0,4 segundos de muestras a 16K muestras por segundo.
WAVStreamInterrupt - llamada automáticamente a 16 KHz por el temporizador periférica en el dispositivo microcontrolador.
WAVStopStream - detiene la reproducción de audio y borra el buffer de sonido.