GNU LilyPond 学習マニュアル: 3.4.3 ゼロから楽譜を構築する

### 3.4.3 ゼロから楽譜を構築する

LilyPond コードを書くことにある程度熟練した後、あなたはテンプレートの 1 つを変更するよりもゼロから楽譜を構築するほうがより容易であることに気づくかもしれません。さらに、あなたはこの方法であなたの好みのタイプの音楽に適したあなた自身のスタイルを開発することもできます。例として、オルガン前奏曲のための楽譜を作成する手順を見てみましょう。

ヘッダ セクションから始めます。そこでタイトル、作曲者の名前などを記述し、それから任意の変数を定義し、最後にスコア ブロックに取り掛かります。以上のことを概要から始めて、その後に詳細を詰めていきます。

Jesu, meine Freude – これは 2 つの鍵盤とペダルを持つオルガンのために書かれたものです – をベースとする Bach の前奏曲の最初の 2 小節を使います。このセクションの最後でこの音楽の最初の 2 小節を見ることができます。上段鍵盤パートは 2 つのボイスを持ち、下段鍵盤とペダルはそれぞれ 1 つのボイスを持ちます。そのため、4 つの音楽定義と、拍子記号と調号を定義するための 1 つの音楽定義が必要となります:

>     \version "2.22.2"
>     \header {
>       title = "Jesu, meine Freude"
>       composer = "J S Bach"
>     }
>     keyTime = { \key c \minor \time 4/4 }
>     ManualOneVoiceOneMusic = { s1 }
>     ManualOneVoiceTwoMusic = { s1 }
>     ManualTwoMusic = { s1 }
>     PedalOrganMusic = { s1 }

>     \score {
>     }

ここでは、実際の音楽の代わりに空白音符 `s1` を使用しました。実際の音楽は後で付け加えます。

次に、スコア ブロックで何をすべきなのかを見ていきましょう。単純に望む譜表構造を反映させます。通常、オルガン音楽は 3 つの譜で書かれます – 2 つの鍵盤とペダルのための譜です。鍵盤の譜はブレース (譜表の左端の波括弧) でまとめられているべきなので、それらに対して `PianoStaff` を使用する必要があります。1 番目の鍵盤パートは 2 つのボイスを必要とし、2 番目の鍵盤パートは 1 つだけボイスを必要とします。

>     \new PianoStaff <<
>       \new Staff = "ManualOne" <<
>         \new Voice {
>           \ManualOneVoiceOneMusic
>         }
>         \new Voice {
>           \ManualOneVoiceTwoMusic
>         }
>       >>  % ManualOne Staff コンテキストの終了
>       \new Staff = "ManualTwo" <<
>         \new Voice {
>           \ManualTwoMusic
>         }
>       >>  % ManualTwo Staff コンテキストの終了
>     >>  % PianoStaff コンテキストの終了

次にペダル オルガンのための譜表を付け加える必要があります。これは `PianoStaff` の下にきますが、`PianoStaff` と同時進行でなければなりませんので、ペダル オルガンのための譜表と `PianoStaff` を山括弧で囲む必要があります。これを忘れるとエラーがログ ファイルに生成されます。このエラーはあなたが早かれ遅かれ遭遇する一般的なミスです！生成されるエラーを確認するために、このセクションの最後にある例をコピーし、この山括弧を削除し、コンパイルしてみてください。

>     <<  % PianoStaff と Pedal Staff を同時進行させる必要があります
>       \new PianoStaff <<
>         \new Staff = "ManualOne" <<
>           \new Voice {
>             \ManualOneVoiceOneMusic
>           }
>           \new Voice {
>             \ManualOneVoiceTwoMusic
>           }
>         >>  % ManualOne Staff コンテキストの終了
>         \new Staff = "ManualTwo" <<
>           \new Voice {
>             \ManualTwoMusic
>           }
>         >>  % ManualTwo Staff コンテキストの終了
>       >>  % PianoStaff コンテキストの終了
>       \new Staff = "PedalOrgan" <<
>         \new Voice {
>           \PedalOrganMusic
>         }
>       >>
>     >>

2 番目の鍵盤パートとペダル オルガンの譜表は 1 つだけしか音楽表記を保持しないため、それらに対して同時進行構造 `<< … >>` を使う必要は必ずしもありません。しかしながら、そうしても害はありませんし、`\new Staff` の後に常に山括弧を置くというのは複数のボイスがある場合では推奨される良い習慣です。Voice はこれとは対照的に、あなたの音楽を連続して演奏すべきいくつかの変数に分けてコード化する場合に Voice の後に波括弧 `{ … }` を常に置くべきです。

この構造をスコア ブロックに付け加えて、インデントを調整しましょう。さらに、適切な音部記号を付け加え、`\voiceOne` と `\voiceTwo` を使って上部譜の各ボイスで符幹、タイ、スラーの向きが正しくなるようにし、あらかじめ定義しておいた変数 `\keyTime` を使って拍子記号と調号を各譜に挿入します。

>     \score {
>       <<  % PianoStaff と Pedal Staff を同時進行させる必要があります
>         \new PianoStaff <<
>           \new Staff = "ManualOne" <<
>             \keyTime  % 調号と拍子記号をセットします
>             \clef "treble"
>             \new Voice {
>               \voiceOne
>               \ManualOneVoiceOneMusic
>             }
>             \new Voice {
>               \voiceTwo
>               \ManualOneVoiceTwoMusic
>             }
>           >>  % ManualOne Staff コンテキストの終了
>           \new Staff = "ManualTwo" <<
>             \keyTime
>             \clef "bass"
>             \new Voice {
>               \ManualTwoMusic
>             }
>           >>  % ManualTwo Staff コンテキストの終了
>         >>  % PianoStaff コンテキストの終了
>         \new Staff = "PedalOrgan" <<
>           \keyTime
>           \clef "bass"
>           \new Voice {
>             \PedalOrganMusic
>           }
>         >>  % PedalOrgan Staff の終了
>       >>
>     }  % Score コンテキストの終了

上のオルガン譜のレイアウトはほぼ完璧です。しかしながら、それぞれの譜を見ているだけではわからない、ちょっとした欠陥があります。ペダル譜と左手譜の距離は右手譜と左手譜の距離とほぼ等しくなるべきです。詳しく説明すると、`PianoStaff` コンテキストの譜の伸縮性は制限される (制限により、左手譜と右手譜の距離はあまりにも大きくなることはありません) ので、ペダル譜も同様に制限されるべきです。

譜の伸縮性は ‘グラフィカル オブジェクト’ `VerticalAxisGroup` の `staff-staff-spacing` プロパティで制御することができます。 (LilyPond ドキュメントの中でグラフィカル オブジェクトは ‘grobs’ と呼ばれることが多いです。) 今、グラフィカル オブジェクトの詳細について知らなくても心配しないでください。後で詳しく説明します。興味があるのなら、 Overview of modifying properties を見てください。今回は、`stretchability` サブ-プロパティを変更する必要があるだけです。さらに興味があるのなら、グラフィカル オブジェクト `VerticalAxisGroup` の定義を調べていくと、ファイル ‘`scm/define-grobs.scm`’ の中に `staff-staff-spacing` プロパティのデフォルト値を見つけることができます。`stretchability` の値は、`PianoStaff` コンテキスト (これはファイル ‘`ly/engraver-init.ly`’ の中にあります) の定義から来ていて、2 つの値は等価です。

>     \score {
>       <<  % PianoStaff と Pedal Staff を同時進行させる必要があります
>         \new PianoStaff <<
>           \new Staff = "ManualOne" <<
>             \keyTime  % 調号と拍子記号をセットします
>             \clef "treble"
>             \new Voice {
>               \voiceOne
>               \ManualOneVoiceOneMusic
>             }
>             \new Voice {
>               \voiceTwo
>               \ManualOneVoiceTwoMusic
>             }
>           >>  % ManualOne Staff コンテキストの終了
>           \new Staff = "ManualTwo" \with {
>             \override VerticalAxisGroup.staff-staff-spacing.stretchability = 5
>           } <<
>             \keyTime
>             \clef "bass"
>             \new Voice {
>               \ManualTwoMusic
>             }
>           >>  % ManualTwo Staff コンテキストの終了
>         >>  % PianoStaff コンテキストの終了
>         \new Staff = "PedalOrgan" <<
>           \keyTime
>           \clef "bass"
>           \new Voice {
>             \PedalOrganMusic
>           }
>         >>  % PedalOrgan Staff の終了
>       >>
>     }  % Score コンテキストの終了

これでこの構造は完成です。3 つの譜を持つオルガン譜はいずれも同様の構造を持ちますが、ボイスの数はさまざまになるかもしれません。この後に行うべきことは、音楽を付け加え、各パートを一緒にすることです。

>     \header {
>       title = "Jesu, meine Freude"
>       composer = "J S Bach"
>     }
>     keyTime = { \key c \minor \time 4/4 }
>     ManualOneVoiceOneMusic = \relative {
>       g'4 g f ees |
>       d2 c |
>     }
>     ManualOneVoiceTwoMusic = \relative {
>       ees'16 d ees8~ 16 f ees d c8 d~ d c~ |
>       8 c4 b8 c8. g16 c b c d |
>     }
>     ManualTwoMusic = \relative {
>       c'16 b c8~ 16 b c g a8 g~ 16 g aes ees |
>       f16 ees f d g aes g f ees d ees8~ 16 f ees d |
>     }
>     PedalOrganMusic = \relative {
>       r8 c16 d ees d ees8~ 16 a, b g c b c8 |
>       r16 g ees f g f g8 c,2 |
>     }

>     \score {
>       <<  % PianoStaff と Pedal Staff を同時進行させる必要があります
>         \new PianoStaff <<
>           \new Staff = "ManualOne" <<
>             \keyTime  % 調号と拍子記号をセットします
>             \clef "treble"
>             \new Voice {
>               \voiceOne
>               \ManualOneVoiceOneMusic
>             }
>             \new Voice {
>               \voiceTwo
>               \ManualOneVoiceTwoMusic
>             }
>           >>  % ManualOne Staff コンテキストの終了
>           \new Staff = "ManualTwo" \with {
>             \override VerticalAxisGroup.staff-staff-spacing.stretchability = 5
>           } <<
>             \keyTime
>             \clef "bass"
>             \new Voice {
>               \ManualTwoMusic
>             }
>           >>  % ManualTwo Staff コンテキストの終了
>         >>  % PianoStaff コンテキストの終了
>         \new Staff = "PedalOrgan" <<
>           \keyTime
>           \clef "bass"
>           \new Voice {
>             \PedalOrganMusic
>           }
>         >>  % PedalOrgan Staff コンテキストの終了
>       >>
>     }  % Score コンテキストの終了

#### 参照

音楽用語集: system

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