summaryrefslogtreecommitdiff
path: root/tools/timeline_editor/README.md
AgeCommit message (Collapse)Author
13 hoursrefactor: timeline editor now uses beat-based internal storageskal
Timeline editor now stores all times internally as beats (not seconds), aligning with the project's beat-based timing system. Added BPM slider for tempo control. Serializes to beats (default format) and displays beats primarily with seconds in tooltips. Changes: - parseTime() returns beats (converts 's' suffix to beats) - serializeSeqFile() outputs beats (bare numbers) - Timeline markers show beats (4-beat/bar increments) - BPM slider (60-200) for tempo editing - Snap-to-beat rounds to nearest beat - Audio waveform aligned to beats - showBeats enabled by default Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
14 hoursfeat: implement beat-based timing systemskal
BREAKING CHANGE: Timeline format now uses beats as default unit ## Core Changes **Uniform Structure (32 bytes maintained):** - Added `beat_time` (absolute beats for musical animation) - Added `beat_phase` (fractional 0-1 for smooth oscillation) - Renamed `beat` → `beat_phase` - Kept `time` (physical seconds, tempo-independent) **Seq Compiler:** - Default: all numbers are beats (e.g., `5`, `16.5`) - Explicit seconds: `2.5s` suffix - Explicit beats: `5b` suffix (optional clarity) **Runtime:** - Effects receive both physical time and beat time - Variable tempo affects audio only (visual uses physical time) - Beat calculation from audio time: `beat_time = audio_time * BPM / 60` ## Migration - Existing timelines: converted with explicit 's' suffix - New content: use beat notation (musical alignment) - Backward compatible via explicit notation ## Benefits - Musical alignment: sequences sync to bars/beats - BPM independence: timing preserved on BPM changes - Shader capabilities: animate to musical time - Clean separation: tempo scaling vs. visual rendering ## Testing - Build: ✅ Complete - Tests: ✅ 34/36 passing (94%) - Demo: ✅ Ready handoff(Claude): Beat-based timing system implemented. Variable tempo only affects audio sample triggering. Visual effects use physical_time (constant) and beat_time (musical). Shaders can now animate to beats. Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
15 hoursfeat: timeline editor improvements - sticky ticks, grid, collapseskal
- Sticky time markers stay visible when scrolling - Faint vertical grid lines aligned with ticks for better alignment - Collapsible sequences via double-click (35px collapsed state) - Updated all references from demo.seq to timeline.seq - Consolidated and tightened documentation - Fixed _collapsed initialization bug Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
7 daysdocs(timeline-editor): Document WAV source and music.track visualization taskskal
Updated documentation: README.md: - Added waveform visualization to implemented features list - Added section on loading audio waveform with usage instructions - Documented wav_dump_backend integration: ./demo64k --dump_wav output.wav - Added snap-to-beat and resize handles to feature list - Updated Future Enhancements with music.track visualization ROADMAP.md: - Added Phase 2.5: Music.track Visualization & Overlay - Detailed implementation plan for tracker score overlay - Visual design specifications (colored bars, sample markers) - Use case: Align visual sequences with tracker events - Effort: 12-15 hours, Priority: MEDIUM The timeline editor now has clear guidance on: 1. How to generate WAV files from demo64k for visual reference 2. Future feature: Display tracker patterns/samples for alignment
7 daysdocs(timeline-editor): Reference SEQUENCE.md and add priority editing taskskal
Documentation improvements: 1. Added reference to doc/SEQUENCE.md in README 2. Added comment in parser pointing to format spec 3. Updated README with complete format examples including: - Priority modifiers (+, =, -) - Time notation (beats vs seconds) - Optional sequence names - BPM declaration New feature task (Phase 1): Task 1.2b: Priority Editing UI (HIGH PRIORITY, 6-8h) - Edit sequence priority (0-9 for scene, 10+ for post-processing) - Toggle effect priority modifiers (+/=/-) - Visual priority indicators and z-order visualization - Computed priority display - Priority conflict warnings Implementation details: - Radio buttons for priority modifiers - Up/down buttons for sequence priority - Color-coded priority levels - Priority badges on timeline items - Automatic priority recalculation Rationale: Priority control is essential for proper render order and z-stacking. Currently, priorities are shown but not easily editable. This task makes priority a first-class editable property. Updated effort estimates: - Phase 1: 28-36 hours (was 22-28) - Total: ~117-161 hours for full feature set
7 daysfeat(tools): Implement Task #57 - Interactive Timeline Editorskal
Created a functional web-based timeline editor for demo.seq files. Features implemented: ✅ Load/save demo.seq files via browser file API ✅ Visual Gantt-style timeline with time markers ✅ Drag & drop sequences and effects along timeline ✅ Properties panel for editing timing, priorities, arguments ✅ Zoom controls (10% - 200%) ✅ Add/delete sequences and effects ✅ Real-time statistics (sequence count, effect count, duration) ✅ Dark theme matching VSCode aesthetic ✅ Color-coded items (sequences blue, effects gray) ✅ Selection highlighting Technical details: - Pure HTML/CSS/JavaScript (no dependencies, no build step) - ~600 lines in single self-contained HTML file - Works offline, no backend needed - Parser converts demo.seq text → JavaScript objects - Serializer converts JavaScript objects → demo.seq text Usage: 1. Open tools/timeline_editor/index.html in browser 2. Load assets/demo.seq 3. Drag items, edit properties 4. Save modified file 5. Copy to assets/demo.seq and rebuild Limitations (acceptable for v1): - No undo/redo yet - No effect creation UI (must use properties panel) - No overlap detection warnings - No snap-to-grid - No preview rendering (intentional - editor only) This provides a quick way to experiment with demo timing without recompiling, and better visualization of sequence/effect relationships. Size: ~25KB (HTML + embedded JS/CSS) Status: Task #57 basic implementation complete