ソフトのデザイン上避けるべき点

楽譜作成ソフトによる出来栄えが十分で、お守りの必要が無いとしたら素敵です。 LilyPondの目的はそういうシステム、美しい楽譜("譜面")を自動的に作るプログラム、を作ることでした。

ちょっと見には、楽譜の記譜は直線的な階層構造に従います。 次の2小節からなる2段譜の例を見てみましょう。

ソフトを書くということは階層構造を見つけ、現実世界を木構造でモデリングすることじゃ無かったでしょうか? 単純なプログラマーにとっては、上の楽譜の断片は安直に入れ子になった箱に抽象化されます。

ソフトを書くときにこのモデルに従うのは簡単です。 このデータをメモリに保存する方法は明白で、それをディスクに保存するのも簡単です。 XMLファイルでは、次のような感じに書けるでしょう。
  <score>
    <staff>
      <measure id="1">
         <chord length="1/2">
	   <pitch name="c">
         </chord>
         <chord>
	 
	 ....
      </measure>
    </staff>
  </score>

端的に、このモデルは明白で簡単、すっきりしています。 多くのソフトで使われているフォーマットです。しかし残念ながら、それは間違っています。 多くの単純な音楽には、階層構造による表現が使えますが、高度なものだと破綻します。 次の事例を考えてみましょう。

この例では、前述のモデルのいくつかの仮定が崩れています。 段が途中で終わったりまた始まったりしていますし、声部が違う段に移動したり、時々2つの段に跨っています。

音楽の記譜は、音楽そのものとは大変違います。 楽譜は音楽の概念を視覚化する為の記号図式による言語で、簡単な音楽を表すのに複雑な表現になることがしばしばあります。 ですので、ソフトはこの2つの違いを反映する必要があります。

次は分割と統治、自動楽譜作成の設計図。


ホーム > 概要 > エッセー

他の言語: English, Deutsch, Español, Français
自動言語選択について。