Renderização offline / não real com a API de áudio da Web
Estou trabalhando em um aplicativo da web onde os usuários podem sequenciar amostras de áudio e, opcionalmente, aplicar efeitos aos padrões musicais que eles criam usando a API de áudio da web. Os padrões são armazenados como dados JSON e gostaria de fazer algumas análises do áudio renderizado de cada padrão do lado do servidor. Isso me deixa com duas opções, até onde eu posso ver:
Execute o meu próprio código de renderização do lado do servidor, tentando torná-lo o mais fiel possível para a renderização no navegador. Talvez eu possa até mesmo retirar o código de áudio da Web do projeto Chromium e modificá-lo, mas isso parece potencialmente muito trabalho.
Faça a renderização do lado do cliente, esperamos que seja mais rápido que o tempo real e, em seguida, envie o áudio renderizado para o servidor. Isso é ideal (e DRY), porque há apenas um mecanismo sendo usado para renderização de padrões.
oPossível SoluçãoEssa questão leva-me aeste exemplo de código no repositório do Chromium, o que parece indicar que o processamento offline é uma possibilidade. O truque parece estar construindo umawebkitAudioContext
com alguns argumentos (geralmente, um construtor de argumento zero é usado). A seguir estão meus palpites sobre o significado dos parâmetros:
new webkitAudioContext(2, // channels
10 * 44100, // length in samples
44100); // sample rate
Eu adaptei a amostra um pouco e a testei no Chrome 23.0.1271.91 no Windows, Mac e Linux.Aqui está o exemplo ao vivoe os resultados (abra o Dev Tools Javascript Console para ver o que está acontecendo):
Mac -Funciona!!Janelas -FALHOU - SYNTAX_ERR: exceção do DOM 12Linux -FALHOU - SYNTAX_ERR: exceção do DOM 12owebkitAudioContext
construtor que eu descrevi acima faz com que a exceção no Windows e Linux.
Renderização off-line seriaperfeito pelo que estou tentando fazer, mas não consigo encontrar documentação em lugar algum, e o suporte é menos do que ideal. Alguém tem mais informações sobre isso? Devo esperar suporte para isso no Windows e / ou Linux em breve, ou devo esperar suporte paradesaparecer em breve no Mac?