5.3.2 \set コマンド

各コンテキストは プロパティ の集合を持ちます。プロパティとは、コンテキストの中に保持されている変数です。コンテキスト プロパティは、\set コマンドによって変更されます。\set コマンドは以下のような構文を持ちます:

\set context.property = #value

value は Scheme オブジェクトですので、# 文字を前に置く必要があります。

通常、コンテキスト プロパティの名前は、小文字で始まる単語に大文字で始まる単語をつなげたものです。これらはたいてい音楽から記譜への翻訳を制御します – 例えば、localAlterations (臨時記号を表示するかどうかを決定します) や、measurePosition (小節線を表示するタイミングを決定します) です。コンテキスト プロパティは、楽曲の解釈をしている間、ずっと値を変更しておくことができます。measurePosition がその良い例です。コンテキスト プロパティは \set で変更されます。

例えば、コンテキスト プロパティ skipBars#t にセットされていれば、複小節休符は 1 つの小節に統合されます (空の小節を圧縮する で説明されています):

R1*2
\set Score.skipBars = ##t
R1*2

[image of music]

context 引数が省略されている場合、プロパティはカレントの最下位のコンテキストにセットされます (一般に、ChordNames, Voice, TabVoice, あるいは Lyrics です)。

\set Score.autoBeaming = ##f
\relative {
  e''8 e e e
  \set autoBeaming = ##t
  e8 e e e
} \\
\relative {
  c''8 c c c c8 c c c
}

[image of music]

変更は ‘オンザフライ’ (その場、その時々) で適用されるため、設定 \set autoBeaming = ##t は 2 番目の 8 分音符グループだけに効果を持ちます。

最下位コンテキストが常に変更しようとしているプロパティを持っているとは限らないということに注意してください – 例えば、skipBars プロパティをデフォルトの最下位コンテキスト (この場合は、Voice です) にセットしようと試みても、効果はありません。なぜなら、skipBarsScore コンテキストのプロパティだからです。

R1*2
\set skipBars = ##t
R1*2

[image of music]

コンテキストは階層構造をとるため、音楽表記を囲っているコンテキスト – 例えば、Staff – が指定された場合、変更は現在の Staff の中にあるすべての Voice に適用されます。

\unset コマンド:

\unset context.property

は、context から property の定義を削除するために使用されます。このコマンドは、context の中にセットされた場合にのみ、定義を削除します。音楽表記を囲っているコンテキストにセットされたプロパティは、囲まれているコンテキストの中にある \unset では変更されません:

\set Score.autoBeaming = ##t
\relative {
  \unset autoBeaming
  e''8 e e e
  \unset Score.autoBeaming
  e8 e e e
} \\
\relative {
  c''8 c c c c8 c c c
}

[image of music]

\set と同様に、 最下位コンテキストに対しては context 引数を指定する必要はありません。ですから、以下の 2 つの記述:

\set Voice.autoBeaming = ##t
\set autoBeaming = ##t

は、カレントの最下位コンテキストが Voice であれば、等価です。

\set\unset の前に \once を置くと、その設定は単一の時間ステップにだけ適用されます:

c''4
\once \set fontSize = #4.7
c''4
c''4

[image of music]

利用可能なすべてのコンテキスト プロパティについての完全な記述は、内部リファレンスにあります。以下を参照してください: Tunable context properties.

参照

内部リファレンス: Tunable context properties


LilyPond 記譜法リファレンス v2.25.21 (開発版).