Reproducción de un archivo WAV / PCM de baja resolución con un altavoz con microcontrolador Basic Stamp II

4

¿Hay una manera de convertir los datos PCM a PWM impulsion para que pueda enviar un microcontrolador de sello básico para reproducir audio en un altavoz externo?

(sin usar un IC)

    
pregunta

3 respuestas

4

Convierta su archivo de sonido en un archivo WAV:

mplayer -ao pcm music.mp3

Cree una versión de 8 bits mono sin firmar a la frecuencia de muestreo deseada:

sox audiodump.wav -c 1 -r 8000 -u -1 converted.wav

Convierta las muestras en un archivo de encabezado C (obtenga wav2c ):

wav2c converted.wav sounddata.h sounddata

(Para tu sello BASIC, necesitarás convertir esta matriz a algún otro formato).

Luego, en su aplicación, debe leer una muestra de la matriz cada vez que caduque la duración de la frecuencia de muestreo y transmitirla desde su pin de PWM.

    
respondido por el Toby Jaffey
1

Para generar muestras RAW desde un archivo de audio, puede usar mplayer

mplayer -af resample=48000,channels=2:2:0:1:0:0,format=s16le 
        -ao pcm:nowaveheader:file=outfile.raw
        infile.mp3

Esto genera muestras de little-endian en bruto de 16 bits a outfile.raw . Luego puede proceder como sugirió Joby (solo use una herramienta bin2c, y no wav2c).

    
respondido por el jpc
0

He intentado realizar dicho procedimiento antes (leí Enide! - Reproductor de sonido PIC (PCM para Convertidor de PWM) ), pero no regonice el sonido original.

Llamé a la declaración: pin PWM, deber, ciclos, que "convierte un valor digital a salida analógica a través de la modulación de ancho de pulso, donde Ciclos es una variable / constante (0-65535) que especifica un aproximado número de milisegundos de salida PWM ".

Esto significa que solo puedo enviar una muestra por milisegundo. Así que mi frecuencia de muestreo debería ser 1000 Hz. ¿Es cierto?

Me pregunto por qué no reconocí el sonido. Tal vez se deba a la forma en que convertí el archivo WAV en mi computadora.

    
respondido por el user3601

Lea otras preguntas en las etiquetas