Web Audio APIはInternet Explorerでは利用できないため、Microsoft Edge, FireFox, Chrome などのWebブラウザを利用します。
sound2.mp3
を配置します。<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title></title>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, user-scale=yes, initial-scale=1.0, maximum-scale=5.0" />
<script type="text/javascript">
var request, source, stopflag=0;
window.onload = function () {
request = new XMLHttpRequest();
request.open("GET", "sound2.mp3", true);
request.responseType = "arraybuffer";
request.onload = completeOnLoad;
request.send();
};
function completeOnLoad() {
window.AudioContext = window.AudioContext || window.webkitAudioContext;
context = new AudioContext();
// オーディオをデコード
context.decodeAudioData(request.response, function (buf) {
source.buffer = buf;
source.loop = false;
});
source = context.createBufferSource();
var elem = document.getElementById("Play");
elem.addEventListener("click", playStart, false);
var elem2 = document.getElementById("Pause");
elem2.addEventListener("click", playPause, false);
}
function playStart() {
source.connect(context.destination);
source.start(0);
}
function playPause() {
if (stopflag == 0) {
context.suspend();
stopflag = 1;
} else {
context.resume();
stopflag = 0;
}
}
</script>
</head>
<body>
<a id="Play" href="javascript:void(0);">再生</a><br />
<a id="Pause" href="javascript:void(0);">停止/再開</a><br />
</body>
</html>
window.onload = function () {
request = new XMLHttpRequest();
request.open("GET", "sound2.mp3", true);
request.responseType = "arraybuffer";
request.onload = completeOnLoad;
request.send();
};
ページ表示時に、HttpRequestを準備します。このHttpRequestでサウンドファイルにアクセスします。onloadイベントにcompleteOnLoad()関数を設定し、サウンドファイルの読み込みの完了後にcompleteOnLoad()関数を実行させます。 function completeOnLoad() {
window.AudioContext = window.AudioContext || window.webkitAudioContext;
context = new AudioContext();
// オーディオをデコード
context.decodeAudioData(request.response, function (buf) {
source.buffer = buf;
source.loop = false;
});
source = context.createBufferSource();
var elem = document.getElementById("Play");
elem.addEventListener("click", playStart, false);
}
サウンドファイルの読み込み後、completeOnLoad関数が実行されます。new AudioContext();により、新しい、AucioContextオブジェクトを作成します。 function playStart() {
source.connect(context.destination);
source.start(0);
}
リンクがクリックされたときは、バッファへ接続し、サウンドの再生を開始します。context.suspend();
メソッドを呼び出しサウンドを停止します。
サウンドが停止中の場合は、context.resume();
メソッドを呼び出しサウンドを再生します。 function playPause() {
if (stopflag == 0) {
context.suspend();
stopflag = 1;
} else {
context.resume();
stopflag = 0;
}
}
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title></title>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, user-scale=yes, initial-scale=1.0, maximum-scale=5.0" />
<script type="text/javascript">
var request, source, stopflag=0;
function playSound() {
request = new XMLHttpRequest();
request.open("GET", "sound2.mp3", true);
request.responseType = "arraybuffer";
request.onload = completeOnLoad;
request.send();
}
function completeOnLoad() {
context = new AudioContext();
source = context.createBufferSource();
// オーディオをデコード
context.decodeAudioData(request.response, function (buf) {
source.buffer = buf;
source.loop = false;
});
source.connect(context.destination);
source.start(0);
}
function playPause() {
if (stopflag == 0) {
context.suspend();
stopflag = 1;
} else {
context.resume();
stopflag = 0;
}
}
</script>
</head>
<body>
<a id="Play" href="javascript:void(0);" onclick="playSound();">再生</a><br />
<a id="Pause" href="javascript:void(0);" onclick="playPause();">停止/再開</a><br />
</body>
</html>