投稿者 tel | 2014年5月3日

Web Audioで音声ファイルを再生する

Web Audio事始め。とりあえず音声ファイルを読み込んで再生してみた。

http://jsdo.it/sapphire_al2o3/o9el

まずはAudioContextを作成する。

var context = new (window.AudioContext || window.webkitAudioContext)();

音声ファイルを読み込む。今回はエクスプローラからドロップしたファイルをFileReaderで読み込むことにした。
バイナリとして読み込んだ音声ファイルはdecodeAudioDataでデコードする必要がある。

var f = new FileReader();
f.onload = function(e) {
    context.decodeAudioData(
        e.target.result,
        function(b) {
            buffer = b;
            source = play();
        },
        function(error) {
            console.error(error);
        }
    );
};
f.readAsArrayBuffer(name);

ノードをつないで再生。バッファから再生する場合はcreateBufferSourceでAudioBufferSourceNodeを作成して出力のノードに繋ぐ。

 function play() {
    var source = context.createBufferSource();
    source.buffer = buffer;
    source.connect(context.destination);
    source.start(0);
    return source;
}

startは1回しか呼べないので再生するたびにAudioBufferSourceNodeを作り直す必要がある。

再生を止めるときはstopを呼び出す。

source.stop(0);

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

カテゴリー

%d人のブロガーが「いいね」をつけました。