Mezclador de audio del lado del servidor. ¿Qué hay disponible? (¿Puede Csound hacer esto?)

StackOverflow https://stackoverflow.com/questions/1803131

  •  05-07-2019
  •  | 
  •  

Pregunta

Estoy interesado en averiguar si existe un programa o una biblioteca que pueda realizar la siguiente tarea y sería adecuado para ejecutarse como parte de un proceso del lado del servidor en un sitio web. (Está bien si se tarda más del máximo de 200 milisegundos que es razonable para una solicitud de una sola página; puedo ejecutarlo como un proceso asíncrono).

La tarea es esta: tengo como entrada un conjunto de archivos de audio, y tengo algunos datos sobre cuándo cada archivo de audio debe comenzar a reproducirse en una línea de tiempo. El programa debe generar un archivo de audio que sea una mezcla del audio de entrada, combinado con los datos de la línea de tiempo. Es decir, quiero un mezclador de audio que funcione en modo por lotes , y no en tiempo real.

He hecho algunas búsquedas en Google, pero me he sentido un poco frustrado porque no estoy exactamente seguro de lo que debería estar buscando. La mayoría de los mezcladores de audio parecen estar orientados a aplicaciones en tiempo real, como los juegos, y no estoy seguro de cómo encontrar algo que haga esta tarea como algo así como una utilidad de línea de comandos, simplemente tomar entrada y producir salida tan rápido como sea posible.

Espero que esta pregunta tenga sentido.

Editar: Alguien comentó acerca de Csound y luego lo eliminó. ¿Qué es el Csound? ¿Es relativamente sencillo hacer lo que estoy pidiendo? Tenga en cuenta que mis archivos de entrada de sonido pueden durar entre 10 y 50 segundos, y no me interesa la distorsión de tono.

¿Cómo lograrías esto en Csound?

¿Hay algo más que Csound que pueda hacer este tipo de cosas?

¿Fue útil?

Solución

Definitivamente puedes usar Csound para esto, y podría implementarse de varias maneras. Desafortunadamente, mi aún bastante incipiente estudio de Csound ha estado más involucrado con la síntesis de audio y la composición algorítmica que con el muestreo y el procesamiento, por lo que no puedo ofrecer sugerencias para una implementación sólida.

Sin embargo, supongo que el archivo de orquesta de su proyecto (la parte de un programa de Csound que contiene síntesis de audio e información de procesamiento, contenida en módulos llamados instrumentos ) implicaría el código de operación soundin , que se lee de un archivo de audio, y luego escalaría la amplitud de varios flujos y los mezclaría antes de pasar a la salida.

La línea de tiempo probablemente se manejaría en el archivo de puntuación (la parte de un programa de Csound que maneja la inicialización de instrumentos y tablas de funciones), que traduciría los datos de su línea de tiempo en el tiempo de reproducción.

También puede buscar la subrutina GEN01 de Csound, que lee los datos de audio de un archivo en una tabla de funciones.

Otros consejos

Si está dispuesto a considerar la ejecución de scripts por lotes como parte de este proceso, puede encontrar SoX útil . Su "mezclador" y "remix" Parece que los comandos podrían ser útiles, aunque posiblemente necesite renderizar un espacio vacío al comienzo de los archivos de sonido para manejar las compensaciones.

Debería echar un vistazo a SuperCollider . Tal vez eso haría el truco por ti.

Puede consultar la Biblioteca de audio BASS . No puedo ver si se puede mezclar más rápido que en tiempo real, ya que está bloqueado en el cortafuegos, pero he encontrado que es fácil de usar en el pasado.

Probablemente esté recibiendo muchas sugerencias sobre soluciones de audio en tiempo real debido a la forma en que ha formulado su pregunta:

  

El programa debería emitir un audio   archivo que es una mezcla de la entrada   audio, combinado usando la línea de tiempo   datos.

" Entrada de audio " es muy vago Para mí, suena como un flujo de entrada en vivo (como un micrófono). Si no está lidiando con flujos de E / S en vivo, entonces sí, Csound sería un candidato probable. Hay muchos tutoriales de Csound en línea.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top