GNU LilyPond 学習マニュアル: 4.2.1 レイアウト オブジェクトのプロパティ

### 4.2.1 レイアウト オブジェクトのプロパティ

あなたがスラーを楽譜に描き、そのスラーが細すぎるためにもう少し太くしたいと思ったとします。どうやってスラーを太くしますか？以前に LilyPond の自由度の高さについて述べたので、そのようなことが可能であることは知っています。あなたはおそらく `\override` コマンドが必要であると推測するでしょう。しかしながら、スラーの太さプロパティは存在するのでしょうか？そして、それが存在するならどうやって変更するのでしょうか？このようなことに内部リファレンス マニュアルは触れています。内部リファレンス マニュアルには、あなたがスラーを太くするために必要な情報、他のすべての `\override` コマンドを構築するために必要な情報が含まれています。

内部リファレンスを見ていく前に一言警告です。これは リファレンス ドキュメントであり、説明はほんの少しかまったく含まれていません: リファレンスの目的は情報を正確に、かつ簡潔に提供することです。そのため、内部リファレンスを一見してひるんでしまうかもしれません。しかし、心配しないでください！ここにあるガイダンスと説明を読めば、少し練習するだけで、内部リファレンスから必要な情報を取り出せるようになります。

実際の音楽からの簡単な断片を持つ具体例を使用していきましょう:

>     {
>       \key es \major
>       \time 6/8
>       \relative {
>         r4 bes'8 bes[( g]) g |
>         g8[( es]) es d[( f]) as |
>         as8 g
>       }
>       \addlyrics {
>         The man who | feels love's sweet e -- | mo -- tion
>       }
>     }

ここで、スラーをもう少し太くしようと決めたことにします。それは可能でしょうか？スラーは確かにレイアウト オブジェクトです。そのため、その疑問は ‘スラーに属していて、太さを制御するプロパティは存在するのか？’ ということになります。その答えを得るために内部リファレンス – 縮めて IR – を見なければなりません。

あなたが使用しているバージョンの LilyPond のための内部リファレンスは LilyPond ウェブサイト https://lilypond.org で見つかるでしょう。ドキュメント ページに行き、内部リファレンスへのリンクをクリックしてください。学習目的のためには標準の HTML バージョンを使うべきであり、‘1 つの大きなページ’ や PDF を使うべきではありません。次の数段落を読めば、あなたが内部リファレンスを読むときに実際にすべきことがわかるでしょう。

内部リファレンスの トップ ページ 下には 5 つのリンクがあります。Backend へのリンクを選択してください。そこにはレイアウト オブジェクトについての情報があります。Backend 下にある All layout objects へのリンクを選択してください。そのページには、あなたが使用しているバージョンの LilyPond で使用されるすべてのレイアウト オブジェクトがアルファベット順でリストアップされています。Slur へのリンクを選択すると、Slur のプロパティがリスト アップされます。

記譜法リファレンスからこのページを見つける方法もあります。スラーについて扱っているページで、内部リファレンスへのリンクが見つかるかもしれません。このリンクでこのページに直接行くことができます。しかしながら、あなたが調整するレイアウト オブジェクトの名前を想像できる場合は、すぐに内部リファレンスに行ってそこで探す方が簡単です。

内部リファレンスの Slur ページでは、まず Slur オブジェクトは `Slur_engraver` によって作成されるということが述べられています。それから、標準設定がリストアップされています。スラーの太さを制御していそうなプロパティを探してブラウザをスクロール ダウンさせていくと、以下が見つかります:

>     thickness (number)
>          1.2
>          Line thickness, generally measured in line-thickness

これが太さを変更するプロパティのようです。`thickness` の値は 数 であり、デフォルト値は 1.2、この値は他のプロパティでは `line-thickness` と呼ばれるということがわかります。

前にも言ったように、内部リファレンスには説明がほとんど、あるいはまったくありません。しかしながら、すでにスラーの太さを変えるための十分な情報を持っています。レイアウト オブジェクトの名前は `Slur` であり、変更するプロパティの名前は `thickness` であり、スラーをもっと太くするには新しい値を 1.2 よりも大きくすべきであることがわかります。

今度は、レイアウト オブジェクト名で見つけた値を置き換えることによって `\override` コマンドを構築することができます。コンテキストは省略します。最初は太さに非常に大きな値を割り当ててみます。それによって、そのコマンドが確かに機能していることを確かめることができます。実行するコマンドは以下のようになります:

>     \override Slur.thickness = #5.0

新しい値の前に `#` を付けることを忘れないでください！

最後の疑問は ‘このコマンドをどこに置くべきか？’ ということです。そのことについて不確かであり、学んでいる最中であるのならば、ベストな答えはこうです ‘音楽表記の内部で、最初のスラーの直前’。ではやってみましょう:

>     {
>       \key es \major
>       \time 6/8
>       \relative {
>         % これ以降にある全てのスラーの太さを 1.2 から 5.0 にします
>         \override Slur.thickness = #5.0
>         r4 bes'8 bes[( g]) g |
>         g8[( es]) es d[( f]) as |
>         as8 g
>       }
>       \addlyrics {
>         The man who | feels love's sweet e -- | mo -- tion
>       }
>     }

確かにスラーが太くなっています。

これが `\override` コマンドを構築する基本的な方法です。これより後のセクションで遭遇するものはもう少し複雑ですが、必要な要点はすべて知っています – しかしながら、まだ練習が必要でしょう。これは以下の例で提供されます。

#### コンテキストを見つけ出す

しかしながら、まず最初にコンテキストを指定しなければならないとしたらどうでしょうか？指定すべきコンテキストは何でしょうか？スラーとボイスは音楽表記の各行で明らかに関係が深いので、スラーは `Voice` コンテキストの中にあると推測できるかもしれません。しかし、それは確かでしょうか？この問題を解決するには、Slur について記述している内部リファレンス ページの先頭に戻ります。そこには ‘Slur オブジェクトは Slur エングラーバによって作成される’ と書かれています。そのため、スラーは `Slur_engraver` が存在しているコンテキストのどれかで作成されるということになります。`Slur_engraver` へのリンクを辿ります。そのページの最後の方で `Slur_engraver` は 7 つのボイス コンテキスト – 標準のボイス コンテキストである `Voice` を含む – の一部であることが述べられています。ですから、推測は正しかったのです。そして、`Voice` は最下位のコンテキストの 1 つである – このことは、そこに音符を入力するという事実によって明らかに示されています – ため、ここではそのコンテキストを省略することができるのです。

#### 1 回だけオーバライドする

上記の最後の例では すべて のスラーが太くなっています。しかし、最初のスラーだけを太くしたい場合はどうでしょうか？これは `\once` コマンドを使うことによって達成されます。`\override` コマンドの直前に `\once` コマンドを置くことによって、`\override` コマンドは 直後にある 音符から始まるスラーだけを変更するようになります。直後にある音符がスラーの開始点ではない場合、そのコマンドはまったく機能しません – それがスラーに遭遇するまで保持されるということはなく、ただ切り捨てられるだけです。そのため、`\once` コマンド付きの `\override` コマンドは以下のように上記の例とは異なる場所に置かなくてはなりません:

>     {
>       \key es \major
>       \time 6/8
>       \relative {
>         r4 bes'8
>         % 直後にあるスラーのみを太くします
>         \once \override Slur.thickness = #5.0
>         bes8[( g]) g |
>         g8[( es]) es d[( f]) as |
>         as8 g
>       }
>       \addlyrics {
>         The man who | feels love's sweet e -- | mo -- tion
>       }
>     }

今度は、最初のスラーだけが太くなりました。

`\once` コマンドは `\set` コマンドの前でも使用される可能性があります。

#### 元に戻す

最後に、最初の 2 つだけのスラーを太くしたい場合はどうでしょうか？その場合、2 つのコマンド – それぞれの前に `\once` を付けた – をスラーが始まる音符の直前に置きます:

>     {
>       \key es \major
>       \time 6/8
>       \relative {
>         r4 bes'8
>         % 直後にあるスラーのみを太くします
>         \once \override Slur.thickness = #5.0
>         bes[( g]) g |
>         % 直後にあるスラーのみを太くします
>         \once \override Slur.thickness = #5.0
>         g8[( es]) es d[( f]) as |
>         as8 g
>       }
>       \addlyrics {
>         The man who | feels love's sweet e -- | mo -- tion
>       }
>     }

あるいは、`\once` コマンドを省略して、2 番目のスラーの後に `thickness` プロパティをデフォルト値に戻すために `\revert` コマンドを使うこともできます:

>     {
>       \key es \major
>       \time 6/8
>       \relative {
>         r4 bes'8
>         % 以後のスラーの太さを 1.2 から 5.0 に増やします
>         \override Slur.thickness = #5.0
>         bes[( g]) g |
>         g8[( es]) es
>         % 以後のスラーの太さをデフォルトの 1.2 に戻します
>         \revert Slur.thickness
>         d8[( f]) as |
>         as8 g
>       }
>       \addlyrics {
>         The man who | feels love's sweet e -- | mo -- tion
>       }
>     }

`\revert` コマンドは `\override` コマンドで変更されたどのプロパティでもデフォルト値に戻すことができます。状況に相応しい方を使用してください。

これで内部リファレンスと調整の基本的な方法についての紹介を終わりにします。この章で後に続くセクションの中にあるいくつのかの例でも一部では、内部リファレンスの特徴についての追加の紹介や、そこから情報を取り出すための更なる練習を提供します。それらの例ではガイダンスや説明のための言葉はずっと少ないでしょう。

#### LilyPond — 学習マニュアル v2.22.2 (安定版).