[ユーザーによるポイントを明確にするために編集された質問。以下の私のコメントは削除され、代わりにここに含まれています。]
110 秒の長いサウンド ファイル (mp3) があります。このファイルの冒頭では、音楽はハッピーですが、終盤になると次第に不吉になります。注: オーディオは全体を通して通常の速度で再生されます。
可変の「var Tension;」があります。値は 0 から 1 の間です (例: 0.35)。これは、ゲーム内で不気味なものがどの程度発生しているかを測定します。張力 = 0.0 の値は安全であることを意味し、張力 = 0.5 の値は醸造に少し問題があることを意味し、張力 = 1.0 の値はうんちがファンに当たっていることを意味します。ただし、0.0 から 1.0 までのすべての 10 進数値を取得できます。危険にどれだけ近づいたか、または誰かがあなたを追いかけているかどうかによって設定されます。
以下は、プログラムの開始時にメモリ内に作成されたグローバル Audio 要素です。
var g_TensionSound = new Audio();
g_TensionSound.src = "mysoundfile.mp3";
mp3 ファイルが完全に読み込まれるのを待ちました。
毎秒タイマー イベントを使用して、次のコードを呼び出します。
g_TensionSound.currentTime = 5.0 + 100 * tension;
if(g_TensionSound.paused) g_TensionSound.play();
たとえば、タイマー イベントが最初にトリガーされたときは、tension = 0; で、音楽ファイルでわかりやすいサウンドが再生されます (つまり、5 秒のマークで)。次にタイマーイベントがトリガーされたとき、プレーヤーは何らかのトラブルに近づき、テンションはテンション = 0.25 に上昇しました。今度は、ファイルの 30 秒 (5 + テンション * 100) マークの音楽のセグメントが再生されます。
残念ながら、これは新しい currentTime に切り替わる際にわずかな遅延を伴い、非常に小さな結果をもたらします。誰かがこれについて何か知っていますか、またはそれを解決する方法はありますか?