| 01 | <!DOCTYPE html> |
|---|---|
| 02 | <html lang="ja"> |
| 03 | <head> |
| 04 | <meta charset="utf-8"> |
| 05 | <title>WEB Audio API の使い方</title> |
| 06 | </head> |
| 07 | <body> |
| 08 | |
| 09 | <a href="../jsh5_033.html">講座に戻る</a><br><br> |
| 10 | |
| 11 | <input type="button" value="出力開始" onclick="initWAA()"> |
| 12 | <br><br> |
| 13 | <input type="button" value="ド" onclick="setHZ(262)"> |
| 14 | <input type="button" value="レ" onclick="setHZ(294)"> |
| 15 | <input type="button" value="ミ" onclick="setHZ(330)"> |
| 16 | <input type="button" value="ファ" onclick="setHZ(349)"> |
| 17 | <input type="button" value="ソ" onclick="setHZ(392)"> |
| 18 | <input type="button" value="ラ" onclick="setHZ(440)"> |
| 19 | <input type="button" value="シ" onclick="setHZ(494)"> |
| 20 | <br><br> |
| 21 | <input type="button" value="正弦波" onclick="setWV('sine')"> |
| 22 | <input type="button" value="矩形波" onclick="setWV('square')"> |
| 23 | <input type="button" value="ノコギリ波" onclick="setWV('sawtooth')"> |
| 24 | <input type="button" value="三角波" onclick="setWV('triangle')"> |
| 25 | <br><br> |
| 26 | <input type="button" value="一時停止" onclick="susWAA()"> |
| 27 | <input type="button" value="再開" onclick="resWAA()"> |
| 28 | |
| 29 | <script> |
| 30 | |
| 31 | var aCtx, ac_osci, ac_dest; |
| 32 | |
| 33 | function initWAA() { |
| 34 | try { |
| 35 | aCtx = new AudioContext; |
| 36 | ac_osci = aCtx.createOscillator();//OscillatorNodeを作成 |
| 37 | ac_dest = aCtx.destination;//音の出力先(通常はスピーカーとなる) |
| 38 | ac_osci.connect(ac_dest);//出力先に接続 |
| 39 | ac_osci.start();//音の出力を開始 |
| 40 | } |
| 41 | catch(e) { alert( "Web Audio に対応していません" ); } |
| 42 | } |
| 43 | |
| 44 | function setHZ(val) { ac_osci.frequency.value = val; } |
| 45 | function setWV(val) { ac_osci.type = val; } |
| 46 | |
| 47 | function susWAA() { aCtx.suspend(); } |
| 48 | function resWAA() { aCtx.resume(); } |
| 49 | |
| 50 | </script> |
| 51 | </body> |
| 52 | </html> |
オーディオコンテキストを作成
↓
オシレーターを作成
↓
※オシレーターの周波数と波形を設定
↓
音の出力先を設定(通常はスピーカーとなる)
↓
スタート命令で音の出力を開始
aCtx = new AudioContext;
ac_osci = aCtx.createOscillator();
ac_dest = aCtx.destination;
ac_osci.connect(ac_dest);
ac_osci.start();
| index | 画面 | 内容 |
|---|---|---|
| 0 | 初期化 | 画像の読み込み |
| 1 | タイトル | スペースキーかタップでスタート |
| 2 | ゲーム | キャラをジャンプさせる処理 シャボン玉の処理 時間が無くなると結果へ |
| 3 | 結果 | Time is up と表示し、一定時間後、タイトルに戻る |
| 変数名 | 用途 |
|---|---|
| idx,tmr | インデックスとタイマー |
| gtime | ゲーム時間 |
| score,hisco | スコア、ハイスコア |
| scrl | 背景のスクロール用 |
| ix,iy | 猫の座標 |
| yp | ジャンプ用の変数(Y座標の変化量) |
| bx[], by[] | シャボン玉の座標 |
| bb[] | シャボン玉の破裂演出 |
var BUBBLE = 7;
var BBLCOL = ["#f00", "#e80", "#dc0", "#4d0", "#0ac", "#48f", "#c4f" ];


今回解説したのはオシレーターを用いて音を出すという WEB Audio API の基礎です。 WEB Audio API を使えば、オーディオバッファに波形データをセットして音を流したり、エフェクトを掛けた音声を出力するプログラムを組むことができます。 またモジラ社の開発者サイトによると立体音響やドップラー効果も実現できるとのことです。 詳しい利用法をお知りになりたい方は https://developer.mozilla.org/ja/docs/Web/API/Web_Audio_API を参考になさって下さい。
