User Tools

Site Tools


nano_ardule_midi_controller:establishing_the_metatime_principle

This is an old revision of the document!


메타타임(MetaTime) 원칙 수립

최종 갱신: 2026-01-11


1. 문제의식

드럼 패턴과 시퀀서를 설계하면서 가장 먼저 마주치는 개념은 보통 박자(Time Signature)이다.
그러나 실제 구현 단계에 들어가면, 박자는 점점 불편한 존재가 된다.

  • 3/4, 4/4, 5/8, 7/8 …
  • 트리플렛(8T, 16T)
  • 1-bar 패턴, 2-bar 패턴, half pattern

이 모든 변형을 “박자 중심”으로 처리하려는 순간,
패턴 포맷은 복잡해지고 예외 규칙은 끝없이 늘어난다.

이 과정에서 하나의 질문이 떠오른다.

기계는 과연 박자를 알고 있어야 하는가?

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은 이 단순한 사실을
데이터 구조와 코드 레벨에서 끝까지 밀어붙인 결과다.

nano_ardule_midi_controller/establishing_the_metatime_principle.1768126733.txt.gz · Last modified: by hyjeong