feat: Geração de música cantada com melodia e instrumentos pelo MiniMax music-2.0 e barra de progresso animada em roxo vibrante no player

This commit is contained in:
2026-09-01 10:54:40 +00:00
parent b7e16bb12f
commit 57d5e6e3e1
4 changed files with 111 additions and 32 deletions
+38 -1
View File
@@ -7591,7 +7591,20 @@ window.toggleCustomAudio = (btn) => {
});
}
// Equalizer / Waveform Animation quando toca
// Formatação de Tempo (mm:ss)
const formatAudioTime = (sec) => {
if (!sec || isNaN(sec)) return '0:00';
const m = Math.floor(sec / 60);
const s = Math.floor(sec % 60);
return `${m}:${s < 10 ? '0' : ''}${s}`;
};
// Equalizer / Waveform & Barra de Progresso Roxo Vibrante
const musicaCustomProgressContainer = document.getElementById('musicaCustomProgressContainer');
const musicaCustomProgressBar = document.getElementById('musicaCustomProgressBar');
const musicaCurrentTime = document.getElementById('musicaCurrentTime');
const musicaDurationTime = document.getElementById('musicaDurationTime');
if (musicaAudioPlayer) {
musicaAudioPlayer.addEventListener('play', () => {
const bars = document.querySelectorAll('#musicaWaveformVisualizer .wave-bar');
@@ -7601,6 +7614,30 @@ window.toggleCustomAudio = (btn) => {
const bars = document.querySelectorAll('#musicaWaveformVisualizer .wave-bar');
bars.forEach(b => b.classList.remove('wave-active'));
});
musicaAudioPlayer.addEventListener('timeupdate', () => {
const cur = musicaAudioPlayer.currentTime || 0;
const dur = musicaAudioPlayer.duration || 0;
if (musicaCurrentTime) musicaCurrentTime.textContent = formatAudioTime(cur);
if (musicaDurationTime && dur) musicaDurationTime.textContent = formatAudioTime(dur);
if (musicaCustomProgressBar && dur > 0) {
const pct = Math.min(100, Math.max(0, (cur / dur) * 100));
musicaCustomProgressBar.style.width = `${pct}%`;
}
});
musicaAudioPlayer.addEventListener('loadedmetadata', () => {
const dur = musicaAudioPlayer.duration || 0;
if (musicaDurationTime) musicaDurationTime.textContent = formatAudioTime(dur);
});
if (musicaCustomProgressContainer) {
musicaCustomProgressContainer.addEventListener('click', (e) => {
const rect = musicaCustomProgressContainer.getBoundingClientRect();
const clickPos = (e.clientX - rect.left) / rect.width;
if (musicaAudioPlayer.duration) {
musicaAudioPlayer.currentTime = clickPos * musicaAudioPlayer.duration;
}
});
}
}
// --- GERAR MÚSICA (COMPOR 3 VERSÕES + ÁUDIO) ---