MusicXML 再び (2)

楽譜の構造に続いて,各パートの内部構造について見ていきます.

Part の構造

score-partwise 形式の場合,スコアは part > measure > note (music-data) の順に階層化されます.music-data としては,次のブロックを書くことができます.

この中で楽譜を書くのに最低限必要なのは note ブロック,attributes ブロックのようです.特殊な小節線を使いたいときは barline ブロックを,1つのパートで複数の声部を使いたいときは backup/forward ブロックなどを,必要に応じて使っていく感じのようです.

music-data の基本的な構造は次のようになります.


	
		attributes ブロック
		notes ブロック
		その他,必要なブロックを記述
	
	以下必要なだけ measure ブロックを続ける


	measure ブロック
	...

各 part ブロックに含まれる measure ブロックの総数は,おそらくは一致していないとエラーになります.measure ブロックの中に書けるブロックで,もっとも良く使うと思われる attributes ブロックと note ブロックについて見ていくことにします.

Attributes ブロック

Attributes ブロックには,以下のブロックを書くことができるようです.いずれも必須ではなく,ブロックに何のデータも含まなくてもかまいません.

  • divisions: 音符の長さを指定する.
  • key: 調に関するデータ.ハ長調などを指定する.
  • time: 拍子を指定するデータ.
  • staves: 1パートに2つ以上の楽器の譜面が含まれるときに使用?通常は1を指定.
  • instruments: 楽器名に関するデータ.
  • clef: ヘ音記号ト音記号などのデータ.
  • staff-details: 譜表に関するデータ.
  • transpose: 移調するときに使う.
  • directive: 演奏の指示に関するデータ.冒頭の速度指定などの表記につかう.
  • measure-style: 小節をまたぐ休符や,複数回演奏を繰り返すなどの特殊表記を指示するときに使うデータ.

この中でよく使いそうなのは divisions, key, time, clef あたりでしょうか.

divisions ブロック

divisions では,譜面の中で使う音符のもっとも短い長さを,四分音符の長さを基準に指定します(おそらく).具体的には,1 を指定すると譜面の中で使えるもっとも長さの短い音符は四分音符,ということになるようです.2 なら八分音符,4 なら十六分音符という要領です.notes ブロックの中で使う duration ブロックで各音符の長さを,divisions ブロックで指定した長さの何倍(整数倍)か,という形で指定します.例えば divisions で 2 を指定し,duration が 1 ならその音符の長さは八分音符になります.三連符を使いたい場合は,divisions にあらかじめ3の倍数を指定しなければなりません(多分).例えば,8分音符を3つに分けた三連符を使いたい場合は,divisions に 6 を指定し,duration に 1 を指定します.

1
key ブロック

key ブロックは調を指定します.key ブロックには fifths というブロックが必須で,このブロックで調性を指定します.fifths ブロックではシャープとフラットの数を指定し,シャープの数を指定する場合は正の数を,フラットの数を指定するときは負の数を指定します.例えばト長調ならシャープは1つなので 1 を指定します.変ロ長調ならフラットが 2 つなので -2 になります.ハ長調なら 0 です.

0

key ブロックには,このほか cancel, mode, key-step, key-alter などのブロックを含めることができます(解読略).

time ブロック

拍子を指定します.分子を beats で,分母を beat-type で指定します.拍子をまったく指定しない場合は,senza-misura という空のブロックを指定します.


clef ブロック

ト音記号ヘ音記号などを表示させます.記号の種類は sign ブロックで指定し,G,F, C (それぞれト音記号ヘ音記号,ハ音記号)が使えます.line ブロックで記号を置く線の位置を変えたり,clef-octave-change ブロックでオクターブを変更することもできるようです.


	G