先日のアップルWWDCで発表されたSafari 6がWeb Audio APIをサポートしているという話だったのですが、Developer Previewで確認したところ、微妙にChromeと挙動が違う部分があるようです。これに引っかかってWebModularがWeb Audio APIで動かなかったので、修正しました。
WebAudioAPIの存在を判定するために
if (typeof (webkitAudioContext) == "function") {
}
というような事をやっていたのですが、Safariでは “function”ではなく”object”になるようです。とりあえず、
if (typeof (webkitAudioContext) == "function" || typeof(webkitAudioContext) == "object") {
}
としましたけど、!=”undefined”で良いかも。
それからJavaScriptNodeを作る時、
audio.createJavaScriptNode(outbufsize, 0, 2);
だと駄目でオーディオ入力は使わなくても
audio.createJavaScriptNode(outbufsize, 2, 2);
とする必要があるみたいです。いまいち良くわかりませんが、このへんドキュメント的には 「It is invalid for both numberOfInputChannels and numberOfOutputChannels to be zero.」なんで同時に0にしちゃ駄目というだけだと思うのだけど解釈が違うのかな?