LilyPond 記譜法リファレンス: 2.1.2 歌詞に特有のテクニック

### 2.1.2 歌詞に特有のテクニック

#### 歌詞と変数に取り組む

歌詞を保持する変数を作成することができます。歌詞は歌詞モードで入力する必要があります:

>     musicOne = \relative {
>       c''4 b8. a16 g4. f8 e4 d c2
>     }
>     verseOne = \lyricmode {
>       Joy to the world, the Lord is come.
>     }
>     \score {
>       <<
>         \new Voice = "one" {
>           \time 2/4
>           \musicOne
>         }
>         \new Lyrics \lyricsto "one" {
>           \verseOne
>         }
>       >>
>     }

変数が `\addlyrics` または `\lyricsto` で呼び出される場合、歌詞に演奏時間を付ける必要はありません。

順序が異なったり、もっと複雑だったりする場合、最も良い方法は最初に音楽と歌詞を保持する変数を定義して、 譜と歌詞の階層をセットアップして (歌詞自体は省略します) から、`\context` を用いて歌詞を追加します。この方法は、`\lyricsto` によって参照されるボイスが常に定義済みであることを保証します。例を挙げます:

>     sopranoMusic = \relative { c''4 c c c }
>     contraltoMusic = \relative { a'4 a a a }
>     sopranoWords = \lyricmode { Sop -- ra -- no words }
>     contraltoWords = \lyricmode { Con -- tral -- to words }

>     \score {
>       \new ChoirStaff <<
>         \new Staff {
>           \new Voice = "sopranos" {
>             \sopranoMusic
>           }
>         }
>         \new Lyrics = "sopranos"
>         \new Lyrics = "contraltos"
>         \new Staff {
>           \new Voice = "contraltos" {
>             \contraltoMusic
>           }
>         }
>         \context Lyrics = "sopranos" {
>           \lyricsto "sopranos" {
>             \sopranoWords
>           }
>         }
>         \context Lyrics = "contraltos" {
>           \lyricsto "contraltos" {
>             \contraltoWords
>           }
>         }
>       >>
>     }

#### 参照

記譜法リファレンス: 歌詞の垂直方向の配置

内部リファレンス: LyricCombineMusic, Lyrics

#### 歌詞の垂直方向の配置

音楽の種類によって、歌詞が譜の上、下、あるいは間に配置されることもあります。歌詞を関連する譜の下に配置することが最も簡単で、`Staff` コンテキストの下に `Lyrics` コンテキストを定義するだけで実現できます:

>     \score {
>       <<
>         \new Staff {
>           \new Voice = "melody" {
>             \relative { c''4 c c c }
>           }
>         }
>         \new Lyrics {
>           \lyricsto "melody" {
>             Here are the words
>           }
>         }
>       >>
>     }

歌詞を譜の上に配置する方法は 2 つあります。簡単な (そして好まれる) のは、上記と同じ構文を用いて歌詞の配置を明示的に指定する方法です:

>     \score {
>       <<
>         \new Staff = "staff" {
>           \new Voice = "melody" {
>             \relative { c''4 c c c }
>           }
>         }
>         \new Lyrics \with { alignAboveContext = "staff" } {
>           \lyricsto "melody" {
>             Here are the words
>           }
>         }
>       >>
>     }

代替手段として、2 ステップのプロセスを用いることもできます。最初に、`Staff` コンテキストと `Voice` コンテキストより先に `Lyrics` コンテキストを宣言して (内容は記述しません)、それから参照する `Voice` コンテキストの宣言の後に `\context` を用いて `\lyricsto` コマンドを配置します。以下のようにします:

>     \score {
>       <<
>         \new Lyrics = "lyrics" \with {
>           % 譜の上に配置する歌詞は以下のオーバライドを行う必要があります
>           \override VerticalAxisGroup.staff-affinity = #DOWN
>         }
>         \new Staff {
>           \new Voice = "melody" {
>             \relative { c''4 c c c }
>           }
>         }
>         \context Lyrics = "lyrics" {
>           \lyricsto "melody" {
>             Here are the words
>           }
>         }
>       >>
>     }

別々の譜に配置される 2 つのボイスがある場合、上記の方法のいずれかを用いて歌詞を譜の間に配置することができます。ここでは、2 番目の方法を用いる例を挙げます:

>     \score {
>       \new ChoirStaff <<
>         \new Staff {
>           \new Voice = "sopranos" {
>             \relative { c''4 c c c }
>           }
>         }
>         \new Lyrics = "sopranos"
>         \new Lyrics = "contraltos" \with {
>           % 譜の上に配置する歌詞は以下のオーバライドを行う必要があります
>           % lyrics above a staff should have this override
>           \override VerticalAxisGroup.staff-affinity = #DOWN
>         }
>         \new Staff {
>           \new Voice = "contraltos" {
>             \relative { a'4 a a a }
>           }
>         }
>         \context Lyrics = "sopranos" {
>           \lyricsto "sopranos" {
>             Sop -- ra -- no words
>           }
>         }
>         \context Lyrics = "contraltos" {
>           \lyricsto "contraltos" {
>             Con -- tral -- to words
>           }
>         }
>       >>
>     }

他の歌詞と譜の組み合わせは、上記の例に磨きをかけるか、学習マニュアルの中にあるテンプレート – Vocal ensembles templates を参照してください – を吟味することによって作り出すことができます。

#### Selected Snippets

2.12 の歌詞のスペーシングを新しいバージョンで得る

縦方向のスペーシング エンジンはバージョン 2.14 で変更されました。そのため、歌詞が異なってスペーシングされます。

`Lyric` と `Staff` コンテキストに対して、スペーシング エンジンがバージョン 2.12 と同様に振る舞うようなプロパティをセットすることができます。

>     global = {
>       \key d \major
>       \time 3/4
>     }

>     sopMusic = \relative c' {
>       % VERSE ONE
>       fis4 fis fis | \break
>       fis4. e8 e4
>     }

>     altoMusic = \relative c' {
>       % VERSE ONE
>       d4 d d |
>       d4. b8 b4 |
>     }

>     tenorMusic = \relative c' {
>       a4 a a |
>       b4. g8 g4 |
>     }

>     bassMusic = \relative c {
>       d4 d d |
>       g,4. g8 g4 |
>     }

>     words = \lyricmode {
>       Great is Thy faith -- ful -- ness,
>     }

>     \score {
>       \new ChoirStaff <<
>         \new Lyrics = sopranos
>         \new Staff = women <<
>           \new Voice = "sopranos" {
>             \voiceOne
>             \global \sopMusic
>           }
>           \new Voice = "altos" {
>             \voiceTwo
>             \global \altoMusic
>           }
>         >>
>         \new Lyrics = "altos"
>         \new Lyrics = "tenors"
>         \new Staff = men <<
>           \clef bass
>           \new Voice = "tenors" {
>             \voiceOne
>             \global \tenorMusic
>           }
>           \new Voice = "basses" {
>             \voiceTwo  \global \bassMusic
>           }
>         >>
>         \new Lyrics = basses
>         \context Lyrics = sopranos \lyricsto sopranos \words
>         \context Lyrics = altos \lyricsto altos \words
>         \context Lyrics = tenors \lyricsto tenors \words
>         \context Lyrics = basses \lyricsto basses \words
>       >>
>       \layout {
>         \context {
>           \Lyrics
>           \override VerticalAxisGroup.staff-affinity = ##f
>           \override VerticalAxisGroup.staff-staff-spacing =
>             #'((basic-distance . 0)
>     	   (minimum-distance . 2)
>     	   (padding . 2))
>         }
>         \context {
>           \Staff
>           \override VerticalAxisGroup.staff-staff-spacing =
>             #'((basic-distance . 0)
>     	   (minimum-distance . 2)
>     	   (padding . 2))
>         }
>       }
>     }

#### 参照

学習マニュアル: Vocal ensembles templates

記譜法リファレンス: コンテキストの配置順序, コンテキストを作成して参照する

#### 歌詞の水平方向の配置

歌詞の間隔を広げるには `LyricSpace` の `minimum-distance` プロパティを設定します。

>     \relative c' {
>       c c c c
>       \override Lyrics.LyricSpace.minimum-distance = #1.0
>       c c c c
>     }
>     \addlyrics {
>       longtext longtext longtext longtext
>       longtext longtext longtext longtext
>     }

この変更を楽譜の全ての歌詞に適用するには、`\layout` ブロックの中でプロパティの設定を行います。

>     \score {
>       \relative {
>       c' c c c
>       c c c c
>       }
>       \addlyrics {
>       longtext longtext longtext longtext
>       longtext longtext longtext longtext
>       }
>       \layout {
>         \context {
>           \Lyrics
>           \override LyricSpace.minimum-distance = #1.0
>         }
>       }
>     }

#### Selected Snippets

歌詞の揃え位置

歌詞の水平方向の揃え位置は、`LyricText` オブジェクトの `self-alignment-X` プロパティをオーバライドすることで設定できます。`-1` が左、`0` が中央、`1` が右になります。`#LEFT`, `#CENTER`, `#RIGHT` を用いることもできます。

>     \layout { ragged-right = ##f }
>     \relative c'' {
>       c1
>       c1
>       c1
>     }
>     \addlyrics {
>       \once \override LyricText.self-alignment-X = #LEFT
>       "This is left-aligned"
>       \once \override LyricText.self-alignment-X = #CENTER
>       "This is centered"
>       \once \override LyricText.self-alignment-X = #1
>       "This is right-aligned"
>     }

#### 既知の問題と警告

テキスト スクリプトと歌詞がマージンの中に収まることを確認するチェックはより多くの計算を必要とします。この機能を無効にすることで、処理をわずかにスピードアップすることができます:

>     \override Score.PaperColumn.keep-inside-line = ##f

歌詞が小節線を避けるようにするには、以下を使います:

>     \layout {
>       \context {
>         \Lyrics
>           \consists "Bar_engraver"
>           \consists "Separating_line_group_engraver"
>           \hide BarLine
>       }
>     }

#### 歌詞と繰り返し

### 1 回の繰り返し

音楽 の繰り返しは別の場所で説明しています – 繰り返し を参照してください。このセクションでは、歌詞を繰り返しのある音楽に追加する方法について説明します。

繰り返しで歌詞の単語が変わらないのであれば、歌詞を音楽と同じ繰り返し構造にすることで、音楽に歌詞を付けることができます。

>     \score {
>       <<
>         \new Staff {
>           \new Voice = "melody" {
>             \relative {
>               a'4 a a a
>               \repeat volta 2 { b4 b b b }
>             }
>           }
>         }
>         \new Lyrics {
>           \lyricsto "melody" {
>             Not re -- peat -- ed.
>             \repeat volta 2 { Re -- peat -- ed twice. }
>           }
>         }
>       >>
>     }

繰り返しが展開された場合、歌詞も展開されます。

>     \score {
>       \unfoldRepeats {
>         <<
>           \new Staff {
>             \new Voice = "melody" {
>               \relative {
>                 a'4 a a a
>                 \repeat volta 2 { b4 b b b }
>               }
>             }
>           }
>           \new Lyrics {
>             \lyricsto "melody" {
>               Not re -- peat -- ed.
>               \repeat volta 2 { Re -- peat -- ed twice. }
>             }
>           }
>         >>
>       }
>     }

繰り返しが展開されて、異なる歌詞を持つ場合、単に歌詞の全ての単語を記述します:

>     \score {
>       <<
>         \new Staff {
>           \new Voice = "melody" {
>             \relative {
>               a'4 a a a
>               \repeat unfold 2 { b4 b b b }
>             }
>           }
>         }
>         \new Lyrics {
>           \lyricsto "melody" {
>             Not re -- peat -- ed.
>             The first time words.
>             Sec -- ond time words.
>           }
>         }
>       >>
>     }

繰り返しの歌詞が異なる場合、並列に正しくネストされた別々の `Lyrics` コンテキストに各繰り返しの歌詞を入力する必要があります:

>     \score {
>       <<
>         \new Staff {
>           \new Voice = "melody" {
>             \relative {
>               a'4 a a a
>               \repeat volta 2 { b4 b b b }
>             }
>           }
>         }
>         \new Lyrics \lyricsto "melody" {
>           Not re -- peat -- ed.
>           <<
>     	{ The first time words. }
>     	\new Lyrics {
>     	  \set associatedVoice = "melody"
>     	  Sec -- ond time words.
>     	}
>           >>
>         }
>       >>
>     }

同様の方法でさらに歌詞の行を追加することができます:

>     \score {
>       <<
>         \new Staff {
>           \new Voice = "singleVoice" {
>             \relative {
>     	  a'4 a a a
>     	  \repeat volta 3 { b4 b b b }
>               c4 c c c
>     	}
>           }
>         }
>         \new Lyrics \lyricsto "singleVoice" {
>           Not re -- peat -- ed.
>           <<
>             { The first time words.	}
>     	\new Lyrics {
>     	  \set associatedVoice = "singleVoice"
>     	  Sec -- ond time words.
>     	}
>     	\new Lyrics {
>     	  \set associatedVoice = "singleVoice"
>     	  The third time words.
>     	}
>           >>
>           The end sec -- tion.
>         }
>       >>
>     }

しかしながら、この構造が `ChoirStaff` のような複数の譜を持つコンテキストに埋め込まれた場合、歌詞の 2 番と 3 番は譜の下に表示されます。

歌詞を正しく配置するには `alignBelowContext` を用います:

>     \score {
>       <<
>         \new Staff {
>           \new Voice = "melody" {
>             \relative {
>     	  a'4 a a a
>     	  \repeat volta 3 { b4 b b b }
>               c4 c c c
>     	}
>           }
>         }
>         \new Lyrics = "firstVerse" \lyricsto "melody" {
>           Not re -- peat -- ed.
>           <<
>             { The first time words.	}
>     	\new Lyrics = "secondVerse"
>             \with { alignBelowContext = "firstVerse" } {
>     	  \set associatedVoice = "melody"
>     	  Sec -- ond time words.
>     	}
>     	\new Lyrics = "thirdVerse"
>             \with { alignBelowContext = "secondVerse" } {
>     	  \set associatedVoice = "melody"
>     	  The third time words.
>     	}
>           >>
>           The end sec -- tion.
>         }
>         \new Voice = "harmony" {
>           \relative {
>             f'4 f f f \repeat volta 2 { g8 g g4 g2 } a4 a8. a16 a2
>           }
>         }
>       >>
>     }

### 差し替えのある繰り返し

繰り返し部分の歌詞が同じで、どの `\alternative` ブロックも休符で始まるのでなければ、歌詞と音楽で同じ構造を使うことができます。こうすることで `\unfoldRepeats` は音楽と歌詞の両方を正しく展開できます。

>     \score {
>       <<
>         \new Staff {
>           \time 2/4
>           \new Voice = "melody" {
>             \relative {
>               a'4 a a a
>               \repeat volta 2 { b4 b }
>               \alternative { { b b } { b c } }
>             }
>           }
>         }
>         \new Lyrics {
>           \lyricsto "melody" {
>             Not re -- peat -- ed.
>             \repeat volta 2 { Re -- peat -- }
>             \alternative { { ed twice. } { ed twice. } }
>           }
>         }
>       >>
>     }

しかしながら、繰り返し部分の歌詞が異なるか、 どれかの `\alternative` ブロックが休符で始まる場合、歌詞に繰り返し構造を用いることはできず、歌詞を適用しない差し替え部分の音符をスキップするために手動で `\skip` コマンドを挿入する必要があります。

注意: 音符のスキップにアンダースコア `_` を使わないでください – アンダースコアはメリスマを意味するため、前の音節が左揃えされてしまいます。

Note: `\skip` コマンドの後に数字を記述する必要があります。しかしながら、歌詞は `addlyrics` や `lyricsto` で関連付けた旋律の音符から演奏時間を引き出すため、この数字は無視されます。各 `\skip` は後に続く数字の値に関係なく、任意の音価の音符を 1 つスキップします。

>     \score {
>       <<
>         \new Staff {
>           \time 2/4
>           \new Voice = "melody" {
>             \relative {
>               \repeat volta 2 { b'4 b }
>               \alternative { { b b } { b c } }
>               c4 c
>             }
>           }
>         }
>         \new Lyrics {
>           \lyricsto "melody" {
>             The first time words.
>             \repeat unfold 2 { \skip 1 }
>             End here.
>           }
>         }
>         \new Lyrics {
>           \lyricsto "melody" {
>             Sec -- ond
>             \repeat unfold 2 { \skip 1 }
>             time words.
>           }
>         }
>       >>
>     }

タイが途中で複数の差し替えに分かれる場合、最初の差し替えの音符がタイで結ばれ、2 番目以降の差し替えには `\repeatTie` が使用されます。この構造に歌詞が含まれることにより差し替え部分が長くなると、歌詞を音符に揃えることが困難となり、差し替え部分に含まれるタイの音符が受け入れがたい結果を発生させるかもしれません。

タイは最初の差し替えまで続くメリスマを作り出しますが、2 番目以降の差し替えには作りません。このため、歌詞を正しく揃えるには、差し替え部分でメリスマの自動作成を無効にして、手動でスキップを挿入する必要があります。

>     \score {
>       <<
>         \new Staff {
>           \time 2/4
>           \new Voice = "melody" {
>             \relative {
>               \set melismaBusyProperties = #'()
>               \repeat volta 2 { b'4 b ~}
>               \alternative { { b b } { b \repeatTie c } }
>               \unset melismaBusyProperties
>               c4 c
>             }
>           }
>         }
>         \new Lyrics {
>           \lyricsto "melody" {
>             \repeat volta 2 { Here's a __ }
>             \alternative {
>               { \skip 1 verse }
>               { \skip 1 sec }
>             }
>             ond one.
>           }
>         }
>       >>
>     }

`\repeatTie` を含むセクションの周辺で `\unfoldRepeats` が使われると、両方のタイプのタイが譜刻されるの避けるために `\repeatTie` は削除されます。

繰り返される部分の歌詞が異なる場合、その歌詞の周囲で `\repeat` を使うことはできず、前述のように手動で `\skip` コマンドを挿入する必要があります。

>     \score {
>       <<
>         \new Staff {
>           \time 2/4
>           \new Voice = "melody" {
>             \relative {
>               \repeat volta 2 { b'4 b ~}
>               \alternative { { b b } { b \repeatTie c } }
>               c4 c
>             }
>           }
>         }
>         \new Lyrics {
>           \lyricsto "melody" {
>             Here's a __ verse.
>             \repeat unfold 2 { \skip 1 }
>           }
>         }
>         \new Lyrics {
>           \lyricsto "melody" {
>             Here's one
>             \repeat unfold 2 { \skip 1 }
>             more to sing.
>           }
>         }
>       >>
>     }

繰り返し部分から差し替え部分に延長線やハイフンを描きたいのであれば、それらを手動で挿入する必要があります。差し替え部分から次の部分に延長線やハイフンを描く場合も同様です。

>     \score {
>       <<
>         \new Staff {
>           \time 2/4
>           \new Voice = "melody" {
>             \relative {
>               \repeat volta 2 { b'4 b ~}
>               \alternative { { b b } { b \repeatTie c } }
>               c4 c
>             }
>           }
>         }
>         \new Lyrics {
>           \lyricsto "melody" {
>             Here's a __ verse.
>             \repeat unfold 2 { \skip 1 }
>           }
>         }
>         \new Lyrics {
>           \lyricsto "melody" {
>             Here's "a_"
>             \skip 1
>             "_" sec -- ond one.
>           }
>         }
>       >>
>     }

#### 参照

記譜法リファレンス: コンテキストを残しておく, 繰り返し

#### 歌詞のディヴィージ

ピッチが同じで歌詞とリズムが異なる 2 つのパートがある場合、一時的にメリスマの自動検出を off にして、歌詞の中でのメリスマ指示する手法を用いると適切な場合があります:

>     \score {
>       <<
>         \new Voice = "melody" {
>           \relative c' {
>             \set melismaBusyProperties = #'()
>             \slurDown
>             \slurDashed
>             e4 e8 ( e ) c4 c |
>             \unset melismaBusyProperties
>             c
>           }
>         }
>         \new Lyrics \lyricsto "melody" {
>           They shall not o -- ver -- come
>         }
>         \new Lyrics \lyricsto "melody" {
>           We will _
>         }
>       >>
>     }

2 つのパートの音楽と歌詞の両方が異なる場合、2 つの名前付きボイス コンテキストを作成して、それぞれに歌詞を付属させることで、異なる音楽と歌詞として表示させた方が良いかもしれません:

>     \score {
>       <<
>         \new Voice = "melody" {
>           \relative {
>             <<
>               {
>                 \voiceOne
>                 e'4 e8 e
>               }
>               \new Voice = "splitpart" {
>                 \voiceTwo
>                 c4 c
>               }
>             >>
>             \oneVoice
>             c4 c |
>             c
>           }
>         }
>         \new Lyrics \lyricsto "melody" {
>           They shall not o -- ver -- come
>         }
>         \new Lyrics \lyricsto "splitpart" {
>           We will
>         }
>       >>
>     }

合唱音楽では、一部の小節において声部が分かれることがよくあります。2 つ以上の音楽表記がバックスラッシュ 2 つで分割される `<< {…} \\ {…} >>` 構造は、声部の分割する正しい方法であるように見えます。しかしながらこの構造は、内部にある全ての音楽表記を新しい Voice コンテキストに割り当てるため、元の Voice コンテキストに歌詞を設定しても歌詞は表示されません。これは通常望むものではないでしょう。一時的に多声となる楽節を用いるのが適切です。単一譜の多声 の 一時的に多声となる楽節 (パッセージ) 節を参照してください。

#### 歌詞を共有する多声

2 つのボイスが異なるリズムを持ち、同じ歌詞を共有する場合、片方のボイスに歌詞を合わせるともう片方には合いません。下の例では、歌詞が上のボイスにのみ合わせられているため、2 つ目の延長線が短すぎます:

>     soprano = \relative { b'8( c d c) d2 }
>     alto = \relative { g'2 b8( a g a) }
>     words = \lyricmode { la __ la __ }

>     \new Staff <<
>       \new Voice = "sopranoVoice" { \voiceOne \soprano }
>       \new Voice { \voiceTwo \alto }
>       \new Lyrics \lyricsto "sopranoVoice" \words
>     >>

望んでいた結果を得るには、2 つのボイスを適切に合わせた新たな `NullVoice` コンテキストを作り、歌詞をそれに合わせます。`NullVoice` コンテキストの音符は出力には現れませんが、歌詞を正しく合わせるのに使うことができます:

>     soprano = \relative { b'8( c d c) d2 }
>     alto = \relative { g'2 b8( a g a) }
>     aligner = \relative { b'8( c d c) b( a g a) }
>     words = \lyricmode { la __ la __ }

>     \new Staff <<
>       \new Voice { \voiceOne \soprano }
>       \new Voice { \voiceTwo \alto }
>       \new NullVoice = "aligner" \aligner
>       \new Lyrics \lyricsto "aligner" \words
>     >>

この方法は、単体では歌詞をサポートしていない `\partCombine` 関数にも用いることができます:

>     soprano = \relative { b'8( c d c) d2 }
>     alto = \relative { g'2 b8( a g a) }
>     aligner = \relative { b'8( c d c) b( a g a) }
>     words = \lyricmode { la __ la __ }

>     \new Staff <<
>       \new Voice \partCombine \soprano \alto
>       \new NullVoice = "aligner" \aligner
>       \new Lyrics \lyricsto "aligner" \words
>     >>

#### 既知の問題と警告

`\addlyrics` 関数は `Voice` にのみ動作するため、`NullVoice` と一緒に用いることはできません。

`\partCombine` 関数については、自動パート結合に説明があります。

最後に、この方法はボイスが異なる譜にある場合にも用いることができ、2 つよりも多くのボイスにも適用することができます:

>     soprano = \relative { b'8( c d c) d2 }
>     altoOne = \relative { g'2 b8( a b4) }
>     altoTwo = \relative { d'2 g4( fis8 g) }
>     aligner = \relative { b'8( c d c) d( d d d) }
>     words = \lyricmode { la __ la __ }

>     \new ChoirStaff \with {\accepts NullVoice } <<
>       \new Staff \soprano
>       \new NullVoice = "aligner" \aligner
>       \new Lyrics \lyricsto "aligner" \words
>       \new Staff \partCombine \altoOne \altoTwo
>     >>

#### LilyPond — 記譜法リファレンス v2.22.2 (安定版).

- 2. 専門的な記譜法
- 3. 入出力全般
- 4. スペースの問題
- 5. デフォルトを変更する
- A. 付表
- B. カンニング ペーパー
- C. GNU Free Documentation License
- D. LilyPond コマンド インデックス
- E. LilyPond インデックス