blog:absolute-time_loop_playback
Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| blog:absolute-time_loop_playback [2025/11/14 17:31] – [2. 절대시간 기반 루프 방식의 핵심 아이디어] hyjeong | blog: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이 발생한다. | ||
| + | |||
| + | 이를 방지하려면 루프 길이를 다음처럼 고정 그리드로 정의해야 한다: | ||
| + | |||
| + | < | ||
| + | loopLengthTicks = PPQ × beatsPerBar × numberOfBars | ||
| + | 예: 480 × 4 × 2 = 3840 ticks | ||
| + | </ | ||
| + | |||
| + | 이렇게 하면 패턴의 내용과 무관하게 | ||
| + | 항상 정확히 동일한 길이의 루프가 만들어지고, | ||
| + | 완전히 안정적인 반복이 가능해진다. | ||
| ==== 4. 드럼 머신에서 절대시간 방식이 필수적인 이유 ==== | ==== 4. 드럼 머신에서 절대시간 방식이 필수적인 이유 ==== | ||
| Line 62: | Line 86: | ||
| ==== 5. 비유로 설명하면… ==== | ==== 5. 비유로 설명하면… ==== | ||
| - | * // | + | * // |
| - | → 조금만 흔들려도 점점 위치가 틀어짐 | + | |
| - | * // | + | * // |
| - | → 아무리 반복해도 항상 정확한 위치로 이동 | + | |
| ==== 6. 요약 ==== | ==== 6. 요약 ==== | ||
blog/absolute-time_loop_playback.1763109111.txt.gz · Last modified: by hyjeong
