diff options
| author | skal <pascal.massimino@gmail.com> | 2026-02-17 22:30:22 +0100 |
|---|---|---|
| committer | skal <pascal.massimino@gmail.com> | 2026-02-17 22:30:22 +0100 |
| commit | e1f12a5a7eafbb5f4cc7b0da5f563850347fc84c (patch) | |
| tree | 941f323f4f49683fd0fbd24fac59f197e213acf2 /tools/mq_editor/viewer.js | |
| parent | 99e94d18ce54d1ad73c7c0349119d4cd8fb4f965 (diff) | |
feat(mq_editor): sort partials by amplitude, keep% slider for reconstruction
- Sort extracted partials by decreasing peak amplitude
- Add Keep% range slider (1-100%) to toolbar
- Viewer draws omitted partials at 50% opacity (live on slider input)
- synthesizeMQ uses only the top-N% partials
handoff(Claude): partial amplitude filtering complete
Diffstat (limited to 'tools/mq_editor/viewer.js')
| -rw-r--r-- | tools/mq_editor/viewer.js | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/tools/mq_editor/viewer.js b/tools/mq_editor/viewer.js index 5065498..e8780e7 100644 --- a/tools/mq_editor/viewer.js +++ b/tools/mq_editor/viewer.js @@ -30,6 +30,9 @@ class SpectrogramViewer { // Tooltip this.tooltip = document.getElementById('tooltip'); + // Partial keep count (Infinity = all kept) + this.keepCount = Infinity; + // Playhead this.playheadTime = -1; // -1 = not playing @@ -59,6 +62,11 @@ class SpectrogramViewer { this.render(); } + setKeepCount(n) { + this.keepCount = n; + this.render(); + } + setFrames(frames) { this.frames = frames; } @@ -216,6 +224,7 @@ class SpectrogramViewer { for (let p = 0; p < partials.length; ++p) { const partial = partials[p]; const color = colors[p % colors.length]; + ctx.globalAlpha = p < this.keepCount ? 1.0 : 0.5; // Draw raw trajectory ctx.strokeStyle = color + '44'; @@ -281,6 +290,8 @@ class SpectrogramViewer { this.drawControlPoint(curve.t3, curve.v3); } } + + ctx.globalAlpha = 1.0; } // Render raw peaks from mq_extract (before partial tracking) |
