Emulación de reproductor de vinilo en Arduino

5

Digamos que tienes un escudo de audio arduino uno +, un altavoz y una rueda de desplazamiento (o rueda de desplazamiento del mouse).

Y quieres reproducir algún archivo de audio vinculado al movimiento de la rueda, al igual que mueves el disco de vinilo. Por ejemplo, se desplaza hacia adelante (lo suficientemente rápido): el audio se reproduce hacia adelante (lo suficientemente rápido), se desplaza hacia atrás (lentamente), la reproducción de audio hacia atrás (la misma velocidad).

¿Cómo lo haces? ¿Es posible de todos modos? Espero haberlo dejado claro.

    
pregunta Anuar Zhumayev

1 respuesta

1

No tengo experiencia con este tipo particular de aplicación, pero supongo que todo depende de la memoria RAM disponible y del tipo de funciones que tiene el códec para dirigirlo a los datos almacenados en la memoria RAM. Por lo tanto, cuando se desplace hacia adelante, su código le indicará al códec que omita algunos búferes en la RAM. Pero mientras tanto, su código tendría que anticipar qué buffers se necesitarán y extraerlos de la tarjeta SD. Por lo tanto, necesita un buen algoritmo que pueda anticipar qué partes del archivo de sonido serán necesarias. Para jugar al revés solo necesitas revertir los datos en cada búfer. Para jugar lento, puede ser tan simple como cambiar la velocidad de bits del CODEC para que sea demasiado rápido y, por lo tanto, el audio sonará lento.

Pero lo primero que deberías hacer es identificar el chip en el escudo de audio utilizado para convertir realmente el archivo de sonido a audio digital y estudiar cuidadosamente qué tipo de control tienes sobre cómo alimentar los datos. Puede tener una rutina que pueda acceder a un archivo en la tarjeta SD directamente pero, por supuesto, eso no sería de ninguna utilidad para usted. Probablemente tiene rutinas de nivel inferior que funcionan en buffers. Necesitaría decirle explícitamente que juegue buffers individuales en la RAM. Entonces todo se trata de obtener los buffers correctos en la RAM.

Es posible que no tengas suficiente RAM para hacer esto en realidad. Antes de que te dejes llevar, debes resolverlo.

    
respondido por el squarewav

Lea otras preguntas en las etiquetas