Renderowanie offline / w czasie rzeczywistym za pomocą interfejsu API Web Audio

Problem

Pracuję nad aplikacją internetową, w której użytkownicy mogą sekwencjonować próbki audio i opcjonalnie stosować efekty do tworzonych wzorów muzycznych za pomocą interfejsu API Web Audio. Wzory są przechowywane jako dane JSON i chciałbym przeprowadzić analizę renderowanego audio każdej strony wzorcowej po stronie serwera. Pozostawia mi to dwie opcje, o ile widzę:

Uruchom mój własny kod renderujący po stronie serwera, starając się uczynić go jak najbardziej wiernym do renderowania w przeglądarce. Może mógłbym nawet wyciągnąć kod Web Audio z projektu Chromium i zmodyfikować go, ale wydaje się, że to potencjalnie dużo pracy.

Wykonaj renderowanie po stronie klienta, miejmy nadzieję, że szybciej niż w czasie rzeczywistym, a następnie wyślij renderowane audio na serwer. Jest to idealne rozwiązanie (i DRY), ponieważ do renderowania wzorców używany jest tylko jeden silnik.

TheMożliwy Rozwiązanie

To pytanie poprowadź mnie doten przykładowy kod w repozytorium Chromium, co wydaje się wskazywać, że przetwarzanie w trybie offline jest możliwe. Sztuką wydaje się być skonstruowaniewebkitAudioContext z pewnymi argumentami (zwykle używany jest konstruktor o zerowym argumencie). Oto moje przypuszczenia dotyczące znaczenia parametrów:

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

Dostosowałem nieco próbkę i przetestowałem ją w Chrome 23.0.1271.91 na Windowsie, Macu i Linuksie.Oto przykład na żywoi wyniki (otwórz Konsolę JavaScript Narzędzia Dev, aby zobaczyć, co się dzieje):

Mac -To działa!!Windows -ZAWIEŚĆ - SYNTAX_ERR: wyjątek DOM 12Linux -ZAWIEŚĆ - SYNTAX_ERR: wyjątek DOM 12

ThewebkitAudioContext Konstruktor opisany powyżej powoduje wyjątek w systemach Windows i Linux.

Moje pytanie

Byłoby renderowanie offlineidealny za to, co próbuję zrobić, ale nie mogę znaleźć dokumentacji w żadnym miejscu, a wsparcie jest mniej niż idealne. Czy ktoś ma więcej informacji na ten temat? Czy powinienem oczekiwać wsparcia dla tego systemu w Windows i / lub Linuxie wkrótce, czy też powinienem oczekiwać wsparciaznikać wkrótce na Macu?

questionAnswers(1)

yourAnswerToTheQuestion