diff options
| author | skal <pascal.massimino@gmail.com> | 2026-02-05 23:02:59 +0100 |
|---|---|---|
| committer | skal <pascal.massimino@gmail.com> | 2026-02-05 23:02:59 +0100 |
| commit | 3581fa88300f0208c83f0f687b18479979dad035 (patch) | |
| tree | 3d95e65ee8b2689a5b2316d9e36f4e20e5310a31 /src/audio/synth.cpp | |
| parent | 8cd444af4f3094257bea3626da809400a5e01f7a (diff) | |
═══════════════════════════════════════════════════════════════════
🎉 MILESTONE: Interactive Timeline Editor - Phase 1 Complete 🎉
═══════════════════════════════════════════════════════════════════
Task #57 Phase 1 delivers a fully functional web-based timeline editor
for demo.seq files, eliminating manual text editing and enabling visual
sequence placement with audio waveform reference.
───────────────────────────────────────────────────────────────────
IMPLEMENTED FEATURES (Phase 1.1)
───────────────────────────────────────────────────────────────────
Core Editing:
✅ Load/save demo.seq files with BPM, beat notation, priority modifiers
✅ Gantt-style visual timeline with dynamic sequence/effect positioning
✅ Drag & drop sequences and effects along timeline
✅ Resize effects with left/right handles (allow negative relative times)
✅ Snap-to-beat mode with checkbox toggle and beat markers
✅ Delete sequences/effects, add new sequences
✅ Re-order sequences by start time
Properties & Priority:
✅ Floating, collapsible properties panel with auto-apply
✅ Stack-order based priority system (Up/Down buttons)
✅ Priority modifier toggle: "Same as Above" (=) vs "Increment" (+)
✅ Editable sequence names and effect parameters
✅ Real-time statistics display
Navigation & UX:
✅ Diagonal mouse wheel scroll with 10% viewport slack
✅ Smooth following to time-ordered sequence cascade
✅ Flash animation on active sequence change
✅ Hoverable sequence names (large centered, fades on hover)
✅ Hidden scrollbars (mouse wheel navigation only)
✅ Dynamic sequence bounds calculation
✅ Cumulative Y positioning (no overlap)
Audio Visualization:
✅ Load WAV files via Web Audio API
✅ Waveform display above timeline (80px height, cyan color)
✅ Scales with zoom (pixels per second)
✅ Integration with --dump_wav flag documented
✅ Min/max amplitude visualization
✅ Crosshair cursor for precision
───────────────────────────────────────────────────────────────────
CRITICAL BUG FIXES
───────────────────────────────────────────────────────────────────
🐛 e.target vs e.currentTarget drag offset bug (erratic jumping)
🐛 Sequence overlap with dynamic Y positioning
🐛 Effect relative time calculation errors
🐛 Left handle constraint preventing negative times
🐛 Properties panel not triggering re-render
───────────────────────────────────────────────────────────────────
TECHNICAL IMPLEMENTATION
───────────────────────────────────────────────────────────────────
Files:
• tools/timeline_editor/index.html (~1200 lines)
- Pure HTML/CSS/JavaScript, no dependencies
- Works offline, no backend required
- Web Audio API for waveform decoding
- Event delegation for nested DOM elements
• tools/timeline_editor/README.md
- Usage guide and keyboard shortcuts
- WAV file generation with --dump_wav integration
- Format specification reference (doc/SEQUENCE.md)
• tools/timeline_editor/ROADMAP.md
- 3-phase development plan (117-161 hour estimate)
- Phase 1.2: Add Effect button (next priority)
- Phase 2.5: music.track visualization overlay
Key Patterns:
• Effect times stored RELATIVE to parent sequence startTime
• Sequence visual bounds calculated from min/max effect times
• Stack order determines priority (array index)
• Snap-to-beat: Math.round(time / beatDuration) * beatDuration
• Dynamic cumulative Y positioning prevents overlap
• e.currentTarget vs e.target for proper event delegation
───────────────────────────────────────────────────────────────────
DOCUMENTATION UPDATES
───────────────────────────────────────────────────────────────────
TODO.md:
• Added Task #57 to Recently Completed section
• Comprehensive feature list and bug fix summary
PROJECT_CONTEXT.md:
• Added Milestone: Interactive Timeline Editor (February 5, 2026)
• Documented integration with --dump_wav workflow
• Next steps: Phase 1.2 and Phase 2.5
───────────────────────────────────────────────────────────────────
NEXT STEPS
───────────────────────────────────────────────────────────────────
Phase 1.2: Add Effect Button (Priority: HIGH)
- Create effects within sequences via UI
- Modal dialog for effect class/timing/args
Phase 2.5: Music.track Visualization (Priority: MEDIUM)
- Parse music.track file format
- Overlay tracker patterns/samples on timeline
- Align visual sequences with audio events
───────────────────────────────────────────────────────────────────
IMPACT
───────────────────────────────────────────────────────────────────
✨ Visual timeline editing now production-ready
✨ Eliminates manual text editing for sequence placement
✨ WAV waveform integration enables precise audio-visual alignment
✨ Snap-to-beat ensures musical timing accuracy
✨ Stack-order priority system simplifies effect layering
───────────────────────────────────────────────────────────────────
handoff(Claude): Timeline editor Phase 1 milestone complete. All core
editing features working correctly. Waveform visualization integrated
with --dump_wav workflow. Ready for Phase 1.2 (Add Effect button) or
Phase 2 productivity enhancements (undo/redo, multi-select, templates).
No known bugs. Production-ready for demo.seq editing workflow.
Diffstat (limited to 'src/audio/synth.cpp')
0 files changed, 0 insertions, 0 deletions
