# 메타타임(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. 메타는 존중하되, 명시적 오버라이드는 허용한다 우선순위는 다음과 같다. 1. CLI 옵션 (명시적 오버라이드) 2. ARR 메타데이터 3. 기본값 이는 다음 철학을 따른다. > **암묵적 추정보다 명시적 의도를 우선한다.** --- ## 4. MetaTime의 실천적 의미 MetaTime은 단순한 이론이 아니라, 다음을 가능하게 한다. - 변박과 트리플렛을 동일한 코드로 처리 - 패턴 포맷 단순화 - ADS 스트림 설계의 일관성 확보 - 펌웨어 재생 루프의 안정화 - UI, 로그, 디버깅 기준의 명확화 --- ## 5. 선언 MetaTime은 다음을 선언한다. - 시간은 추정하지 않는다. - 시간은 박자에서 유도하지 않는다. - 시간은 메타데이터에 의해 계산된다. 이 원칙은 ARR → MID → ADS → Firmware 전 구간에 적용되며, Nano Ardule / APS 생태계의 시간 처리 기준점으로 사용된다. --- ## 6. 맺음말 박자는 음악을 이해하기 위한 인간의 언어다. 기계는 그 언어를 이해할 필요가 없다. MetaTime은 이 단순한 사실을 데이터 구조와 코드 레벨에서 끝까지 밀어붙인 결과다.