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/리듬: 쉼표