Commit Graph

26 Commits

Author SHA1 Message Date
Skyler Lehmkuhl e51a6b803d Add metronome 2025-11-06 10:59:25 -05:00
Skyler Lehmkuhl e97dc5695f draw midi input indicator 2025-11-06 09:12:48 -05:00
Skyler Lehmkuhl 06314dbf57 Add MIDI input 2025-11-03 06:16:17 -05:00
Skyler Lehmkuhl f6a91abccd shift virtual keyboard 2025-11-03 05:08:34 -05:00
Skyler Lehmkuhl 1ee86af94d File save/load for audio projects 2025-11-03 02:46:43 -05:00
Skyler Lehmkuhl 66c4746767 use nodes for audio tracks 2025-11-02 06:33:10 -05:00
Skyler Lehmkuhl 988bbfd1a9 Add automation and drag nodes into connections in the graph 2025-11-02 01:27:22 -05:00
Skyler Lehmkuhl dc32fc4200 MIDI recording 2025-10-29 01:50:45 -04:00
Skyler Lehmkuhl 139946fb75 Add presets and make graph follow selected layer/track 2025-10-25 05:31:18 -04:00
Skyler Lehmkuhl 16f4a2a359 Add audio node graph editing 2025-10-25 03:29:54 -04:00
Skyler Lehmkuhl 976b41cb83 Add piano roll track editing 2025-10-23 23:10:56 -04:00
Skyler Lehmkuhl 3de1b05fb3 Add custom layouts, piano pane, midi file import 2025-10-23 21:15:17 -04:00
Skyler Lehmkuhl c46c28c9bb Add timestamp window 2025-10-23 06:21:02 -04:00
Skyler Lehmkuhl 9649fe173b Rename views to keyframe, curve and segment and update defaults 2025-10-23 05:38:10 -04:00
Skyler Lehmkuhl 5e1a30d812 add timeline markings 2025-10-23 05:00:13 -04:00
Skyler Lehmkuhl 20c3b820a3 Record audio tracks 2025-10-23 01:08:45 -04:00
Skyler Lehmkuhl 97b9ff71b7 Fix curve issues 2025-10-19 18:45:17 -04:00
Skyler Lehmkuhl e45659ddfd Work on timeline 2025-10-18 21:32:59 -04:00
Skyler Lehmkuhl 87d2036f07 Complete Phase 5: Timeline curve interaction and nested animation support
Phase 5 adds interactive curve editing, proper interpolation visualization,
and automatic segment keyframe management for nested animations.

Timeline curve interaction features:
- Add keyframe creation by clicking in expanded curve view
- Implement keyframe dragging with snapping support
- Add multi-keyframe selection (Shift/Ctrl modifiers)
- Support constrained dragging (Shift: vertical, Ctrl: horizontal)
- Add keyframe deletion via right-click context menu
- Display hover tooltips showing keyframe values
- Respect interpolation modes in curve visualization:
  * Linear: straight lines
  * Bezier: smooth curves with tangent handles
  * Step/Hold: horizontal hold then vertical jump
  * Zero: jump to zero and back

Nested animation improvements:
- Add bidirectional parent references:
  * Layer.parentObject → GraphicsObject
  * AnimationData.parentLayer → Layer
  * GraphicsObject.parentLayer → Layer
- Auto-update segment keyframes when nested animation duration changes
- Update both time and value of segment end keyframe
- Fix parameter ordering (required before optional) in constructors

Bug fixes:
- Fix nested object rendering offset (transformCanvas applied twice)
- Fix curve visualization ignoring interpolation mode
2025-10-15 19:08:59 -04:00
Skyler Lehmkuhl 1936e91327 Implement Timeline V2 Phase 2: Track hierarchy with selection and scrolling
Phase 2 Implementation:
- Added TrackHierarchy class to build and manage hierarchical track structure
- Track display with expand/collapse triangles for layers and groups
- Hierarchical indentation for visual hierarchy
- Track selection syncs with stage selection (shapes, objects, layers)
- Vertical scrolling for track area when many tracks present
- Horizontal scrolling in ruler area for timeline navigation

Timeline Integration:
- Set TimelineV2 as default timeline on app load
- Timeline automatically updates when shapes added or grouped
- Trigger timeline redraw in renderLayers() for efficient batching

Selection System:
- Clicking tracks selects corresponding objects/shapes on stage
- Selected tracks highlighted in timeline
- Updates context.selection and context.shapeselection arrays
- Stores oldselection/oldshapeselection for undo support
- Calls updateUI() and updateMenu() to sync UI state

Visual Improvements:
- Use predefined colors from styles.js (no hardcoded colors)
- Alternating track background colors for readability
- Selection highlighting with predefined highlight color
- Type indicators for tracks: [L]ayer, [G]roup, [S]hape

Mouse Interactions:
- Click ruler area to move playhead
- Click track expand/collapse triangles to show/hide children
- Click track name to select object/shape
- Scroll wheel in ruler area for horizontal timeline scroll
- Scroll wheel in track area for vertical track list scroll
- Adjusts hit testing for vertical scroll offset
2025-10-15 01:47:37 -04:00
Skyler Lehmkuhl 6c79914ffb Work on moving things to animation curves 2025-10-15 00:41:51 -04:00
Skyler Lehmkuhl b76dcc7a7e work on converting timeline to widgets 2025-01-16 21:40:05 -05:00
Skyler Lehmkuhl b4d8a9a10a fix play from frame 2025-01-10 03:11:16 -05:00
Skyler Lehmkuhl 94f887efb1 Fix bounding box issues 2025-01-10 01:33:15 -05:00
Skyler Lehmkuhl 3819988d5e initial refactoring work 2025-01-10 00:11:55 -05:00
Skyler Lehmkuhl 95c78a994e Move color picker elements to widget classes 2025-01-06 02:53:41 -05:00