Offline- / Nicht-Echtzeit-Rendering mit der Web-Audio-API

Das Problem

Ich arbeite an einer Webanwendung, in der Benutzer Audiobeispiele sequenzieren und optional Effekte auf die Musikmuster anwenden können, die sie mit der Web-Audio-API erstellen. Die Muster werden als JSON-Daten gespeichert, und ich möchte eine Analyse der gerenderten Audiodaten der einzelnen Pattern-Server durchführen. Dies lässt mir zwei Möglichkeiten, soweit ich sehen kann:

Führen Sie meinen eigenen Rendering-Code serverseitig aus und versuchen Sie, ihn so originalgetreu wie möglich für das Rendering im Browser zu gestalten. Vielleicht könnte ich sogar den Web-Audio-Code aus dem Chromium-Projekt ziehen und ihn ändern, aber dies scheint möglicherweise eine Menge Arbeit zu bedeuten.

Machen Sie das Rendering clientseitig, hoffentlich schneller als in Echtzeit, und senden Sie das gerenderte Audio an den Server. Dies ist ideal (und DRY), da nur eine Engine für die Musterwiedergabe verwendet wird.

DasMöglich Lösung

Diese Frage führe mich zuDieses Codebeispiel im Chromium-RepositoryDies scheint darauf hinzudeuten, dass eine Offline-Verarbeitung möglich ist. Der Trick scheint zu sein, a zu konstruierenwebkitAudioContext mit einigen Argumenten (normalerweise wird ein Konstruktor mit Nullargumenten verwendet). Das Folgende sind meine Vermutungen, was die Parameter bedeuten:

new webkitAudioContext(2,          // channels
                       10 * 44100, // length in samples
                       44100);     // sample rate

Ich habe das Beispiel leicht angepasst und es in Chrome 23.0.1271.91 unter Windows, Mac und Linux getestet.Hier ist das Live-Beispielund die Ergebnisse (öffne die Dev Tools Javascript-Konsole, um zu sehen, was passiert):

Mac -Es klappt!!Windows -SCHEITERN - SYNTAX_ERR: DOM-Ausnahme 12Linux -SCHEITERN - SYNTAX_ERR: DOM-Ausnahme 12

DaswebkitAudioContext Der oben beschriebene Konstruktor verursacht die Ausnahme unter Windows und Linux.

Meine Frage

Offline-Rendering wäreperfekt für das, was ich versuche, aber ich kann nirgendwo Dokumentation finden, und die Unterstützung ist nicht ideal. Hat jemand mehr Informationen dazu? Sollte ich bald Unterstützung für Windows und / oder Linux erwarten, oder sollte ich Unterstützung für erwartenverschwinden bald auf dem Mac?

Antworten auf die Frage(1)

Ihre Antwort auf die Frage