summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--tools/mq_editor/viewer.js13
1 files changed, 12 insertions, 1 deletions
diff --git a/tools/mq_editor/viewer.js b/tools/mq_editor/viewer.js
index 2575cac..c99d344 100644
--- a/tools/mq_editor/viewer.js
+++ b/tools/mq_editor/viewer.js
@@ -563,7 +563,13 @@ class SpectrogramViewer {
if (this.selectedPartial >= 0 && this.selectedPartial < this.partials.length) {
const ptIdx = this.hitTestControlPoint(x, y, this.partials[this.selectedPartial]);
if (ptIdx >= 0) {
- this.dragState = { pointIndex: ptIdx };
+ const curve = this.partials[this.selectedPartial].freqCurve;
+ let companionOff = null;
+ if (ptIdx === 0)
+ companionOff = { dt: curve.t1 - curve.t0, dv: curve.v1 - curve.v0 };
+ else if (ptIdx === 3)
+ companionOff = { dt: curve.t2 - curve.t3, dv: curve.v2 - curve.v3 };
+ this.dragState = { pointIndex: ptIdx, companionOff };
canvas.style.cursor = 'grabbing';
e.preventDefault();
return;
@@ -585,6 +591,11 @@ class SpectrogramViewer {
const i = this.dragState.pointIndex;
partial.freqCurve['t' + i] = t;
partial.freqCurve['v' + i] = v;
+ if (this.dragState.companionOff) {
+ const off = this.dragState.companionOff;
+ if (i === 0) { partial.freqCurve.t1 = t + off.dt; partial.freqCurve.v1 = v + off.dv; }
+ else { partial.freqCurve.t2 = t + off.dt; partial.freqCurve.v2 = v + off.dv; }
+ }
this.render();
e.preventDefault();
return;