3dtours
b0d7f35a1e
fix(piano-roll): loop only on btn + instant stop
...
- Sub-tab selection loop only active when st.isLooping is true
- End-of-playback loop uses st.isLooping, not global isLoopingSelection
- SonicSF.stopAll() sets gain 0 and stops oscillators immediately
2026-07-26 12:16:01 +07:00
3dtours
4e880850f5
fix(piano-roll): playhead seek + sound cracking
...
- Piano roll ruler click during playback now seeks and continues playing
- ADSR envelope uses linearRampToValueAtTime for crack-free release
- stopAll ramps gain to 0 in 20ms before stopping oscillators
2026-07-26 12:03:29 +07:00
3dtours
1ffdec68c6
fix: ruler click 200ms timeout + default instrument attackTime 0.03 + safe ramp
2026-07-26 11:51:50 +07:00
3dtours
523a754949
fix: remove grab handle e.stopPropagation blocking ruler clicks
2026-07-26 11:48:21 +07:00
3dtours
79999065a7
fix: ruler click moves playhead, drag moves range
2026-07-26 11:45:47 +07:00
3dtours
e18b261943
fix: ruler range drag/move, default cursor, SonicSF smooth stopAll
2026-07-26 11:42:06 +07:00
3dtours
7601cc72c9
fix: ruler click playhead update using available props onStop+onPlayPause
2026-07-26 11:36:55 +07:00
3dtours
5e096b5594
fix: remove range auto-loop + gain fade-out for reschedule crackling
2026-07-26 11:34:02 +07:00
3dtours
d3a3adca8a
fix: realtime velocity with updatedNotes + ruler restart without onStop
2026-07-26 11:28:47 +07:00
3dtours
b6b1faf083
feat: realtime velocity, ruler play click, export MIDI button
2026-07-26 11:20:19 +07:00
3dtours
90ca8f484b
fix: restore isPlaying after stopAllPlayback on instrument change
2026-07-26 11:13:50 +07:00
3dtours
9717470bb6
fix: instrument change keeps loop playback alive
2026-07-26 11:10:31 +07:00
3dtours
e57f6d96d9
fix: MIDI tab real-time instrument change - restart playback
2026-07-26 11:07:37 +07:00
3dtours
5b500ebdf3
fix: remove MIDI tab loop button + Ctrl+click clear range
2026-07-26 11:03:51 +07:00
3dtours
9438f44052
fix: CC note detection with Y-aware stem matching
2026-07-26 10:59:33 +07:00
3dtours
27d9556a9d
fix: brush draw pitch revisit by comparing lastDrawnPitch
2026-07-26 10:55:21 +07:00
3dtours
034455598d
fix: brush draw per-note duration with noteStartBeats tracking
2026-07-26 10:50:45 +07:00
3dtours
8450bd6de4
fix: brush draw only pitch change + CC velocity skip unchanged
2026-07-26 10:48:16 +07:00
3dtours
d2993eee69
fix: brush drawing smooth - track pitch + beat delta
2026-07-26 10:44:37 +07:00
3dtours
fe379c45e2
fix: brush shape draw + remove transport + loop repeat sound
2026-07-26 10:41:31 +07:00
3dtours
d20fafb75e
fix: velocity flicker - grid canvas useLayoutEffect sync
2026-07-26 10:29:23 +07:00
3dtours
0b7dd82407
fix: scroll speed matches mouse + CC flicker useLayoutEffect
2026-07-26 10:26:00 +07:00
3dtours
7107a0cc14
fix: brush scroll speed + CC snap + non-selected flicker
2026-07-26 10:21:31 +07:00
3dtours
8ec4b05e21
fix: brush pitch-based scroll + CC velocity per-note paint
2026-07-26 10:14:40 +07:00
3dtours
9237d01f35
fix: auto-scroll continuous + batch CC velocity for selected notes
2026-07-26 10:09:55 +07:00
3dtours
a7417b9bfa
fix: đã sửa lỗi bị mất không hiển thị midi piano grid
2026-07-26 10:05:23 +07:00
3dtours
a765998455
feat: piano roll 4 features - SNAP, velocity selected, auto-scroll, synth button
2026-07-26 09:43:19 +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
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
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
6cc3ae6ab8
fix: use startSubTabPlayback for piano roll recording + pass recTempMidiNotes prop
2026-07-25 19:39:55 +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