Representación fuera de línea / no en tiempo real con la API de audio web
Estoy trabajando en una aplicación web donde los usuarios pueden secuenciar muestras de audio y, de manera opcional, aplicar efectos a los patrones musicales que crean utilizando la API de audio web. Los patrones se almacenan como datos JSON, y me gustaría hacer un análisis del audio renderizado de cada lado del servidor de patrones. Esto me deja con dos opciones, por lo que puedo ver:
Ejecutar mi propio código de representación del lado del servidor, tratando de hacerlo lo más fiel posible a la representación en el navegador. Tal vez incluso podría extraer el código de audio de la web del proyecto Chromium y modificarlo, pero esto parece potencialmente mucho trabajo.
Realice el renderizado del lado del cliente, con suerte más rápido que en tiempo real, y luego envíe el audio renderizado al servidor. Esto es ideal (y SECO), porque solo se usa un motor para la representación de patrones.
losPosible SoluciónEsta pregunta llevame aEste ejemplo de código en el repositorio de Chromium., lo que parece indicar que el procesamiento offline es una posibilidad. El truco parece estar construyendo unwebkitAudioContext
con algunos argumentos (usualmente, se usa un constructor de argumento cero). Las siguientes son mis conjeturas sobre lo que significan los parámetros:
new webkitAudioContext(2, // channels
10 * 44100, // length in samples
44100); // sample rate
Adapté ligeramente la muestra y la probé en Chrome 23.0.1271.91 en Windows, Mac y Linux.Aquí está el ejemplo en vivoy los resultados (abra la Consola de Javascript de Dev Tools para ver qué está pasando):
Mac -¡¡Funciona!!Windows -FALLAR - SYNTAX_ERR: Excepción DOM 12Linux -FALLAR - SYNTAX_ERR: Excepción DOM 12loswebkitAudioContext
El constructor que describí anteriormente causa la excepción en Windows y Linux.
La representación fuera de línea seríaPerfecto por lo que estoy tratando de hacer, pero no puedo encontrar documentación en ninguna parte, y el soporte es menos que ideal. ¿Alguien tiene más información sobre esto? ¿Debería esperar soporte para esto en Windows y / o Linux pronto, o debo esperar soporte paradesaparecer pronto en Mac?