From b69aedfb7c560f8e8a52e45fac8a4f3241d76f82 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=97=B0=EC=9A=B0?= Date: Wed, 10 Jun 2026 21:50:12 +0900 Subject: [PATCH] =?UTF-8?q?fix:=20=EB=8B=A8=EB=85=B8=ED=8A=B8=20=EA=B8=B8?= =?UTF-8?q?=EC=9D=B4=20=EC=9D=BC=EA=B4=80=EC=84=B1=20=EB=AA=A8=EB=93=9C?= =?UTF-8?q?=EC=97=90=EC=84=9C=20=EB=A1=B1=EB=85=B8=ED=8A=B8=20=ED=91=9C?= =?UTF-8?q?=EC=8B=9C=20=EA=B8=B8=EC=9D=B4=20=EC=9E=98=EB=A6=BC=20=EC=88=98?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/renderer/hooks/overlay/useNoteSystem.ts | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/renderer/hooks/overlay/useNoteSystem.ts b/src/renderer/hooks/overlay/useNoteSystem.ts index 5ef29246..803234ef 100644 --- a/src/renderer/hooks/overlay/useNoteSystem.ts +++ b/src/renderer/hooks/overlay/useNoteSystem.ts @@ -431,10 +431,15 @@ export function useNoteSystem({ noteRef?.startTime ?? state.startTime ?? state.downTime ?? releaseTime; const clampedStart = Math.min(releaseTime, baselineStart); const holdDurationFromStart = Math.max(0, releaseTime - clampedStart); + // delayed mode: 시작 표시가 threshold만큼 지연되므로 실제 입력 유지 시간 기준으로 길이 계산 (종료도 동일하게 지연) + const physicalHoldMs = + state.useDelay && state.downTime != null + ? Math.max(0, releaseTime - state.downTime) + : holdDurationFromStart; const minLengthMs = computeMinLengthMs(); const desiredDuration = forceMinLength ? minLengthMs - : Math.max(minLengthMs, holdDurationFromStart); + : Math.max(minLengthMs, physicalHoldMs); const safeDuration = Math.max(desiredDuration, 1); const targetEndTime = state.startTime + safeDuration;