summaryrefslogtreecommitdiff
path: root/tools/mq_editor/index.html
diff options
context:
space:
mode:
authorskal <pascal.massimino@gmail.com>2026-02-18 13:24:10 +0100
committerskal <pascal.massimino@gmail.com>2026-02-18 13:24:10 +0100
commitc3c1011cb6bf9bca28736b89049d76875a031ebe (patch)
tree062ed40059840418c2c64bc6fc44ea8e5673467b /tools/mq_editor/index.html
parent362f862da4fb5d9c666c8ca7b0dc329d4b8d1f7e (diff)
feat(mq_editor): implement MQ extraction improvements
- Implement Predictive Kinematic Tracking to improve partial tracking during fast glissandos and vibrato. - Add Peak Prominence Pruning to filter out insignificant local maxima. - Replace heuristic Bezier fitting with a Least-Squares solver for more accurate trajectories. - Update UI to include a Prominence parameter input. - Archive MQ_EXTRACTION_IMPROVEMENTS.md design document. handoff(Gemini): implemented MQ extraction improvements (kinematic tracking, prominence pruning, least-squares bezier)
Diffstat (limited to 'tools/mq_editor/index.html')
-rw-r--r--tools/mq_editor/index.html5
1 files changed, 5 insertions, 0 deletions
diff --git a/tools/mq_editor/index.html b/tools/mq_editor/index.html
index c663c69..a2daff5 100644
--- a/tools/mq_editor/index.html
+++ b/tools/mq_editor/index.html
@@ -272,6 +272,9 @@
<label>Threshold (dB):</label>
<input type="number" id="threshold" value="-20" step="any">
+ <label>Prominence (dB):</label>
+ <input type="number" id="prominence" value="1.0" step="0.1" min="0">
+
<label style="margin-left:16px;" title="Weight spectrum by frequency before peak detection (f * FFT_Power(f)), accentuates high-frequency peaks">
<input type="checkbox" id="freqWeight"> f·Power
</label>
@@ -446,6 +449,7 @@
const hopSize = document.getElementById('hopSize');
const threshold = document.getElementById('threshold');
+ const prominence = document.getElementById('prominence');
const freqWeightCb = document.getElementById('freqWeight');
const keepPct = document.getElementById('keepPct');
const keepPctLabel = document.getElementById('keepPctLabel');
@@ -564,6 +568,7 @@
fftSize: fftSize,
hopSize: parseInt(hopSize.value),
threshold: parseFloat(threshold.value),
+ prominence: parseFloat(prominence.value),
freqWeight: freqWeightCb.checked,
sampleRate: audioBuffer.sampleRate
};