audio src
This commit is contained in:
parent
ac89ce77e6
commit
9033c8ad20
@ -1,5 +1,6 @@
|
|||||||
// 1. Sélection des éléments du DOM
|
// 1. Sélection des éléments du DOM
|
||||||
const vinyl = document.getElementById('vinyl');
|
const vinyl = document.getElementById('vinyl');
|
||||||
|
const originalSrc = audio.getAttribute('src');
|
||||||
const audio = document.getElementById('audio');
|
const audio = document.getElementById('audio');
|
||||||
const progress = document.getElementById('progress');
|
const progress = document.getElementById('progress');
|
||||||
const currentTimeEl = document.getElementById('currentTime');
|
const currentTimeEl = document.getElementById('currentTime');
|
||||||
@ -13,6 +14,9 @@ let isPlaying = false;
|
|||||||
let isLooping = false;
|
let isLooping = false;
|
||||||
let idleTimeout = null;
|
let idleTimeout = null;
|
||||||
let reverseInterval = null;
|
let reverseInterval = null;
|
||||||
|
let reverseAudioLoaded = false;
|
||||||
|
const reverseSrc = audio.dataset.reverseSrc;
|
||||||
|
|
||||||
|
|
||||||
// 3. Variables pour calculer la vitesse de rotation
|
// 3. Variables pour calculer la vitesse de rotation
|
||||||
let lastPosition = null;
|
let lastPosition = null;
|
||||||
@ -114,9 +118,18 @@ function stopPlayback() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function simulateReverse(speed) {
|
function simulateReverse(speed) {
|
||||||
// vitesse = ticks/sec → convertir en vitesse de recul
|
|
||||||
const reverseSpeed = Math.min(speed * 0.01, 2); // seconds per step
|
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) {
|
if (!reverseInterval) {
|
||||||
reverseInterval = setInterval(() => {
|
reverseInterval = setInterval(() => {
|
||||||
if (audio.currentTime > 0.05) {
|
if (audio.currentTime > 0.05) {
|
||||||
@ -140,8 +153,20 @@ function stopReverse() {
|
|||||||
clearInterval(reverseInterval);
|
clearInterval(reverseInterval);
|
||||||
reverseInterval = null;
|
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
|
// 6. Événements
|
||||||
|
|
||||||
vinyl.addEventListener('click', togglePlay);
|
vinyl.addEventListener('click', togglePlay);
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user