Commit Graph

439 Commits

Author SHA1 Message Date
3dtours 468a1f11a4 fix: Lucide icon refresh on new track creation
Add activeTracks to useEffect deps for lucide.createIcons() so
icons render when user/AI creates tracks via any path.
2026-07-31 07:06:29 +07:00
3dtours 437980ea9f feat(generator): post data to parent preset form 2026-07-31 06:43:01 +07:00
3dtours bc951e75af feat(preset-manager): category dropdown + generator modal 2026-07-31 05:50:55 +07:00
3dtours b1aec24392 fix(audio): robust async buffer loading with state merging + API fallback
- Rewrite loadAudioBuffersForTracks to use functional setTracks
  preventing loss of intermediate state updates
- Add API download endpoint as fallback when static fetch fails
- Also update sessionTabs tracks with loaded buffers
- return decodeAudioFile result (audioBuffer+channelInfo) instead
  of just audioBuffer
2026-07-30 22:30:56 +07:00
3dtours be3205645f fix(audio): recover clip serverFileId from audio_file_url on project load
3 fixes for audio clips losing sound after save/reload:
1. deserializeTracksList: clip-level serverFileId falls back
   to extracting from audio_file_url when server_file_id missing
2. serializeTracksList: add server_file_id to track output
   so track-level fallback survives round-trip
3. upgrade_project_json_if_needed: include server_file_id
   in source_data during legacy project upgrade
2026-07-30 22:26:53 +07:00
3dtours 0894f97386 FIX: sửa lỗi vẽ grid sai trong PIANO ROLL GRID với snap 2026-07-30 22:14:56 +07:00
3dtours ca34a496eb fix: force piano roll grid redraw on snap change via renderTick
snapVal already in useLayoutEffect deps. Added renderTick
counter bumped in onChange to guarantee canvas redraw.
2026-07-30 21:32:45 +07:00
3dtours 64b9fbadd5 fix: WaveformLane grid now respects snapValue (was always beat grid)
snapDivisor was computed but never used in loop. Grid always drew
at every beat. Now grid iterates at snapInterval = beatDuration * snapDivisor.
2026-07-30 21:25:39 +07:00
3dtours 323be6a6f4 fix: piano roll draw notes snapped to grid via getSnapBeat
note.start_beat + duration_beats snapped before rendering.
Applies to active, ghost, and recording notes.
2026-07-30 21:15:38 +07:00
3dtours 5ed6acd4f5 fix: piano roll snap values inverted in getSnapBeat/getSnapDuration/grid
snap='1' gave q=4.0 (4-beat snap). Fix all 3 mappings:
grid lines, note snap, default duration.
2026-07-30 21:08:56 +07:00
3dtours 6c227fe6af fix: draw clip rect/label always, skip only waveform when buffer null
- clip rect + label + markers drawn even without buffer
- shows '(audio chưa được tải)' for unloaded clips
- deserialize restores clip duration from duration_bars
2026-07-30 21:05:33 +07:00
3dtours 7b8e10419f fix: snap default '1' + Power button reads masterConnected directly
- snapValue default '1' (was 'free'), piano roll snapVal default '1' (was '1/16')
- Power button: remove shared isFxActive, use masteringSettings.masterConnected
2026-07-30 20:59:29 +07:00
3dtours 872ecabf85 IMPROVE: cho phép lưu dự án và phục hồi dự án vừa tắt, tạo crontab để tự động sao lưu sau mỗi 5 phút 2026-07-30 20:58:54 +07:00
3dtours 4005088e89 fix: audio clip items lost after reload — missing serverFileId on clip/track
- set serverFileId on clip + track when upload succeeds
- serialize/deserialize server_file_id in source_data
- guard clip.buffer null in WaveformLane canvas draw
2026-07-30 20:54:23 +07:00
3dtours 9c487614f1 feat: auto-save 5min + backup 30min + backup management UI
- project_backups table + DB migration
- Backup CRUD API endpoints with auto cleanup (5-20 retention)
- setInterval 5min save + 30min backup in browser
- ProfileModal: backup list, delete, retention slider, cleanup button
2026-07-30 20:48:45 +07:00
3dtours 58a294d845 IMPROVE: cho phép lưu dự án và phục hồi dự án vừa tắt 2026-07-30 20:47:44 +07:00
3dtours 313d1be5af fix: loadAudioBuffersForTracks scoped in ProfileModal crashes project load
Move fn to App component scope, pass as prop to ProfileModal.
restoreLastSessionProject now has access on startup.
2026-07-30 20:40:25 +07:00
3dtours 3386a2b4c2 feat: add structured preset button in AI Preset Manager
Add handleNewStructured fn + emerald button left of Quay lại
pre-fills form with comprehensive Vietnamese template sections
2026-07-30 20:33:22 +07:00
3dtours 64f43cd5ad IMPROVE: cho phép thay đổi instrument realtime khi đang playback 2026-07-30 17:32:57 +07:00
3dtours 546ad3dd23 FIX: sửa lỗi vị trí con trỏ pos khi parse MIDI MThd header 2026-07-30 17:28:23 +07:00
3dtours 402cac56a3 FIX: sửa lỗi parse file midi có track hoặc chunk phụ trợ 2026-07-30 17:21:42 +07:00
3dtours 1de69b8f4e IMPROVE: bật tắt ARM, MIC trên track strip, double click lên nút balance, volume 2026-07-30 17:04:13 +07:00
3dtours a9be38b76f IMPROVE: hướng dẫn AI tạo nhạc đầy đủ số bars và tracks theo yêu cầu 2026-07-30 16:39:28 +07:00
3dtours 938c8d7f87 FIX: sửa lỗi fluidsynth error khi toggle percussion kit 2026-07-30 16:25:09 +07:00
3dtours 15193b13a7 FIX: sửa lỗi undo khi move items, lỗi undo khi duplication item 2026-07-30 16:19:47 +07:00
3dtours 4db3e3484a FIX: sửa lỗi cnnot move items 2026-07-30 16:11:31 +07:00
3dtours f0479dc3d8 FIX: sửa lỗi Uncaught ReferenceError: stopPreviewNote is not defined 2026-07-30 15:56:09 +07:00
3dtours 7836cfcc76 FIX: chỉnh sửa hoàn thành UX/UI master strip 2026-07-30 15:38:25 +07:00
3dtours 19f02a5a49 FIX: chỉnh sửa UX volume của master strip 2026-07-30 15:22:47 +07:00
3dtours dc7ec3af4c FIX: chỉnh sửa UI volume của master strip 2026-07-30 15:19:41 +07:00
3dtours c073ca7a49 FIX: chỉnh sửa UI của master strip 2026-07-30 15:04:03 +07:00
3dtours 9f6f9763c1 FIX: chỉnh sửa UI của mixer panel 2026-07-30 15:01:52 +07:00
3dtours bbd06f23d5 FEAT: thay đổi UI của mixer panel 2026-07-30 14:52:57 +07:00
3dtours b67c0264fb feat(mixer): Master + Track Strip Console per specs 47/48 2026-07-30 12:55:35 +07:00
3dtours 74597cfe8b feat(mixer): install Master Strip Console per spec 47 2026-07-30 12:47:10 +07:00
3dtours 0c1a27ef2c FIX: sửa PIANO ROLL TAB khi vẽ draw note midi phải play các note được vẽ 2026-07-30 11:38:36 +07:00
3dtours eb61015cff FIX: sửa MASTERING PANEL thay đổi knob thì thay đổi các thông số hiển thị 2026-07-30 11:18:35 +07:00
3dtours 6e1f116658 FIX: sửa MASTERING PANEL có tác dụng với mainout 2026-07-30 11:06:31 +07:00
3dtours 2c55db372a FIX: sửa volume main out 2026-07-30 10:05:11 +07:00
3dtours e64070a83e FEAT: cài đặt tính năng cho volume main out 2026-07-30 09:34:36 +07:00
3dtours 66eef405a7 FIX: tăng velocity thêm tính năng midi key khác sử dụng cho midi note 2026-07-29 22:34:05 +07:00
3dtours 971dad84e7 FEAT: thêm tính năng midi key khác sử dụng cho midi note 2026-07-29 22:25:21 +07:00
3dtours 4cead1010e FEAT: thêm tính năng hiển thị ở master track 2026-07-29 22:13:54 +07:00
3dtours 7b5d4bf27a FEAT: thêm tính năng MasteringModules Modal 2026-07-29 22:03:20 +07:00
3dtours 47af85c072 FIX: sửa UNDO/REDO bị lỗi màn hình đen 2026-07-29 18:19:02 +07:00
3dtours d4ad3bc1f7 feat: add comprehensive Ctrl-Z/Ctrl-Y undo/redo engine for MAIN SESSION and SECTION-TAB 2026-07-29 16:05:43 +07:00
3dtours a1767e338a fix: Select Instrument stays open after picking instrument
Remove setInstrumentSelectorTrackId(null) from
setTrackInstrumentWithProgram. Modal stays open so user can
switch tracks and assign instruments without reopening.
2026-07-29 11:56:26 +07:00
3dtours 8051cf3edb fix: add missing aiTypeaheadRef definition 2026-07-29 11:52:49 +07:00
3dtours 35e767795a fix: Synth button opens modal with inline track selector
Remove external track dropdown. Add select dropdown inside the
instrument selector modal between title and search box. Users
can switch tracks without closing the modal.
2026-07-29 11:52:12 +07:00
3dtours 7bfdd72850 feat: Synth button shows track dropdown for quick instrument assign
Synth button opens a dropdown listing all tracks instead of opening
the modal directly. Selecting a track opens the instrument selector
for that track. No need to close modal and click each track's Synth.
2026-07-29 11:49:34 +07:00