Slowed & Reverb Audio Tool
// Event listeners for file upload uploadBtn.addEventListener('click', () => audioUpload.click()); audioUpload.addEventListener('change', (e) => { if (e.target.files && e.target.files.length > 0) { handleFile(e.target.files[0]); } }); // Improved drag and drop functionality dropZone.addEventListener('dragover', (e) => { e.preventDefault(); e.stopPropagation(); dropZone.classList.add('drag-over'); }); ['dragleave', 'dragend'].forEach(type => { dropZone.addEventListener(type, (e) => { e.preventDefault(); e.stopPropagation(); dropZone.classList.remove('drag-over'); }); }); dropZone.addEventListener('drop', (e) => { e.preventDefault(); e.stopPropagation(); dropZone.classList.remove('drag-over'); if (e.dataTransfer.files && e.dataTransfer.files.length > 0) { handleFile(e.dataTransfer.files[0]); } }); // Improved file handling function function handleFile(file) { // Check if file is audio if (!file.type.match('audio.*')) { status.textContent = 'Please select an audio file (MP3, WAV, etc.)'; return; } fileInfo.textContent = file.name; status.textContent = 'Processing audio file...'; const reader = new FileReader(); reader.onerror = () => { status.textContent = 'Error reading file'; console.error('FileReader error:', reader.error); }; reader.onload = function(e) { initAudio(); audioContext.decodeAudioData(e.target.result) .then(buffer => { originalBuffer = buffer; player.buffer = buffer; updateDurationDisplay(buffer.duration); enableControls(); status.textContent = 'Audio file loaded successfully'; }) .catch(error => { console.error('Error decoding audio:', error); status.textContent = 'Error loading audio file. Please try another file.'; }); }; reader.readAsArrayBuffer(file); }Playback Controls
Effects
0:00
0:00
Comments
Post a Comment