Zettelkasten

OMR용 compact notation은 MusicXML 대비 토큰 효율성을 위해 설계했다

·수정 1

요약

  • VLM으로 악보를 읽힐 때, 출력 포맷의 토큰 수가 학습 난이도를 결정한다
  • MusicXML은 너무 장황하고, ABC는 암시적 요소가 많아서, 명시적이면서 간결한 compact notation을 설계했다

본문

왜 MusicXML이 아닌가

MusicXML로 "4옥타브 E 4분음표" 하나를 표현하면:

<note>
  <pitch><step>E</step><octave>4</octave></pitch>
  <duration>1</duration>
  <type>quarter</type>
</note>

약 20+ 토큰. Compact notation은 E4/q — 3토큰. 한 마디에 음표 6개면 MusicXML은 120+ 토큰, compact은 ~20토큰. VLM이 예측해야 할 시퀀스가 6배 차이 나면 학습 난이도가 크게 올라간다.

ABC notation과의 비교

ABC도 간결하지만 compact notation과 다른 점:

ABC Compact
피치 E (옥타브는 대소문자/쉼표로 암시) E4 (항상 명시)
리듬 기본 단위 대비 비율 (/2, 3) 절대 표기 (/q, /e, /s)
마디 구분 ` `
메타데이터 헤더 (K:, M:, L:) 인라인 태그 (<ks:3>, <ts:4/4>)
화음 [CEG] [C4,E4,G4]/q (피치+리듬 명시)

ABC는 컨텍스트 의존적(기본 음길이, 옥타브 기준)이라 VLM이 상태를 추적해야 한다. Compact은 모든 정보가 토큰 자체에 담겨있어 각 토큰을 독립적으로 예측할 수 있다.

compact notation 구조

<staff:Piano> <ks:3> <ts:4/4>
<m:1> E4/q A4/e C#5/e E4/h
<m:2> C#5/e B4/e A4/e B4/e [E4,C#5]/q [E4,C#5]/e [G4,E5]/e
  • <staff:악기>: 파트 구분
  • <ks:N>: 조표 (양수=샵, 음수=플랫)
  • <ts:N/N>: 박자표
  • <m:N>: 마디 번호 — 이미지의 마디선과 직접 대응
  • 음이름옥타브/리듬: C#4/e = C#4 8분음표
  • [음,음]/리듬: 화음
  • R/리듬: 쉼표

참고