まず前提条件ですがブラウザのセキュリティの関係で
自動で音響データを再生することができなくなっています。
しかし一度ボタンを押してもらった後なら切り替えができます。
サンプルですがブラウザで立ち上げた際は再生されません。
再生ボタンを押下するとはじめの音響データが再生されます
テストで入れてるのですが10秒後に次の音響データに切り替わります。(1度だけ)
これで一度再生できたらコントロールできることが判ります。
また再生中に再生ボタンを押しても次の音響データに切り替わります。
方法論ですがブラウザで表示された際「ミュート」ボタンがONの状態として作っておいて
「ミュート」ボタンを押したら(ミュート解除)音響データが再生されるようにするのが良いでしょう。
HTML
1<!DOCTYPE html>
2<html>
3<head>
4 <meta charset="utf-8" />
5 <title>切り替え</title>
6 <script type="text/javascript">
7 var playlist = [
8 'src/music1.mp3',
9 'src/music2.mp3',
10 'src/music3.mp3'
11 ]
12 var nPlayIndex = playlist.length;
13 var bIsPlay = false; // 処理テスト用
14
15 // 再生開始
16 function start_music(){
17 // ***** テスト用 ここから *****
18 // 初めて再生開始が実行された場合
19 if(bIsPlay == false){
20 bIsPlay = true;
21 window.setTimeout("start_music()", 10000); // 10秒後切り替え
22 }
23 // ***** テスト用 ここまで *****
24
25 var audioObj = document.getElementById("myMusic");
26 // つぎの音響ファイルを指定
27 if(nPlayIndex >= playlist.length - 1){
28 nPlayIndex = 0;
29 }else{
30 nPlayIndex ++;
31 }
32 audioObj.src = playlist[nPlayIndex];
33
34 audioObj.play();
35 }
36 // 再生停止(一時停止)
37 function start_pause(){
38 var audioObj = document.getElementById("myMusic");
39 audioObj.pause();
40 }
41 // 音量アップ
42 function volume_up(){
43 var audioObj = document.getElementById("myMusic");
44 audioObj.volume = audioObj.volume + 0.1;
45 }
46 // 音量ダウン
47 function volume_down(){
48 var audioObj = document.getElementById("myMusic");
49 audioObj.volume = audioObj.volume - 0.1;
50 }
51
52 </script>
53
54</head>
55<body onload="initAudio();">
56 <h1>スクリプトで音楽を制御する</h1>
57 <div>
58 <audio id="myMusic" controls loop style="display: none;"></audio>
59 </div>
60 <input type="button" id="play" value="再生" onclick="start_music()">
61 <input type="button" id="pause" value="停止" onclick="start_pause()"><br>
62 <input type="button" id="volumeup" value="音量アップ" onclick="volume_up()">
63 <input type="button" id="volumedown" value="音量ダウン" onclick="volume_down()">
64</body>
65</html>