音の鳴るブログ

鳴らないこともある

良くない

http://mohayonao.herokuapp.com/d

時期を逸した感があるけど、ドッドドドリランドのやつにダウンロード機能をつけた。22.05KHz,15秒,ステレオのwavデータが取れる。WebWorkerを使ってバックグラウンドでwavdataを生成して、メインスレッドの側でデータへのリンク href="data:audio/wav;base64,"+btoa(wavdata) をつけているだけ。最初はWorker側で全部のデータをつくってpostMessageしていたけど、分割してpostMessageして最後にメインスレッド側で join するほうが早いっぽい。あと、あまり巨大なデータを処理しようとするとブラウザが死ぬ。どのくらいで死ぬかはたぶん環境によるのだろうけど、よく分からない。

右クリックで保存してくださいって出しているけど、拡張子も指定できないし何か辛い。クリックしたらダウンロードするようにしたいけど、やり方が分からない。

 

結局、Chrome, FireFox, Opera, iPhone に対応させたけど、それぞれやり方が違うのは良くないと思う。

上の3つについてはインターフェイスを作ってあるので、音を生成する部分だけ書けば良いようにしているのだけど、たとえばWeb Audio APIの複雑な機能とかは使えなくて、エフェクト処理も自分で書かないといけない。

 

あとサンプリングデータを使いたい場合もそれぞれで異なっている。最終的に1サンプルごとの数値の配列が欲しいのだけど、

Chrome -> ajaxでbinary取得 -> AudioContext.decodeAudioData でデータ取得
 ※ 同一ドメインか Access-Control-Allow-Origin: がないとセキュリティエラー

FireFox -> ajaxでbinary取得 -> volume 0 で再生 -> MozAudioAvailable でデータ取得
 ※ 同一ドメインでないとセキュリティエラー。一回再生しないといけない(?)

Opera -> base64エンコードしたテキストファイルを ajax で取得 -> 変換
 ※ ださい

 

良くない。