mirror of
https://codeberg.org/armin/noiz.git
synced 2026-09-01 05:50:52 +02:00
fix: swap audio element immediately during crossfade so pause controls the correct track
This commit is contained in:
parent
fddbdf9a1c
commit
ba7d3d0310
1 changed files with 23 additions and 21 deletions
10
index.html
10
index.html
|
|
@ -1263,13 +1263,14 @@ function playTrack(i) {
|
||||||
fg.gain.linearRampToValueAtTime(0, now + cd);
|
fg.gain.linearRampToValueAtTime(0, now + cd);
|
||||||
ng.gain.setValueAtTime(0, now);
|
ng.gain.setValueAtTime(0, now);
|
||||||
ng.gain.linearRampToValueAtTime(1, now + cd);
|
ng.gain.linearRampToValueAtTime(1, now + cd);
|
||||||
|
audio = audioNext;
|
||||||
|
audioNext = audio === audioElA ? audioElB : audioElA;
|
||||||
clearTimeout(crossfadeTimer);
|
clearTimeout(crossfadeTimer);
|
||||||
crossfadeTimer = setTimeout(() => {
|
crossfadeTimer = setTimeout(() => {
|
||||||
crossfadeTimer = null;
|
crossfadeTimer = null;
|
||||||
if (audio === audioElA) { audioElA.pause(); audioElA.removeAttribute('src'); audioElA.load(); }
|
audioNext.pause();
|
||||||
else { audioElB.pause(); audioElB.removeAttribute('src'); audioElB.load(); }
|
audioNext.removeAttribute('src');
|
||||||
audio = audioNext;
|
audioNext.load();
|
||||||
audioNext = audio === audioElA ? audioElB : audioElA;
|
|
||||||
isCrossfading = false;
|
isCrossfading = false;
|
||||||
}, cd * 1000 + 100);
|
}, cd * 1000 + 100);
|
||||||
updateUI();
|
updateUI();
|
||||||
|
|
@ -1371,6 +1372,7 @@ playBtn.addEventListener('click', () => {
|
||||||
audio.play().catch(() => {});
|
audio.play().catch(() => {});
|
||||||
} else {
|
} else {
|
||||||
audio.pause();
|
audio.pause();
|
||||||
|
if (isCrossfading) audioNext.pause();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
prevBtn.addEventListener('click', prevTrack);
|
prevBtn.addEventListener('click', prevTrack);
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue