diff options
| author | skal <pascal.massimino@gmail.com> | 2026-02-06 17:14:52 +0100 |
|---|---|---|
| committer | skal <pascal.massimino@gmail.com> | 2026-02-06 17:14:52 +0100 |
| commit | 83b6c2aa92ee8aaff5a53901968bf6978664a342 (patch) | |
| tree | 080231bdf552c2ec20ad7b29293324784ac088aa /tools/spectral_editor | |
| parent | 8a42cc9734fcdec8b1515be63fbbdff1295a274e (diff) | |
docs(spectral_editor): Add feature roadmap for planned enhancements
Documented 6 planned features:
A. Shift+drag curve translation (2-3h)
B. Mouse wheel zoom/pan (6-8h)
C. Enhanced sinusoid patterns with asymmetric decay & modulation (8-12h)
D. Per-control-point parameter modulation (10-15h)
E. Composable profiles (Gaussian × Sinusoid) (12-16h)
F. Improved parameter slider ranges (3-4h)
Total estimated effort: 41-58 hours (1-1.5 weeks focused work)
Diffstat (limited to 'tools/spectral_editor')
| -rw-r--r-- | tools/spectral_editor/FEATURES.md | 151 |
1 files changed, 151 insertions, 0 deletions
diff --git a/tools/spectral_editor/FEATURES.md b/tools/spectral_editor/FEATURES.md new file mode 100644 index 0000000..6c36cc2 --- /dev/null +++ b/tools/spectral_editor/FEATURES.md @@ -0,0 +1,151 @@ +# Spectral Editor - Feature Roadmap + +This document tracks planned enhancements for the spectral editor. + +## Priority: High + +### A. Curve Translation (Shift+Click+Drag) +**Description**: Shift+click on a control point + mouse-move should displace the whole curve at a time (translate all control points). + +**Implementation Notes**: +- Detect shift key state during control point click +- Store initial positions of all control points in the curve +- Apply uniform translation delta to all points during drag +- Maintain curve shape while moving + +**Complexity**: Medium +**Estimated Effort**: 2-3 hours + +--- + +### B. Viewport Zoom (Mouse Wheel) +**Description**: Mouse-wheel should allow zooming in/out on the view for fine placement of curves. + +**Implementation Notes**: +- Implement zoom scale factor (e.g., 0.5x to 4.0x) +- Center zoom around mouse cursor position +- Update rendering to use scaled coordinates +- Add visual zoom indicator (e.g., "Zoom: 2.0x") +- Consider pan functionality (drag with middle mouse or space+drag) + +**Complexity**: High (coordinate transformation, pan interaction) +**Estimated Effort**: 6-8 hours + +--- + +## Priority: Medium + +### C. Enhanced Sinusoid Pattern +**Description**: The 'sinusoid' pattern is quite interesting and should have more variations. + +**Proposed Variations**: +- **Asymmetric Decay**: Different decay rates above and below the curve center + - `decay_top` parameter (controls upper harmonics falloff) + - `decay_bottom` parameter (controls lower harmonics falloff) +- **Temporal Modulation**: Per-frame amplitude/frequency modulation along timeline + - `amplitude_envelope` (fade in/out over time) + - `frequency_drift` (vibrato/wobble effect) + - `phase_offset` (shift pattern over time) +- **Harmonic Series**: Option to generate harmonic overtones + - `num_harmonics` parameter + - `harmonic_decay` parameter + +**Implementation Notes**: +- Extend `SinusoidProfile` class with additional parameters +- Add UI controls for new parameters (sliders, dropdowns) +- Render preview showing modulation over time + +**Complexity**: Medium-High +**Estimated Effort**: 8-12 hours + +--- + +### D. Per-Control-Point Modulation +**Description**: Each control point should be assigned individually controllable volume, decay params, etc. for fine modulation along time. + +**Proposed Parameters (per control point)**: +- `volume`: Local amplitude multiplier (0.0 - 2.0) +- `decay`: Local decay rate override +- `width`: Gaussian width override (for profile spreading) +- `phase`: Phase offset for sinusoid patterns +- `color`: Visual indicator for parameter variations + +**Implementation Notes**: +- Extend control point data structure with parameter fields +- Add per-point property panel (show on control point selection) +- Render visual hints (color-coded points, size variations) +- Interpolate parameters between control points for smooth transitions + +**Complexity**: High (UI/UX design, parameter interpolation) +**Estimated Effort**: 10-15 hours + +--- + +### E. Composable Profiles +**Description**: Profiles should be composable along a curve (e.g., apply Gaussian curve to sinusoid pattern). + +**Proposed Syntax**: +```cpp +// Example: Gaussian-modulated sinusoid +CompositeProfile { + base: SinusoidProfile { frequency: 100.0, decay: 0.5 }, + envelope: GaussianProfile { center: 256, width: 50 } +} +``` + +**Implementation Notes**: +- Define profile composition operators: + - `multiply`: Envelope modulation (amplitude × profile) + - `add`: Additive blending (profile1 + profile2) + - `max`: Take maximum value at each bin +- Add UI for profile layering (drag-and-drop profile stack) +- Render composite preview with layer visualization + +**Complexity**: High (requires profile abstraction refactor) +**Estimated Effort**: 12-16 hours + +--- + +## Priority: Low (Polish) + +### F. Improved Parameter Sliders +**Description**: Adjust slider ranges for better usability (Decay, Width, Frequency, etc.). + +**Issues to Address**: +- Decay slider: Non-linear scaling (logarithmic?) for finer control at low values +- Frequency slider: Snap to musical notes (optional A440-based grid) +- Width slider: Preview visualization (show affected frequency range) +- General: Add numeric input fields next to sliders for precise values + +**Implementation Notes**: +- Implement logarithmic slider interpolation for decay/width +- Add slider tick marks at useful intervals +- Display current value and units (Hz, bins, dB, etc.) +- Add reset-to-default buttons + +**Complexity**: Low-Medium +**Estimated Effort**: 3-4 hours + +--- + +## Future Ideas (Backlog) + +- **Undo/Redo System**: Track edit history for curve modifications +- **Preset Library**: Save/load common curve patterns (kick drum, snare, bass, etc.) +- **Curve Smoothing**: Apply smoothing filters to jittery control points +- **Copy/Paste**: Duplicate curves or control point selections +- **Multi-Selection**: Select and edit multiple control points simultaneously +- **Grid Snapping**: Snap control points to frequency/time grid +- **Export Options**: Export to different formats (JSON, binary, C++ code) + +--- + +## Total Estimated Effort +- **High Priority**: 8-11 hours +- **Medium Priority**: 30-43 hours +- **Low Priority**: 3-4 hours +- **Grand Total**: 41-58 hours (roughly 1-1.5 weeks of focused work) + +--- + +*Last Updated: February 6, 2026* |
