Commit Graph

32 Commits

Author SHA1 Message Date
Xiaohan-Tian a2f12ca961 fix: minor updated the region lasso selection behavior 2026-05-04 18:34:29 -07:00
Xiaohan-Tian f323f1a6b5 feat: allow user to use lasso to select multiple regions 2026-05-04 18:29:29 -07:00
Xiaohan-Tian 01a3f886d6 feat: allow user to bulk resize and move regions 2026-05-04 18:15:34 -07:00
Xiaohan-Tian 6d952b5b0b feat: allow user to multi-select regions. 2026-05-04 17:59:35 -07:00
Xiaohan-Tian da8b9496df feat: add cross-component playhead scroll synchronization 2026-05-02 00:25:41 -07:00
Xiaohan-Tian d59ad68f72 feat: added fine tune region position feature 2026-05-01 23:07:44 -07:00
Xiaohan-Tian d5795c5281 fix: random not able to exit piano roll hybrid mode issue when switching between different MIDI regions (introduced a region dragging start threshold) 2026-05-01 20:34:21 -07:00
Xiaohan-Tian cbd2fc60a0 fix: updated the spectrogram icon 2026-05-01 20:18:32 -07:00
Xiaohan-Tian 83034455cc feat: implemented piano roll hybrid mode to allow user edit MIDI notes while observing spectrogram as reference 2026-05-01 18:28:45 -07:00
Xiaohan-Tian eafb3a4937 feat: added audio track spectrogram visualization feature 2026-05-01 17:44:29 -07:00
Xiaohan-Tian cd90dc1c99 fix: linter errors 2026-05-01 14:36:56 -07:00
Xiaohan-Tian 95ca3394a8 feat: switch track volume to dB scale with Logic Pro-style fader (−∞dB ~ +12dB) 2026-05-01 11:38:35 -07:00
Xiaohan-Tian a71de0c789 fix: minor updated color palette for some components; updated default region/track names for stem separation. 2026-04-20 15:33:02 -07:00
Xiaohan-Tian 1e4fdfc8c5 refactor: replace purple accent color with light blue theme and beautify Open Project modal 2026-04-20 12:09:57 -07:00
Xiaohan-Tian 1828dbbc63 feat: replace browser built-in alert/confirm/prompt pop-up with new DialogProvider 2026-04-19 23:54:26 -07:00
Xiaohan-Tian cb4bf59de1 fix: undo is resetting the mute and solo track button status 2026-04-16 22:41:06 -07:00
Xiaohan-Tian 9d9190413d fix: allow user to create audio region by triggering audio upload pop-up 2026-04-16 21:05:05 -07:00
Xiaohan-Tian 3010cf4e2d fix: long track name displaying issue; wrong separator model name mapping; imported generated full song not adjusting max bars; implemented retry mechanism for K.G.One server calls. 2026-04-16 17:44:44 -07:00
Xiaohan-Tian 7b82572d5c feat: implemented drag-n-drop to import KGOne generated audio/MIDI file feature 2026-04-15 22:40:47 -07:00
Xiaohan-Tian d94b53dcf5 feat: add snap-to-grid toggle for track grid regions and playhead 2026-04-10 20:57:34 -07:00
Xiaohan-Tian 1670679c61 feat: add audio region trimming with non-destructive clip offset 2026-04-10 20:17:31 -07:00
Xiaohan-Tian 21a19918b5 fix: assigned an image as audio track's instrument-preview background 2026-04-10 12:30:57 -07:00
Xiaohan-Tian 83f4bfe47f fix: missing media files when renaming + saving the project 2026-04-10 12:14:20 -07:00
Xiaohan-Tian fc84edfc59 feat: add audio track support with WAV/MP3 playback and looping
Introduce KGAudioTrack and KGAudioRegion as new track/region types
alongside existing MIDI tracks. Users can import WAV, MP3, OGG, FLAC,
and AAC files into audio tracks with full playback, looping, and
solo/mute/volume support.

New core models:
- KGAudioTrack (extends KGTrack with TrackType.Wave)
- KGAudioRegion (extends KGRegion with audio file reference)
- KGAudioPlayerBus (Tone.Gain + ToneBufferSource-based playback)
- KGAudioFileStorage (OPFS media/ directory for binary audio files)

New commands:
- AddAudioTrackCommand (create audio track with player bus)
- ImportAudioCommand (import audio file, create region at playhead,
auto-expand maxBars)

Playback features:
- Audio regions scheduled via Tone.Transport alongside MIDI events
- Loop support with duration capping at loop boundaries
- Resume safety offset to prevent ToneBufferSource timing misses
- Cross-track buffer copy when moving audio regions between tracks
- Proper buffer cleanup on track deletion and project switch

UI changes:
- Separate "+ MIDI" and "+ Audio" buttons in top-left spacer
- Audio track shows upload button instead of instrument selector
- FileImportModal reused for audio file drag-and-drop upload
- Real waveform rendering on audio region canvas
- Green color scheme for audio regions (vs blue for MIDI)
- Pencil icon and resize handles hidden for audio regions
- Cross-type region moves blocked (MIDI ↔ Audio)
- Piano roll blocked for audio regions
- Audio region deletion support

Infrastructure:
- Project structure version bumped to 4 (no-op migration)
- class-transformer discriminators updated for new subtypes
- RemoveTrackCommand updated to clean up audio player buses
2026-04-09 21:54:54 -07:00
Xiaohan-Tian 17610f12f3 refactor: split monolithic App.css into feature-based co-located CSS files 2026-04-09 17:31:49 -07:00
Xiaohan-Tian 62b3a8c8d7 fix: reset mute/solo UI states on project/track changes 2025-08-28 19:51:47 -07:00
Xiaohan-Tian 2510014580 updated the naming convention for new tracks and regions. New tracks now default to 'Track {i}', and new regions default to '{track_name} Region {i}'. 2025-08-12 21:41:11 -07:00
Xiaohan-Tian 47872287ce prevent users from creating overlapping regions. 2025-08-12 21:18:36 -07:00
Xiaohan-Tian 7ada648d14 removed instrumentSelectionTrackId from projectStore, align the instrumentSelectionTrackId with selectedTrackId. 2025-08-12 18:14:25 -07:00
Xiaohan-Tian ee34115423 auto-select new created track; delete selected track will change selection to an remaining track. 2025-08-12 18:04:14 -07:00
Xiaohan-Tian bf085dacf2 introduce BASE_URL to the app and set it to /kgstudio/. 2025-08-11 22:35:51 -07:00
Xiaohan-Tian de51967b49 initial public release. 2025-08-11 18:37:21 -07:00