User Tools

Site Tools


blog:absolute-time_loop_playback

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
blog:absolute-time_loop_playback [2025/11/14 17:31] – [2. 절대시간 기반 루프 방식의 핵심 아이디어] hyjeongblog:absolute-time_loop_playback [2025/11/14 21:51] (current) hyjeong
Line 45: Line 45:
 그 외에는 시간 누적 계산을 하지 않는다.   그 외에는 시간 누적 계산을 하지 않는다.  
 결과적으로 **반복해도 오차가 0**이다. 결과적으로 **반복해도 오차가 0**이다.
 +
 +==== 3-1. 절대시간 방식에서도 “루프 길이를 정확히 정의하는 것”이 중요하다 ==== 
 +
 +절대시간 기반 루프 엔진은 이벤트 재생 자체에는 오차가 없다.
 +그러나 루프 전체 구간(loopLength)을 잘못 정의하면,
 +루프를 반복할 때마다 시작점이 당겨지거나 늦어지는 문제가 발생할 수 있다.
 +
 +특히 MIDI 패턴에서:
 +
 +마지막 노트의 절대 tick(absTicks)은 “패턴이 끝나는 지점”이 아니라 마지막 노트가 있는 지점이다.
 +마지막 노트 뒤에 존재하는 음악적 ‘쉼(rest)’ 구간은 absTicks에 포함되지 않음.
 +따라서 absTicks를 loopLength로 사용하면 실제 루프가 원래보다 짧아진다.
 +이 경우 반복할 때마다 루프 시작점이 일정한 양만큼 앞당겨져 rushing이 발생한다.
 +
 +이를 방지하려면 루프 길이를 다음처럼 고정 그리드로 정의해야 한다:
 +
 +<code>
 +loopLengthTicks = PPQ × beatsPerBar × numberOfBars
 +예: 480 × 4 × 2 = 3840 ticks
 +</code>
 +
 +이렇게 하면 패턴의 내용과 무관하게
 +항상 정확히 동일한 길이의 루프가 만들어지고,
 +완전히 안정적인 반복이 가능해진다.
  
 ==== 4. 드럼 머신에서 절대시간 방식이 필수적인 이유 ==== ==== 4. 드럼 머신에서 절대시간 방식이 필수적인 이유 ====
Line 62: Line 86:
 ==== 5. 비유로 설명하면… ==== ==== 5. 비유로 설명하면… ====
  
-  * //delta-time 방식// = “걸으며 매 발걸음마다 위치를 더해서 계산하는 방식”   +  * //delta-time 방식// = “걸으며 매 발걸음마다 위치를 더해서 계산하는 방식” → 조금만 흔들려도 점점 위치가 틀어짐
-     → 조금만 흔들려도 점점 위치가 틀어짐+
  
-  * //absolute-time 방식// = “좌표에 점이 이미 찍혀 있고, 루프마다 원점만 이동하는 방식”   +  * //absolute-time 방식// = “좌표에 점이 이미 찍혀 있고, 루프마다 원점만 이동하는 방식” → 아무리 반복해도 항상 정확한 위치로 이동
-     → 아무리 반복해도 항상 정확한 위치로 이동+
  
 ==== 6. 요약 ==== ==== 6. 요약 ====
blog/absolute-time_loop_playback.1763109111.txt.gz · Last modified: by hyjeong