Audio: resume suspended AudioContext + sonify realistic propagation path

AudioContext starts suspended until user gesture — now resumes on
setEnabled(). Also added sonifyPacket to animateRealisticPropagation
which is the main code path when Realistic mode is on.
This commit is contained in:
you
2026-03-22 09:29:54 +00:00
parent ddc86a2574
commit a7e8a70c2f
3 changed files with 7 additions and 3 deletions
+4 -1
View File
@@ -73,7 +73,10 @@
// === Core: Initialize audio context ===
function initAudio() {
if (audioCtx) return;
if (audioCtx) {
if (audioCtx.state === 'suspended') audioCtx.resume();
return;
}
audioCtx = new (window.AudioContext || window.webkitAudioContext)();
masterGain = audioCtx.createGain();
masterGain.gain.value = 0.3;
+2 -2
View File
@@ -90,8 +90,8 @@
<script src="nodes.js?v=1774126708" onerror="console.error('Failed to load:', this.src)"></script>
<script src="traces.js?v=1774135052" onerror="console.error('Failed to load:', this.src)"></script>
<script src="analytics.js?v=1774126708" onerror="console.error('Failed to load:', this.src)"></script>
<script src="audio.js?v=1774171176" onerror="console.error('Failed to load:', this.src)"></script>
<script src="live.js?v=1774171176" onerror="console.error('Failed to load:', this.src)"></script>
<script src="audio.js?v=1774171793" onerror="console.error('Failed to load:', this.src)"></script>
<script src="live.js?v=1774171793" onerror="console.error('Failed to load:', this.src)"></script>
<script src="observers.js?v=1774290000" onerror="console.error('Failed to load:', this.src)"></script>
<script src="observer-detail.js?v=1774028201" onerror="console.error('Failed to load:', this.src)"></script>
<script src="node-analytics.js?v=1774126708" onerror="console.error('Failed to load:', this.src)"></script>
+1
View File
@@ -1484,6 +1484,7 @@
if (showOnlyFavorites && !packets.some(p => packetInvolvesFavorite(p))) return;
playSound(typeName);
if (window.MeshAudio) MeshAudio.sonifyPacket(first);
// Rain drop per observation in the group
packets.forEach((p, i) => setTimeout(() => addRainDrop(p), i * 150));