daydreamer-json commited on
Commit
75730ed
·
verified ·
1 Parent(s): 272040d
Files changed (1) hide show
  1. umm_audiosync_test.html +83 -73
umm_audiosync_test.html CHANGED
@@ -81,65 +81,77 @@
81
  logger(`charaIDは${charaID[i]}です: id=${i + 1}`);
82
  }
83
  document.getElementById("urllistbox").value = "";
84
- for (let i = 0; i < audioFiles.length; i++) {
85
- remote_file_head_test(audioFiles[i], i);
86
- }
87
- // 配列の要素数だけ繰り返す
88
- for (let i = 0; i < audioFiles.length; i++) {
89
- // Howlオブジェクトを作成して配列に追加
90
- howls[i] = new Howl({
91
- src: audioFiles[i], // 音声ファイルのパス
92
- preload: true, // 読み込み完了まで待つかどうか
93
- autoplay: false, // 自動再生するかどうか
94
- loop: true, // ループ再生するかどうか
95
- });
96
- logger(`Howlオブジェクトを作成しました: id=${i}`);
97
- }
98
- // 全ての音声ファイルが読み込まれたら実行する関数を設定
99
- var loadedCount = 0; // 読み込まれた音声ファイルの数
100
- var onLoad = function () {
101
- loadedCount++; // 読み込まれた数を増やす
102
- logger(`音声ファイルがプリロードされました: id=${loadedCount - 1}`);
103
- document.getElementById("urllistbox").value +=
104
- audioFiles[loadedCount - 1].match(/([^\/?#]+)(?=[^\/]*$)/)[0] +
105
- "\r\n";
106
- if (loadedCount == audioFiles.length) {
107
- // 全て読み込まれたら
108
- howls[0].volume(okeVol);
109
- logger(
110
- `Howlオブジェクトのvolumeを変更しました: id=0, value=${okeVol}`
111
- );
112
- for (let j = 2; j <= 3; j++) {
113
- howls[j].volume(charaVol2); // ボーカルの音源3つ(インデックス1から3)の音量を設定(追加したコード)
114
  logger(
115
- `Howlオブジェクトのvolumeを変更しました: id=${j}, value=${charaVol2}`
116
  );
117
- }
118
- howls[1].volume(charaVol1);
119
- logger(
120
- `Howlオブジェクトのvolumeを変更しました: id=1, value=${charaVol1}`
121
- );
122
- howls[2].stereo(0 - charaPan); // 特定のボーカルだけ左チャンネルに寄せる(追加したコード)
123
- logger(
124
- `Howlオブジェクトのstereoを変更しました: id=2, value=${
125
- 0 - charaPan
126
- }`
127
- );
128
- howls[3].stereo(charaPan); // 特定のボーカルだけ右チャンネルに寄せる(追加したコード)
129
- logger(
130
- `Howlオブジェクトのstereoを変更しました: id=3, value=${charaPan}`
131
- );
132
- for (let j = 0; j < howls.length; j++) {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
133
  // 配列の要素数だけ繰り返す
134
- howls[j].play(); // 再生する(Howlオブジェクトは自動的に同期される)
135
- logger(`Howlオブジェクトを再生しました: id=${j}`);
 
 
 
136
  }
 
137
  }
138
- };
139
- for (let k = 0; k < howls.length; k++) {
140
- // 配列の要素数だけ繰り返す
141
- howls[k].once("load", onLoad); // 読み込み完了時にonLoad関数を実行するように設定
142
- }
143
  }
144
  // 再生停止用の関数を定義(追加したコード)
145
  function stopAll() {
@@ -173,16 +185,12 @@
173
  return null;
174
  });
175
  }
176
- function remote_file_head_test(url, id) {
177
- fetch(url, { method: "HEAD" })
178
- .then((response) => {
179
- logger(
180
- `リモートファイルへHEADしました: id=${id}, status=${response.status}`
181
- );
182
- })
183
- .catch((error) => {
184
- console.error(error);
185
- });
186
  }
187
  </script>
188
  </head>
@@ -237,8 +245,8 @@
237
  type="number"
238
  inputmode="decimal"
239
  required
240
- min="0"
241
- max="1"
242
  value="1"
243
  />
244
  <input
@@ -247,8 +255,8 @@
247
  type="number"
248
  inputmode="decimal"
249
  required
250
- min="0"
251
- max="1"
252
  value="0.8"
253
  />
254
  <input
@@ -257,8 +265,8 @@
257
  type="number"
258
  inputmode="decimal"
259
  required
260
- min="0"
261
- max="1"
262
  value="0.6"
263
  />
264
  <input
@@ -267,12 +275,14 @@
267
  type="number"
268
  inputmode="decimal"
269
  required
270
- min="0"
271
- max="1"
272
  value="0.35"
273
  />
274
  <br />
275
- <textarea id="textbox" style="height: 400px" readonly>Logger出力はここに表示されます</textarea>
 
 
276
  <br />
277
  <textarea id="urllistbox" style="height: 8em" readonly></textarea>
278
  </body>
 
81
  logger(`charaIDは${charaID[i]}です: id=${i + 1}`);
82
  }
83
  document.getElementById("urllistbox").value = "";
84
+ remote_file_head_test(audioFiles).then((statusList) => {
85
+ if (statusList.every((status) => status === 200)) {
86
+ for (let i = 0; i < statusList.length; i++) {
87
+ logger(`リモートファイルへHEADしました: id=${i}, status=${statusList[i]}`);
88
+ };
89
+ logger(`リモートファイルは正常です`);
90
+ // 配列の要素数だけ繰り返す
91
+ for (let i = 0; i < audioFiles.length; i++) {
92
+ // Howlオブジェクトを作成して配列に追加
93
+ howls[i] = new Howl({
94
+ src: audioFiles[i], // 音声ファイルのパス
95
+ preload: true, // 読み込み完了まで待つかどうか
96
+ autoplay: false, // 自動再生するかどうか
97
+ loop: true, // ループ再生するかどうか
98
+ });
99
+ logger(`Howlオブジェクトを作成しました: id=${i}`);
100
+ }
101
+ // 全ての音声ファイルが読み込まれたら実行する関数を設定
102
+ var loadedCount = 0; // 読み込まれた音声ファイルの数
103
+ var onLoad = function () {
104
+ loadedCount++; // 読み込まれた数を増やす
 
 
 
 
 
 
 
 
 
105
  logger(
106
+ `音声ファイルがプリロードされました: id=${loadedCount - 1}`
107
  );
108
+ document.getElementById("urllistbox").value +=
109
+ audioFiles[loadedCount - 1].match(/([^\/?#]+)(?=[^\/]*$)/)[0] +
110
+ "\r\n";
111
+ if (loadedCount == audioFiles.length) {
112
+ // 全て読み込まれたら
113
+ howls[0].volume(okeVol);
114
+ logger(
115
+ `Howlオブジェクトのvolumeを変更しました: id=0, value=${okeVol}`
116
+ );
117
+ for (let j = 2; j <= 3; j++) {
118
+ howls[j].volume(charaVol2); // ボーカルの音源3つ(インデックス1から3)の音量を設定(追加したコード)
119
+ logger(
120
+ `Howlオブジェクトのvolumeを変更しました: id=${j}, value=${charaVol2}`
121
+ );
122
+ }
123
+ howls[1].volume(charaVol1);
124
+ logger(
125
+ `Howlオブジェクトのvolumeを変更しました: id=1, value=${charaVol1}`
126
+ );
127
+ howls[2].stereo(0 - charaPan); // 特定のボーカルだけ左チャンネルに寄せる(追加したコード)
128
+ logger(
129
+ `Howlオブジェクトのstereoを変更しました: id=2, value=${
130
+ 0 - charaPan
131
+ }`
132
+ );
133
+ howls[3].stereo(charaPan); // 特定のボーカルだけ右チャンネルに寄せる(追加したコード)
134
+ logger(
135
+ `Howlオブジェクトのstereoを変更しました: id=3, value=${charaPan}`
136
+ );
137
+ for (let j = 0; j < howls.length; j++) {
138
+ // 配列の要素数だけ繰り返す
139
+ howls[j].play(); // 再生する(Howlオブジェクトは自動的に同期される)
140
+ logger(`Howlオブジェクトを再生しました: id=${j}`);
141
+ }
142
+ }
143
+ };
144
+ for (let k = 0; k < howls.length; k++) {
145
  // 配列の要素数だけ繰り返す
146
+ howls[k].once("load", onLoad); // 読み込み完了時にonLoad関数を実行するように設定
147
+ }
148
+ } else {
149
+ for (let i = 0; i < statusList.length; i++) {
150
+ logger(`リモートファイルへHEADしました: id=${i}, status=${statusList[i]}`);
151
  }
152
+ logger(`リモートファイルの一部に問題があります`);
153
  }
154
+ });
 
 
 
 
155
  }
156
  // 再生停止用の関数を定義(追加したコード)
157
  function stopAll() {
 
185
  return null;
186
  });
187
  }
188
+ async function remote_file_head_test(audioFilesList) {
189
+ const promises = audioFilesList.map((url) =>
190
+ fetch(url, { method: "HEAD" })
191
+ );
192
+ const responses = await Promise.all(promises);
193
+ return responses.map((response) => response.status);
 
 
 
 
194
  }
195
  </script>
196
  </head>
 
245
  type="number"
246
  inputmode="decimal"
247
  required
248
+ min="0.0"
249
+ max="1.0"
250
  value="1"
251
  />
252
  <input
 
255
  type="number"
256
  inputmode="decimal"
257
  required
258
+ min="0.0"
259
+ max="1.0"
260
  value="0.8"
261
  />
262
  <input
 
265
  type="number"
266
  inputmode="decimal"
267
  required
268
+ min="0.0"
269
+ max="1.0"
270
  value="0.6"
271
  />
272
  <input
 
275
  type="number"
276
  inputmode="decimal"
277
  required
278
+ min="0.0"
279
+ max="1.0"
280
  value="0.35"
281
  />
282
  <br />
283
+ <textarea id="textbox" style="height: 400px" readonly>
284
+ Logger出力はここに表示されます</textarea
285
+ >
286
  <br />
287
  <textarea id="urllistbox" style="height: 8em" readonly></textarea>
288
  </body>