3dtours
5bd92ee186
fix: đã sửa lỗi chọn range trong MIDI marquee và chọn note
2026-07-25 22:34:34 +07:00
3dtours
89f2fed1d9
fix: blue marquee for note select on grid, green loop overlay from ruler drag, notes play once
2026-07-25 22:31:42 +07:00
3dtours
4306ff302a
fix: marquee survive mouseleave, loop reschedule midi notes, separate leave/up handlers
2026-07-25 22:20:58 +07:00
3dtours
790a5823f6
fix: đã sửa lỗi chọn range trong MIDI marquee
2026-07-25 22:18:44 +07:00
3dtours
fccdb15ad7
fix: piano roll selection marquee green full-height, edge resize, body move, playback min 16 beats, doc-level drag
2026-07-25 22:13:50 +07:00
3dtours
a181f7a24d
fix: đã sửa lỗi chọn range trong MIDI tab
2026-07-25 21:30:17 +07:00
3dtours
1a5c1eff43
fix: doc-level ruler drag, min 16bars playback, selection overlay, edge/center handles
2026-07-25 21:28:26 +07:00
3dtours
9bfcd1870c
fix: loop range playback via st.selectionStart/End + isLooping
2026-07-25 21:21:03 +07:00
3dtours
39680cb95c
fix: ruler close needed 4 parens (was 3), closing parent div properly
2026-07-25 21:14:44 +07:00
3dtours
2ce731e6a9
fix: Ctrl+S piano roll + ruler drag selection + paren balance
2026-07-25 21:09:34 +07:00
3dtours
025aba3265
fix: Ctrl+S in piano roll + ruler range selection via drag
2026-07-25 21:04:19 +07:00
3dtours
57fd110fe3
fix: add capture flag to Ctrl+S keydown handler to prevent browser save
2026-07-25 20:57:43 +07:00
3dtours
c1a3d3a6dd
feat: Ctrl+S saves current tab (piano roll, section, audio) or project + all dirty tabs
2026-07-25 20:54:23 +07:00
3dtours
fde9a91c9b
fix: đã sửa lỗi MIDI note bị flicker
2026-07-25 20:46:53 +07:00
3dtours
f2d02a358f
fix: skip st.notes sync when draggedNote active (prevents brush flicker)
2026-07-25 20:45:24 +07:00
3dtours
ce319573ab
fix: move Ctrl+A useEffect after selectedNoteIds declaration
2026-07-25 20:39:54 +07:00
3dtours
29b682e3ba
fix: move Ctrl+A useEffect after notes declaration to avoid TDZ error
2026-07-25 20:38:53 +07:00
3dtours
f4ec769650
fix: restore useEffect sync for st.notes, remove render-phase TDZ error
2026-07-25 20:36:21 +07:00
3dtours
966e673fae
fix: replace sync useEffect with render-phase guard to prevent flicker
2026-07-25 20:31:17 +07:00
3dtours
a9f56d0fcd
fix: drag clamp, pitch anchor, Ctrl+A, marquee dir, resize snap
2026-07-25 20:30:01 +07:00
3dtours
8d83a46e08
fix: MIDI item playback respects visual duration + scale flicker guard
2026-07-25 20:14:53 +07:00
3dtours
8fdf93f5d1
fix: đã sửa lỗi MIDI note ghi âm xuất hiện realtime
2026-07-25 20:04:42 +07:00
3dtours
8849f33d07
fix: extend piano roll playhead duration to 10min during recording
2026-07-25 20:03:09 +07:00
3dtours
97855f47d1
fix: add try-catch + nextMetronomeBeatRef init to startPianoRollRecording
2026-07-25 19:56:19 +07:00
3dtours
d858628a8f
fix: sync notes from st.notes + set isPlaying for playhead + metronome count-in
2026-07-25 19:53:45 +07:00
3dtours
f3ad111376
fix: set subTab buffer + fix double stop() call + realtime playhead
2026-07-25 19:48:00 +07:00
3dtours
7f681f23c1
fix: không ghi âm và ghi note MIDI và khong xuất hiện realtime
2026-07-25 19:47:17 +07:00
3dtours
6cc3ae6ab8
fix: use startSubTabPlayback for piano roll recording + pass recTempMidiNotes prop
2026-07-25 19:39:55 +07:00
3dtours
432dec635a
fix: không ghi âm và ghi note MIDI
2026-07-25 19:36:56 +07:00
3dtours
e6dd7ff13c
fix: realtime note display + MIDI key sound via refs
2026-07-25 18:58:30 +07:00
3dtours
da760dbb86
fix: MIDI record + key highlight on MIDI key press
2026-07-25 18:55:31 +07:00
3dtours
c3edda5c81
fix: call midiRec.start() so MIDI recorder receives messages
2026-07-25 18:44:33 +07:00
3dtours
68eb6d5261
fix: replace stale snapToScale ref with st.snapToScale
2026-07-25 18:39:47 +07:00
3dtours
513a6b082c
fix: record midi - setSelectedMidiInputId, snapToScale persist, space stops recording
2026-07-25 18:37:02 +07:00
3dtours
1151f1afa0
feat: bật tính năng ghi midi note trong piano roll tab
2026-07-25 18:36:11 +07:00
3dtours
5af8536e53
fix: add recTempMidiNotes to PianoRollTabEditor props
2026-07-25 18:31:35 +07:00
3dtours
dffb8562df
fix: piano roll recording - playhead, realtime notes, recording display
2026-07-25 18:30:16 +07:00
3dtours
9498a0d4b0
fix: piano roll record via ARM + INPUT routes to piano roll tab
2026-07-25 18:25:29 +07:00
3dtours
2c91c0156a
feat: add Omni MIDI option in piano roll INPUT select
2026-07-25 18:20:42 +07:00
3dtours
cdff404437
fix: lỗi không mở được piano roll và thêm các tính năng cho AI
2026-07-25 17:29:35 +07:00
3dtours
1b711ef014
feat: piano roll transport, ARM/INPUT, AI bar range, MIDI recording
...
- Transport: play/stop/back/next/record buttons in piano roll toolbar
- ARM toggle + MIDI input device selector next to Snap to Scale
- AI bar range selector (bar X to bar Y) for Copilot MIDI generation
- handleAISend detects active piano roll tab and routes MIDI prompt
- Added selectedMidiInputId state + handleMidiInputSelect for MIDI input
2026-07-25 17:22:24 +07:00
3dtours
1a97a4b33b
fix: quy định kết quả AI copilot trả về đúng tab đang mở
2026-07-25 16:35:54 +07:00
3dtours
a59a36ec90
fix: use configured AI provider for piano roll prompt, not hardcoded
...
Piano roll AI prompt now selects provider via same logic as main AI
handler (aiProviders, selectedProviderId, baseUrl, apiKey, model).
No longer hardcodes provider:'openai', model:'gpt-4o'.
2026-07-25 16:26:47 +07:00
3dtours
7dd6300500
fix: guard AI response parse against undefined textResponse
2026-07-25 16:21:59 +07:00
3dtours
5628802e08
refactor: remove piano roll AI prompt, reuse Copilot for MIDI gen
...
- Removed aiPrompt/aiLoading state and handleAIPrompt from PianoRollTabEditor
- Removed AI prompt input UI from piano roll toolbar
- handleAISend now detects active piano roll tab and routes
prompts to MIDI note generation, appends notes to the tab
2026-07-25 16:19:44 +07:00
3dtours
2fed3eee0b
fix: sửa lỗi snap to scale trong piano roll tab
2026-07-25 12:44:08 +07:00
3dtours
eaedfebdf0
fix: snap to scale now works on initial click + use refs
...
- Initial click note pitch now snaps when snapToScale is on
- Added snapToScaleRef and selectedScaleRef for stale-closure safety
- All brush-draw snap paths (mousedown + mousemove) use refs
2026-07-25 12:42:50 +07:00
3dtours
f5bc0a8810
feat: Snap to Scale toggle + remove tool buttons + no menu on erase sweep
...
- Added snapToScale state + toggle switch in piano roll toolbar
- snapPitchToScale only applies when snapToScale is true
- Removed Select/Pen/Eraser tool buttons
- Right-click drag erase sweep sets swallowContextMenuRef=true
so context menu won't appear during sweep
2026-07-25 12:39:32 +07:00
3dtours
221561d58a
fix: right-click delete no menu + scale only for brush drag
...
- Separate swallowContextMenuRef (not tied to rightClickDragRef) so
menu is skipped on right-click delete
- Initial click draw uses raw pitch, not snapPitchToScale (scale only
applies during brush-drag in mousemove)
2026-07-25 12:34:12 +07:00
3dtours
0a17cc91ea
fix: right-click delete note no longer shows context menu
...
Set rightClickDragRef.erasedNote=true on delete. handleContextMenu
checks and skips menu when true.
2026-07-25 12:30:08 +07:00