diff options
Diffstat (limited to 'tools')
| -rw-r--r-- | tools/mq_editor/app.js | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/tools/mq_editor/app.js b/tools/mq_editor/app.js index 41df49a..62c1bb7 100644 --- a/tools/mq_editor/app.js +++ b/tools/mq_editor/app.js @@ -155,7 +155,22 @@ function loadAudioBuffer(buffer, label) { const signal = audioBuffer.getChannelData(0); stftCache = new STFTCache(signal, audioBuffer.sampleRate, fftSize, Math.max(64, parseInt(hopSize.value) || 64)); setStatus(`${label} — ${audioBuffer.duration.toFixed(2)}s, ${audioBuffer.sampleRate}Hz, ${audioBuffer.numberOfChannels}ch (${stftCache.getNumFrames()} frames cached)`, 'info'); + + // Pre-compute peak frames so explore mode works immediately (before Extract) + const peakFrames = []; + for (let i = 0; i < stftCache.getNumFrames(); ++i) { + const f = stftCache.getFrameAtIndex(i); + peakFrames.push({ + time: f.time, + peaks: detectPeaks(f.squaredAmplitude, f.phase, fftSize, audioBuffer.sampleRate, + parseFloat(threshold.value), freqWeightCb.checked, + parseFloat(prominence.value)), + }); + } + viewer = new SpectrogramViewer(canvas, audioBuffer, stftCache); + viewer.setFrames(peakFrames); + document.getElementById('exploreBtn').disabled = false; editor.setViewer(viewer); viewer.onPartialSelect = (i) => editor.onPartialSelect(i); viewer.onRender = () => editor.onRender(); @@ -284,7 +299,6 @@ function runExtraction() { autoSpreadAllBtn.disabled = false; document.getElementById('newPartialBtn').disabled = false; document.getElementById('clearAllBtn').disabled = false; - document.getElementById('exploreBtn').disabled = false; undoStack.length = 0; redoStack.length = 0; _updateUndoRedoBtns(); }, 50); } |
