const descriptions = ['Text Description 1', 'Text Description 2', 'Text Description 3', 'Text Description 4']; const models = ['AR', 'FM', 'FM_VAE', 'GT']; function createSection1Table() { let table = ''; models.forEach(model => table += ``); table += ''; descriptions.forEach((desc, idx) => { table += ``; models.forEach(model => { const audioSrc = `section1/audio/text${idx+1}_${model.toLowerCase()}.wav`; table += ``; }); table += ''; }); table += '
Text Description${model}
${desc}
'; document.getElementById('section1').innerHTML = table; } function createSectionWithObj(sectionId, sectionPath) { let table = ''; models.forEach(model => table += ``); table += ''; descriptions.forEach((desc, idx) => { table += ``; models.forEach(model => { const audioSrc = `${sectionPath}/audio/text${idx+1}_${model.toLowerCase()}.wav`; const imageSrc = `${sectionPath}/images/text${idx+1}_${model.toLowerCase()}.png`; table += ``; }); table += ''; }); table += '
Text Description${model}
${desc}
'; document.getElementById(sectionId).innerHTML = table; } function setupWaveformOverlay(sectionId) { descriptions.forEach((desc, idx) => { models.forEach(model => { const canvas = document.getElementById(`canvas_${sectionId}_${idx+1}_${model}`); const ctx = canvas.getContext('2d'); const img = new Image(); img.src = `${sectionId}/images/text${idx+1}_${model.toLowerCase()}.png`; img.onload = () => ctx.drawImage(img, 0, 0, canvas.width, canvas.height); const audio = document.getElementById(`audio_${sectionId}_${idx+1}_${model}`); let interval; audio.addEventListener('play', () => { interval = setInterval(() => { const x = (audio.currentTime / audio.duration) * canvas.width; ctx.clearRect(0, 0, canvas.width, canvas.height); ctx.drawImage(img, 0, 0, canvas.width, canvas.height); ctx.beginPath(); ctx.moveTo(x, 0); ctx.lineTo(x, canvas.height); ctx.strokeStyle = 'red'; ctx.stroke(); }, 30); }); audio.addEventListener('pause', () => clearInterval(interval)); audio.addEventListener('ended', () => clearInterval(interval)); }); }); } createSection1Table(); createSectionWithObj('section2', 'section2'); createSectionWithObj('section3', 'section3'); window.onload = () => { setupWaveformOverlay('section2'); setupWaveformOverlay('section3'); };