¿Problemas de latencia para un mezclador de audio inalámbrico?

1

Quiero diseñar un mezclador de audio que funcione de forma inalámbrica y tenga una interfaz web. Esto es lo que generalmente estoy pensando:

Un componente es un enchufe de 1/4 de pulgada con un circuito amplificador y un módulo WiFi que se comunica a través de la red local a una Raspberry Pi.

Varias de estas unidades están conectadas a guitarras, teclados, micrófonos, etc.

En el Pi, tengo una interfaz simple que se ejecuta localmente en el navegador para mezclar señales de diferentes instrumentos y enviar a un solo conjunto de altavoces desde el Pi.

Realmente estoy buscando ideas generales de alguien que tenga experiencia con la electrónica de audio (no tengo ninguna).

¿Bluetooth sería una mejor opción que UDP? O tal vez incluso Zigbee?

    
pregunta Chet

2 respuestas

5

La música es un caso especial para la latencia de audio. Para hablar, o conversaciones de voz, puede tener una latencia de hasta 100 ms antes de que impida la conversación, aunque puede notarse en esa latencia. Sin embargo, la música tiene un ritmo y 100 mS es inaceptable.

Cuando los músicos tocan juntos, el sonido acústico viaja a unos 3 ms / metro. En una configuración de escenario típica, los artistas de banda tratarían con un máximo de 25 ms de retraso acústico. Las etapas más grandes requieren monitores con una latencia máxima de 10 ms, por lo que el retardo acústico siempre es inferior a 25 ms.

Siempre y cuando se espere que su sistema proporcione retroalimentación (monitor) a los músicos, y estén muy cerca, o tengan monitores de baja latencia aparte de su sistema, y la banda esté completamente amplificada, es decir, la audiencia ganará ' t escuche tanto el sonido acústico de la banda como el sonido amplificado de los altavoces, entonces puede salir con una latencia superior a 25 ms para todo su sistema, desde la captación de música hasta la salida del altavoz.

Sin embargo, es probable que la banda escuche los amplificadores, y nuevamente, cualquier retraso mayor a 25 ms les causará cierta agravación.

Con los paquetes UDP pequeños y frecuentes, puede cumplir esto a través de wifi, pero será complicado dar cuenta de todas las fuentes de latencia dentro de dicha configuración.

Siga adelante y haga algunas pruebas: use una Pi con un micrófono, una con un altavoz y ambas con wifi. Pídales que simplemente transmitan el sonido de uno a otro a lo largo del camino completo, desde el micrófono hasta el altavoz con todas las partes y partes en el medio. Capture paquetes muy pequeños (1-5 ms cada uno como máximo) y envíelos. Usa un osciloscopio para medir la latencia. Supongo que con dispositivos de sonido USB y dispositivos wifi USB y con el Pi no en tiempo real, verás latencias muy grandes. Es probable que tenga que hacer un poco de investigación y trabajar para llevarlos a menos de 25 ms.

    
respondido por el Adam Davis
0

UDP probablemente manejará la velocidad de datos que necesita para la transmisión de audio, pero la latencia será problemática con el audio en vivo. Considera el camino:

Fuente - > ADC - > Conversión de I2C a UDP - > Red - > Procesamiento de audio - > Salida de audio

He tenido problemas de latencia con el audio al usar cableado analógico, equipo de interfaz digital profesional y una computadora de gama alta. JACK y ALSA tienden a ser incluso menos confiables, por lo que no estoy seguro de qué tipo de rendimiento podrá obtener del procesamiento de audio en una pi raspberry.

La mayoría de los equipos de audio profesionales que he usado en realidad van por una ruta diferente que puede considerar: en lugar de transmitir audio a una computadora, procesarlo y luego volverlo a transmitir, tienen un hardware de procesamiento dedicado que simplemente acepta señales de control desde una computadora, por lo que prácticamente no se agrega latencia.

Creo que la forma "correcta" de hacer algo como esto sería usar una conexión inalámbrica directa (como Bluetooth, en lugar de confiar en una red externa) para transmitir datos de audio en bruto a un FPGA con algunas utilidades DSP. El FPGA podría controlarse con una Raspberry Pi o algo similar a través de una interfaz SPI o I2C. Habría mucho más trabajo por adelantado implementando los algoritmos DSP para el procesamiento de audio (en lugar de simplemente usar complementos JACK en una computadora) pero reduciría significativamente la latencia en la etapa de procesamiento. El uso de Bluetooth también reduciría la latencia en las etapas de transmisión y recepción, ya que no se basa en una red no controlada (posiblemente no existente, si pretende hacer que este sistema sea móvil).

Dicho esto, creo que la forma en que deberías implementar algo como esto depende precisamente de lo que pretendes hacer con él. Personalmente, he querido construir algo como esto por un tiempo para simplificar la configuración y el desmontaje de espectáculos en vivo. Mi solución actual es básicamente reemplazar los cables con un reemplazo inalámbrico y usar equipo comercial para todo el procesamiento. Los mezcladores de alta calidad son bastante baratos (yo también tengo algunos) y las soluciones ad-hoc no pueden igualarse en términos de calidad de sonido.

Lo que me ha impedido es el costo. Esta es la opción más barata que podría encontrar, y requiere el trabajo más directo: un ADC con un costo de conversión de audio de ~ 20 $, un par de chips de bluetooth cuesta ~ 10 $ y un par de FPGA para costos de control ~ 30 PS Eso es sobre todo piezas de especificaciones del fabricante; conseguir equivalentes de aficionados costaría más de 100 $, ¡y eso es solo para reemplazar un cable de 10 $!

De vuelta a su proyecto, es por eso que no ve audio inalámbrico para instrumentos; es prohibitivamente caro obtener la calidad de sonido necesaria para hacer música (la mayoría de los sistemas comunes son solo para hablar, por lo que la calidad no es tan importante). Existen algunos sistemas puramente inalámbricos, pero generalmente cuestan miles de dólares, tienen hardware dedicado para la transmisión, recepción y procesamiento, y generalmente utilizan códecs y protocolos propietarios.

Si aún desea hacer su solución personalizada, consulte las utilidades de transmisión de audio de JACK. Si puede averiguar cómo transmitir con ese protocolo, puede conectar su señal directamente a todas las extensiones de JACK. Luego, simplemente puede descargar un mezclador JACK para manejar todo el procesamiento de una salida.

    
respondido por el Hythaam

Lea otras preguntas en las etiquetas