3dtours
845d1594bb
FIX: cho phép nhiều track cùng solo
2026-07-31 07:14:28 +07:00
3dtours
59aa9a32ff
feat: allow multiple simultaneous solo tracks
...
Replace single-track solo (radio) with multi-solo toggle.
No longer clears solo on other tracks when toggling one track.
2026-07-31 07:10:32 +07:00
3dtours
bd296c63f1
FIX: lỗi hiển thị icon của các nút ở track TCP
2026-07-31 07:09:54 +07:00
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
e76a6df86b
chore: bump precompiled cache version
2026-07-30 21:29:22 +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