ARvsFM / script.js
Unk-Uname's picture
Upload 268 files
71f03b9 verified
raw
history blame
2.98 kB
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 = '<table><thead><tr><th>Text Description</th>';
models.forEach(model => table += `<th>${model}</th>`);
table += '</tr></thead><tbody>';
descriptions.forEach((desc, idx) => {
table += `<tr><td>${desc}</td>`;
models.forEach(model => {
const audioSrc = `section1/audio/text${idx+1}_${model.toLowerCase()}.wav`;
table += `<td><audio controls src="${audioSrc}"></audio></td>`;
});
table += '</tr>';
});
table += '</tbody></table>';
document.getElementById('section1').innerHTML = table;
}
function createSectionWithObj(sectionId, sectionPath) {
let table = '<table><thead><tr><th>Text Description</th>';
models.forEach(model => table += `<th>${model}</th>`);
table += '</tr></thead><tbody>';
descriptions.forEach((desc, idx) => {
table += `<tr><td>${desc}</td>`;
models.forEach(model => {
const audioSrc = `${sectionPath}/audio/text${idx+1}_${model.toLowerCase()}.wav`;
const imageSrc = `${sectionPath}/images/text${idx+1}_${model.toLowerCase()}.png`;
table += `<td>
<canvas id="canvas_${sectionId}_${idx+1}_${model}" width="200" height="100" style="border:1px solid #ccc;"></canvas>
<audio id="audio_${sectionId}_${idx+1}_${model}" controls src="${audioSrc}"></audio>
</td>`;
});
table += '</tr>';
});
table += '</tbody></table>';
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');
};