5.1.2 オブジェクトとインタフェイス

調整には LilyPond プログラムの内部オペレーションと構造体への変更も含まれます。そのため、我々はまずそれらの内部オペレーションと構造体を記述するために使用されるいくつかの用語を導入しなければなりません。

‘オブジェクト’ という用語は入力ファイルを処理している最中に LilyPond によってビルドされる多くの内部構造体を参照するために使われる汎用的な用語です。LilyPond が \new Staff のようなコマンドに遭遇した場合、タイプ Staff の新しいオブジェクトを構築します。その Staff オブジェクトは、その譜のコンテキスト内部で機能するために割り当てられているエングラーバの詳細とともに、その譜に関連付けられているすべてのプロパティ – 例えば、その譜の名前、調号 – を保持します。同様に、Voice オブジェクト、Score オブジェクト、Lyrics オブジェクトなどの他のすべてのコンテキストのプロパティを保持するためのオブジェクトが存在し、さらに、小節線、符頭、タイ、強弱記号などのすべての記譜要素を表すためのオブジェクトも存在します。各オブジェクトはそれ自体のプロパティ値のセットを持ちます。

いくつかのタイプのオブジェクトには特別な名前が与えられています。符頭、符幹、スラー、タイ、運指記号、音部記号などの譜刻される出力上の記譜要素を表すオブジェクトは ‘レイアウト オブジェクト’ と呼ばれ、しばしば ‘グラフィカル オブジェクト’ あるいは短くして ‘グロッブ (Grob: GRaphical OBject)’ と呼ばれます。これらのオブジェクトも上記の汎用的な観点から見るとオブジェクトであり、それゆえ、それらもまたそれらのオブジェクトに関連付けされたプロパティ – そのオブジェクトの位置、サイズ、色など – を持ちます。

いくつかのレイアウト オブジェクトも特別です。フレージング スラー、クレッシェンド、オッターバ記号、他の多くのグラフィカル オブジェクトが置かれる場所は一点ではありません – それらは開始点、終了点、そしておそらくそれらの形に関係する他のプロパティを持ちます。これらのオブジェクトのように形が伸長されるオブジェクトは ‘スパナ (Spanners)’ と呼ばれます。

スパナは生成された後に調整を行うことができません。楽譜全体にわたって続く StaffSymbolLedgerLineSpanner も同様です。ただし、 \stopStaff コマンドによって終了し、\startStaff コマンドで新たに生成された場合を除きます。

また、‘抽象 (abstract)’ グラフィカル オブジェクトというものも存在します。これはオブジェクト自身は出力に何も書き出しませんが、他のグラフィカル オブジェクトを収集し、配置や管理をする役割を担います。 DynamicLineSpanner, BreakAlignment, NoteColumn, VerticalAxisGroup, NonMusicalPaperColumn などが例です。後で、これらがどのように使われるかを見ていきましょう。

‘インタフェイス’ とは何なのかという説明が残っています。多くのオブジェクト – たとえそれらが非常に異なっていたとしても – は同じ方法で処理される必要がある共通特徴を共有します。例えば、すべてのグラフィカル オブジェクトは色、サイズ、位置などを持ち、これらのプロパティはすべて LilyPond が入力ファイルを構文解釈する最中に同じ方法で処理されます。これらの内部オペレーションを簡潔にするために、これらの共通アクションとプロパティは 1 つのグループとして grob-interface と呼ばれるオブジェクトにまとめられています。これと同じような共有プロパティのグループ化が他にも多くあり、それぞれに対して最後に interface が付く名前が与えられています。そのようなインタフェイスの総数は 100 を越えます。我々は後でなぜこれがユーザにとって利益となり、役に立つのかを見ていきます。

これらは、我々がこの章で使用するオブジェクトと関係する主要な用語です。

GNU LilyPond 学習マニュアル v2.25.22 (development-branch).