diff --git a/node-server/assets/script.js b/node-server/assets/script.js index afe817d..1023813 100644 --- a/node-server/assets/script.js +++ b/node-server/assets/script.js @@ -1,5 +1,6 @@ // 1. Sélection des éléments du DOM const vinyl = document.getElementById('vinyl'); +const originalSrc = audio.getAttribute('src'); const audio = document.getElementById('audio'); const progress = document.getElementById('progress'); const currentTimeEl = document.getElementById('currentTime'); @@ -13,6 +14,9 @@ let isPlaying = false; let isLooping = false; let idleTimeout = null; let reverseInterval = null; +let reverseAudioLoaded = false; +const reverseSrc = audio.dataset.reverseSrc; + // 3. Variables pour calculer la vitesse de rotation let lastPosition = null; @@ -114,9 +118,18 @@ function stopPlayback() { } function simulateReverse(speed) { - // vitesse = ticks/sec → convertir en vitesse de recul const reverseSpeed = Math.min(speed * 0.01, 2); // seconds per step + if (!reverseAudioLoaded && reverseSrc) { + audio.src = reverseSrc; + audio.load(); + reverseAudioLoaded = true; + audio.addEventListener('loadedmetadata', () => { + audio.currentTime = audio.duration - 0.1; // start from the end + }, { once: true }); + return; // attend que le fichier soit chargé + } + if (!reverseInterval) { reverseInterval = setInterval(() => { if (audio.currentTime > 0.05) { @@ -140,8 +153,20 @@ function stopReverse() { clearInterval(reverseInterval); reverseInterval = null; } + + if (reverseAudioLoaded) { + const currentTime = audio.currentTime; + audio.src = originalSrc; + audio.load(); + audio.addEventListener('loadedmetadata', () => { + audio.currentTime = Math.min(currentTime, audio.duration - 0.1); + }, { once: true }); + reverseAudioLoaded = false; + } } + + // 6. Événements vinyl.addEventListener('click', togglePlay);