Repository navigation
Description
Parent plan: #1
Priority / gate: P0 / M2
Requirement: F13 in the PRD
Design: Technical design
Depends on: #3, #4, #9
Outcome
Let users shape how each oscillator's pitch and volume evolve over time using the same drawing workflow as its waveform.
Scope
- Add per-oscillator pitch and gain lanes sharing duration, zoom, cursor, and playhead; default composition duration is 2 seconds within the 1 ms–10 second range.
- Use a logarithmic pitch axis labeled in Hz with log-linear interpolation and positive 20–20,000 Hz bounds, subject to playback sample-rate restrictions.
- Use linear gain from 0 to 1, with untouched gain at 1 and gain eraser writing zero; pitch eraser restores its base value, initially 440 Hz.
- Provide pencil/line/numeric-knot editing, undo/redo, and editable pitch-sweep and attack/decay examples.
- Keep waveform, pitch, and gain curves for the same oscillator in its persistent color, with labels and line-style/selection cues.
Acceptance criteria
- Editing one lane or oscillator changes only its intended values; untouched values outside the edit are preserved.
- Pitch cannot become zero, negative, or non-finite; gain remains finite in [0,1]. Exact numeric editing can express endpoints and intermediate knots.
- All oscillator envelopes stretch consistently when composition duration changes, without confusing time with pointer-drawing speed.
- Colors and labels match the associated waveform/controls and stay stable across selection, reorder, and reload.
- All lane edits are undoable and the 20,000 total-point project limit is enforced before destructive changes.
- Keyboard/numeric editing can create a pitch sweep and gain attack/decay without freehand drawing.
Validation
Geometry/unit/interpolation fixtures, independent lane/voice edit tests, synchronized viewport/time tests, history/limits checks, and keyboard/color-identity review.
Boundaries
Envelope drawing is a first-release requirement. Arbitrary parameter automation, MIDI, and external controllers remain outside this issue.
Implementation evidence
Independent log-pitch and linear-gain lanes, normalized composition time, exact numeric controls, presets, synchronized views and bounded undo are implemented and tested.
Validated CI run · Validation report. The report arrives with the final documentation PR; numerical/browser logs already exist. Release-wide human acceptance and the recorded performance/memory gaps remain explicit in #15 and #16.
Activity