楽譜XMLを策定する 1 (序章)

楽譜をXMLで表現するという試みは既にある。対応アプリケーションと同伴で提供していることが多い。しかし、自分の知っているものはどれも思い描くものに当てはまらないので自分で考えることにする。
既存の楽譜XMLでは以下の点が目立つ。

  1. 楽譜で表示されることを前提として座標などの表記データを記述
  2. 音の再生のために専用のマークアップを記述
  3. 結果として非常に複雑なXMLとなっている

では、どのようなXMLにしたいか。これを簡単に挙げると以下の2点。

  1. システム開発者の視点ではなく作曲者の視点
  2. XMLで音量やタイミングなどを細かく指定せずにプレイヤーを尊重

1.はシステムとして必要だからマークアップするのでなく、曲としての必要要件だからマークアップするという意味。例えば「crescendo」をそのまま表示するか太字にするかというのは曲としては意味をなさないので、それはXMLで記述する対象ではないということ。
2.はソフトで音を再生しようとすると細かく規定したくなるけれど、それは楽譜ではなくなるのでやめたいという意味。「fff」と表記されているからといって強さがMIDIでいう「127」であるという作曲はないだろう。「fff」の区間でアクセント記号が出てくればどうするのか、そのアクセント記号自体が連続する音符に全て付いていても全く同じ音量か。これらはXMLで数値化されて指定されるべきではなく、プレイヤーに依存するべきだと考える。プレイヤーというのは演奏家という意味で使っているけれど、それに限らずソフトで読み込むときも同じだと思う。楽譜のフォントや体裁は出版社が決めるように、ソフト側が自由に解釈してよいと思う。勿論、音を再生するにあたっても再生するソフトがより良い再生の仕方を工夫して解釈すべきだと思う。
以上の点を踏まえて今後時間があるときに考察してはこのブログにアップしていこうと思う。但し、通常書いているブログのエントリと混ざると辿りにくいので、このページを目次としてリンクを追加してゆくことにする。

最初から具体的な話がないのでは活気がでないので、まずは楽譜の横軸について考えてみる。
横軸はどのタイミングで演奏するかを定義するもので、MIDIの世界では四分音符を基準として数値化している。昔は四分音符=96が主流だったが、途中で四分音符=480に切り替わったように思う。現在のPCのシーケンサーはこれ以上のものも勿論ある。480分解でもかなり細かい定義が可能と考えられるけれど、これは最初に述べた思想に合わない。480分の14のタイミングで弾けと指定している楽譜は見たことがない。
ではどうするのか。これは本来の楽譜の表記に従った方が自然だと考える。楽譜では音の長さは割り算で表される。小節を基本にして4分割の長さを四分音符。16分割の長さを16分音符という具合だ。そして楽譜の横軸はこのような音符の長さを基準にタイミングを指定している。
何が言いたいのかというと、2/4の位置というのは4分音符の長さで二つ目の位置ということが判るし、15/16の位置は16分音符を並べて最後のから二番目の位置ということが判る。つまり音符自体を数値で定義する必要はなく小節内の割合で示せるということだ。これを実際のソフトが読み取るときにどのように変換するかはソフトの問題でXMLの問題ではない。
同じ要領で永久に細かく定義することもできるけれど、目的は細かくすることではなくて楽譜で記載される位置情報を超えない精度で表現することにある。システム的にみても何らかの数値に置き換えるのは時代の流れについて行きにくいので、音符ベースの位置定義は理想的かと思われる。

目次

  1. 楽譜XMLを策定する 1 (序章)
  2. 楽譜XMLを策定する 2 (音程)
  3. 楽譜XMLを策定する 3 (音符)

※ご意見などをコメント・トラックバックで頂けるとうれしいです。

3件のコメント

  1. 楽譜のXML標準ってあるのかなと思って探していたら発見。
    既に停止しているようですがどんな結果になったのかな。

  2. こんにちは。実際に動作するものがある上で検討した方が良さそうだなと思って何か読み込んで動くものを作ろうとして今に至ります。。なのでこのエントリに貼ってあるリンクの情報までしか考えられていません。
    ただ、音楽は自分の趣味の中で一番大きな存在なので、もし有意義なフォーマットが世の中になければ、また再開するつもりです。

  3. 初めまして
    今朝突然音符のXML標記はないのかと思い立って検索してみて見つけました。音符を小節の位置で表現するなど実に素晴らしいアイデアだと思います。ぜひ研究を進めていただきたいですね。

コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です