雑感・音楽等

音楽・数学・プログラミングに関する,思い付き・雑感を記す.

lilypondの\overrideコマンドでプロパティを変更する

出力を調整する方法

lilypondでは,出力を調整するために「\set ○○」や「\override ○○」を使い,
内部のパラメータを変更する.
(出力の調整の例:音部記号を消す,符頭の色を変える,等)

「○○」の構造

出力を調整する命令の構文(角カッコの意味:その角カッコの中身を省略できる場合がある)

  • \set context.property = #value
  • \override [context.]GrobName.property = #value
  • \tweak [layout-object.]grob-property value

上記はあくまで構文なので,実際の命令ではオレンジ色の文字の部分を,実際の「プロパティの名前」に書き換えねばならない.

「○○」の決め方

では,何を変更するために,なんという「プロパティの名前」に書き換えるかは,
内部リファレンスを使って調べることになる.

以下では,どのページを見て,そのページのどこを見れば

  • \override [context.]GrobName.property = #value

における

  • context
  • GrobName
  • property

を決定できるかを以下で示す.

ここでは,テキスト スクリプト(音符の上下につく文字列)のフォントを変更する場合の手順を例示する.
(全ての場合に適用可能な手順であるかはわからない)

手順はおよそ次のようになる.

  1. 「記譜法リファレンス」で変更したいものを説明しているページを開く.
  2. 「記譜法リファレンス」から「内部リファレンス」(中心ページ)を開く(GrobNameが決まる)
  3. 「中心ページ」から「下位ページ」を開き,その中からpropertyに相当する部分を見つける.
  4. 「中心ページ」から「上位ページ」を開き,その中からcontextに相当する部分を見つける.

見るべきページ

  1. 「LilyPond — 記譜法リファレンス」を参照する.
    • テキストスクリプトのフォントを変更したいので,「テキスト スクリプト」の項目を参照する.
    • その下部に「参照」という項目があり,「内部リファレンス: TextScript」がある
      • GrobNameTextScriptとなる.
  2. リンクより,内部リファレンス「TextScript」を参照する.(中心ページ)
    • ページ下部に「This object supports the following interface(s): font-interface, grob-interface, instrument-specific-markup-interface, item-interface, self-alignment-interface, side-position-interface, text-interface and text-script-interface.」がある.
    • ページ上部に「TextScript objects are created by: Text_engraver.」がある.
      • 今回は,フォントを変更したいので,font-interfaceが関連しそうなので,ここにアクセスすべきだと判断する.
  3. 中心ページからのリンクより,内部リファレンス「font-interface」を参照する.(下位ページ)
    • 「User settable properties:」以下の記述で,「font-name (string)」があり,これがフォント名を指定するための変数だと判断する.
      • propertyfont-nameとなる.
  4. 中心ページからのリンクより,内部リファレンス「Text_engraver」を参照する.(上位ページ)
    • ページ下部に「Text_engraver is part of the following context(s): CueVoice, DrumVoice, Dynamics, GregorianTranscriptionVoice, KievanVoice, MensuralVoice, PetrucciVoice, TabVoice, VaticanaVoice and Voice.」
      • 普通の楽譜(Cue:CueVoiceやドラム譜:DrumVoice,ネウマ譜等のAncientNotationの楽譜:GregorianTranscriptionVoice・KievanVoice・MensuralVoice・PetrucciVoice・VaticanaVoice,タブ譜:TabVoice―ではない楽譜)のテキストスクリプト(強弱記号:Dynamics―でない文字)を扱うので,Voiceを使用すべきと判断する.
        • contextVoiceとなる.

以上より,

  • \override [context.]GrobName.property = #value

  • \override Voice.TextScript.font-name = #value

となる.

ここで,valueは,
下位ページに「font-name (string)」とあったので,文字列形式であり,フォント名をダブルクォーテーションで囲んだものを書けばよいとわかる.
入力すべきフォント名の調べかたは,lilypond 2.18.0でテキスト スクリプトのフォント変更 - 雑感・音楽等の最後の方に示した.