nano_ardule_midi_controller:establishing_the_metatime_principle
This is an old revision of the document!
Table of Contents
메타타임(MetaTime) 원칙 수립
최종 갱신: 2026-01-1 1
1. 문제의식
드럼 패턴과 시퀀서를 설계하면서 가장 먼저 마주치는 개념은 보통 박자(Time Signature)이다.
그러나 실제 구현 단계에 들어가면, 박자는 점점 불편한 존재가 된다.
- 3/4, 4/4, 5/8, 7/8 …
- 트리플렛(8T, 16T)
- 1-bar 패턴, 2-bar 패턴(현재 설계한 패턴 기본 단위), half pattern(2-bar이지만 절반만 사용)
이 모든 변형을 “박자 중심”으로 처리하려는 순간,
패턴 포맷은 복잡해지고 예외 규칙은 끝없이 늘어난다.
이 과정에서 하나의 질문이 떠오른다.
기계는 과연 박자를 알고 있어야 하는가?
2. 핵
심 선언
기계는 박자를 알지 못한다.
기계가 실제로 필요로 하는 것은 다음뿐이다.
- 전체 스텝 수
- 각 스텝 사이의 시간 간격
- 스텝의 순서와 반복 구조
3/4인지 4/4인지는 사람이 해석하기 위한 정보일 뿐,
기계가 재생을 수행하는 데 필수적인 정보는 아니다.
이 관점에서 박자는 시간 구조가 아니라 메타데이터가 된다.
이 생각을 명확한 원칙으로 정리한 것이 MetaTime이다.
3. MetaTime 원칙 정의
원칙 1. 시간 구조는 메타데이터로부터 계산된다
- 시간은
GRID,PLAY_BARS,STEP_SUBDIV에 의해 결정된다. TIME_SIG는 구조를 강제하지 않는다.- 구조 계산 공식은 모든 패턴에 대해 동일하다.
원칙 2. LENGTH는 저장 크기이지 재생 길이가 아니다
LENGTH는 패턴이 보유한 최대 스텝 수를 의미한다.- 실제 재생 길이는
PLAY_BARS로 결정된다. - 같은 패턴 데이터라도 문맥에 따라 1-bar 또는 2-bar로 재생될 수 있다.
원칙 3. 박자는 사람을 위한 설명 정보다
TIME_SIG는 UI 표시, 로그 해석, 카운트인 계산에 사용된다.- 재생 엔진은 박자값에 의존하지 않는다.
- 변박, 혼합 박자도 동일한 재생 로직으로 처리된다.
원칙 4. Grid는 시간 분해능일 뿐, 음악적 특권을 갖지 않는다
GRID=16,GRID=8T,GRID=16T는 모두 동일한 원리로 처리된다.- 트리플렛은 특별한 예외가 아니라 단순한 subdivision 차이다.
- 재생 알고리즘은 grid 종류에 따라 분기하지 않는다.
원칙 5. 카운트인은 음악이 아닌 메타 도입부다
- 카운트인은 패턴 파일을 사용하지 않는다.
- 내부 생성된 이벤트로 처리한다.
- tick 보정(tick=1 등)은 카운트인에만 적용된다.
- ARR에 정의되어 있더라도 CLI에서 명시적으로 제거할 수 있다.
원칙 6. 메타는 존중하되, 명시적 오버라이드는 허용한다
우선순위는 다음과 같다.
- CLI 옵션 (명시적 오버라이드)
- ARR 메타데이터
- 기본값
이는 다음 철학을 따른다.
암묵적 추정보다 명시적 의도를 우선한다.
4. MetaTime의 실천적 의미
MetaTime은 단순한 이론이 아니라, 다음을 가능하게 한다.
- 변박과 트리플렛을 동일한 코드로 처리
- 패턴 포맷 단순화
- ADS 스트림 설계의 일관성 확보
- 펌웨어 재생 루프의 안정화
- UI, 로그, 디버깅 기준의 명확화
5. 선언
MetaTime은 다음을 선언한다.
- 시간은 추정하지 않는다.
- 시간은 박자에서 유도하지 않는다.
- 시간은 메타데이터에 의해 계산된다.
이 원칙은 ARR → MID → ADS → Firmware 전 구간에 적용되며,
Nano Ardule / APS 생태계의 시간 처리 기준점으로 사용된다.
6. 맺음말
박자는 음악을 이해하기 위한 인간의 언어다.
기계는 그 언어를 이해할 필요가 없다.
MetaTime은 이 단순한 사실을
데이터 구조와 코드 레벨에서 끝까지 밀어붙인 결과다.
nano_ardule_midi_controller/establishing_the_metatime_principle.1768126792.txt.gz · Last modified: by hyjeong
