@c -*- coding: utf-8; mode: texinfo; documentlanguage: ja -*-

@ignore
    Translation of GIT committish: 499a511d4166feaada31114e097f86b5e0c56421

    When revising a translation, copy the HEAD committish of the
    version that you are working on.  See TRANSLATION for details.
@end ignore

@c \version "2.12.0"

@c Translators: Yoshiki Sawada
@c Translation status: post-GDP

@node 基礎となるコンセプト
@chapter 基礎となるコンセプト
@translationof Fundamental concepts
@c 基礎となるコンセプト

チュートリアルではシンプルなテキスト ファイルから美しい楽譜を譜刻する方法を@c
見てきました。@c
このセクションでは、同じように美しいがより複雑な楽譜を@c
作り出すのに必要とされるコンセプトとテクニックについて紹介します。

@menu
* LilyPond 入力ファイルの仕組み::
* 音楽を保持するボイス::
* コンテキストとエングラーバ::
* テンプレートを拡張する::
@end menu

@node LilyPond 入力ファイルの仕組み
@section LilyPond 入力ファイルの仕組み
@translationof How LilyPond input files work
@c LilyPond 入力ファイルの仕組み

LilyPond の入力フォーマットは非常に自由な形式であり、@c
経験豊富なユーザにとってはファイルを構築する際の自由度が高いです。@c
しかしながら、この自由度が新しいユーザにとっては混乱の元になります。@c
このセクションではこの入力ファイルの構造についていくつか説明します。@c
しかしながら、簡潔さを保つためにいくつかの詳細については@c
目をつぶるかもしれません。@c
入力フォーマットについての完全な記述は、@ruser{File structure} を@c
参照してください。

@menu
* LilyPond ファイル構造の紹介::
* Score は (単一の) 複合的な音楽表記::
* 音楽表記をネストする::
* ネストされない括弧とタイ::
@end menu


@node LilyPond ファイル構造の紹介
@subsection LilyPond ファイル構造の紹介
@translationof Introduction to the LilyPond file structure

@cindex input format (入力フォーマット)
@cindex file structure (ファイル構造)

LilyPond 入力ファイルの基本例は以下のようなものです:

@example
\version @w{"@version{}"}
\header @{ @}
\score @{
  @var{...compound music expression...}  % all the music goes here!
  @var{...複合音楽表記...}                  % すべての音楽がここに入ります！
  \layout @{ @}
  \midi @{ @}
@}
@end example

@noindent
基本パターンは本当にさまざまです。@c
しかしながら、この例は開始点として役に立ちます。

@funindex \book
@funindex book
@funindex \score
@funindex score
@cindex book
@cindex score

これまで、あなたが見てきた例では @code{\score @{@}} コマンドを@c
使用していませんでした。@c
その理由は、あなたが LilyPond に与えたのが簡単な入力であった場合、LilyPond 
が自動的に追加のコマンドを付け加えるからです。@c
LilyPond は以下のような入力:

@example
\relative c'' @{
  c4 a d c
@}
@end example

@noindent
を以下を簡略表記したものとして扱います:

@example
\book @{
  \score @{
    \new Staff @{
      \new Voice @{
        \relative c'' @{
          c4 a b c
        @}
      @}
    @}
    \layout @{ @}
  @}
@}
@end example

言い換えると、入力が保持しているのが単一の音楽表記である場合、LilyPond は@c
まるでその音楽表記が上で示されたコマンドで包まれているかのように解釈します。

@cindex implicit contexts (暗黙のコンテキスト)
@cindex contexts, implicit (暗黙のコンテキスト)

@strong{一言警告！}  LilyPond ドキュメントの中にある多くの例では、
@code{\new Staff} と @code{\new Voice} コマンドは暗黙的に作成されるために@c
省略されています。@c
簡単な例ではそれでうまくいきますが、より複雑な例の場合 -- 特に追加の@c
コマンドが使用される場合 -- コンテキストの暗黙的な作成は予想外の結果となる@c
可能性があります。@c
多分、予期しない余分な譜が作成されるでしょう。@c
コンテキストを明示的に作成する方法は @ref{コンテキストとエングラーバ} で@c
説明されています。

@warning{数行以上の音楽を入力する場合、常に譜とボイスを明示的に@c
作成したほうが賢明です。}

今度は最初の例に戻って、@code{\score} コマンドについて検証します。@c
他のことはデフォルトのままにしておきます。

@code{\score} ブロックは常にただ 1 つの音楽表記を@c
保持していなければなりません。@c
そして、その音楽表記は @code{\score} コマンドのすぐ後に@c
置かれなければなりません。@c
音楽表記は単一の音符である場合もありますし、以下のような@c
巨大な複合表記である場合もあるということを覚えておいてください:

@example
@{
  \new StaffGroup <<
    @var{...insert the whole score of a Wagner opera in here...}
    @var{...ワーグナーのオペラの楽譜全体がここに入ります...}
  >>
@}
@end example

@noindent
すべては @code{@{ ... @}} の内部にあるため、それは 1 つの音楽表記であると@c
カウントされます。

以前見てきたように、@code{\score} ブロックは他のものを含む可能性もあります。@c
例えば以下のように:

@example
\score @{
  @{ c'4 a b c' @}
  \header @{ @}
  \layout @{ @}
  \midi @{ @}
@}
@end example

@funindex \header
@funindex header
@funindex \layout
@funindex layout
@funindex \midi
@funindex midi
@cindex header (ヘッダ)
@cindex layout (レイアウト)
@cindex midi

@noindent
これら 3 つのコマンド -- @code{\header}, @code{\layout}, @code{\midi} -- は@c
特別なものであるということに注意してください: 
バックスラッシュ (@code{@bs{}}) で始まる他の多くのコマンドとは異なり、@c
これらは音楽表記@emph{ではなく}、何らかの音楽表記の一部でもありません。@c
そのため、これらは @code{\score} ブロックの内部に置かれるかもしれませんし、@c
外部に置かれるかもしれません。@c
実際、これらのコマンドは一般的に @code{\score} ブロックの外側に置かれます -- 
例えば、このセクションの最初の例のように @code{\header} は@c
しばしば @code{\score} コマンドの上に置かれます。

以前は見なかった他の 2 つのコマンドは @code{\layout @{ @}} と 
@code{\midi @{ @}} です。@c
それらが上記のように記述された場合、LilyPond はそれぞれ譜刻された出力と 
MIDI 出力を作り出します。@c
それらは記譜法リファレンスの @ruser{Score layout} と 
@ruser{Creating MIDI files} で完全に記述されています。

@cindex scores, multiple (複数の Score)
@cindex book block, implicit (暗黙の book ブロック)
@cindex implicit book block (暗黙の book ブロック)
@funindex \book
@funindex book

あなたは複数の @code{\score} ブロックを記述するかもしれません。@c
それらはそれぞれ別々の楽譜として扱われますが、それらは結合されて@c
単一の出力ファイルに収められます。@c
@code{\book} コマンドは必要ありません -- このコマンドは暗黙的に 1 つ@c
作成されます。@c
しかしながら、あなたが 1 つの @code{.ly} ファイルから別々に分かれた@c
出力ファイルを作成しようとするのなら、それぞれのセクションを@c
異なる出力ファイルに分けるために @code{\book} コマンドが使用されます: 
各 @code{\book} ブロックは別々の出力ファイルを作り出します。

要約:

各 @code{\book} ブロックは別々の出力ファイル (つまり PDF ファイル) を@c
作成します。@c
あなたが明示的に @code{\book} コマンドを記述しなかった場合、L@c
ilyPond は暗黙的に入力コードを @code{\book} ブロックで包み込みます。

各 @code{\score} ブロックは @code{\book} ブロック内部で@c
別々の音楽表記のチャンク (塊) となります。

@cindex layout block, effect of location (レイアウト ブロックの配置場所による影響)

各 @code{\layout} ブロックはそのブロックを含んでいる @code{\score} ブロックや 
@code{\book} ブロックに影響を与えます -- 
つまり、ある @code{\score} ブロックの内部にある @code{\layout} ブロックは@c
その @code{\score} ブロックにだけ影響を与え、@code{\score} ブロックの@c
外部にある (それゆえ、明示的あるいは暗黙的に @code{\book} ブロックの中に@c
ある) @code{\layout} ブロックはその @code{\book} ブロックの@c
中にあるすべての @code{\score} に影響を与えます。

詳細は、@ruser{Multiple scores in a book} を参照してください。

@cindex variables (変数)

もう一つの重要な簡略表記は変数を定義することです。@c
すべてのテンプレートがこれを使っています:

@example
melody = \relative c' @{
  c4 a b c
@}

\score @{
  \melody
@}
@end example

LilyPond がこのファイルを見ると、@code{melody} の値 (イコール記号の@c
後にあるすべて) を記憶し、@code{\melody} と記述された箇所すべてに@c
その値を挿入します。@c
変数の名前について特別なことは何もありません -- 変数名は @code{melody}, 
@code{global}, @code{TimeKey}, @code{pianorighthand}, @code{foofoobarbaz} など@c
となります。@c
詳細は、@ref{変数と関数を用いて入力の手間を省く} を参照してください。@c
変数名はアルファベットだけで構成されていて、LilyPond コマンド名と@c
異なっている限りは、ほぼどんな名前でも使用できるということを@c
覚えておいてください。@c
変数名の厳密な制限については、@ruser{File structure} で詳述されています。


@seealso
入力フォーマットの完全な定義は、@ruser{File structure} を参照してください。


@node Score は (単一の) 複合的な音楽表記
@subsection Score は (単一の) 複合的な音楽表記
@translationof Score is a (single) compound musical expression

@funindex \score
@funindex score
@cindex score
@cindex contents of a score block (score ブロックの内容)
@cindex score block, contents of (score ブロックの内容)
@cindex compound music expression (複合音楽表記)
@cindex music expression, compound (複合音楽表記)

前のセクション -- @ref{LilyPond ファイル構造の紹介} -- で 
LilyPond 入力ファイルの一般的な構造について見てきました。@c
しかしながら、我々は最も重要な部分を飛ばしてきたようです: 
どうやって @code{\score} の後に記述するものを見つけ出すのでしょうか？

我々はそのことを完全には飛ばしてきませんでした。@c
この大きな謎は簡単なことであり、謎でもなんでも@emph{ないのです}。@c
以下の行がこの謎についてすべてを説明しています:

@quotation
@emph{@code{\score} ブロックは 1 つの複合音楽表記で始まらなくてはなりません。}
@end quotation

@noindent
音楽表記と複合音楽表記が意味しているものを理解するには、チュートリアルの 
@ref{音楽表記についての説明} を読み返すと役に立つかもしれません。@c
そこでは、小さな音楽表記 -- 音符から始めて、それから和音など -- から@c
大きな音楽表記を構築する方法を説明しています。@c
今度は、大きな音楽表記からはじめて、その複雑さを減らしていきます。


@example
\score @{
  @{ % this brace begins the overall compound music expression
    % この波括弧は複合音楽表記全体の開始点です
    \new StaffGroup <<
      @var{...insert the whole score of a Wagner opera in here...}
      @var{...ワーグナーのオペラの楽譜全体がここに入ります...}
    >>
  @} % this brace ends the overall compound music expression
    % この波括弧は複合音楽表記全体の終了点です
  \layout @{ @}
@}
@end example

ワーグナーのオペラの長さはこのマニュアルの軽く 2 倍はあります。@c
そのため、歌手とピアノだけを加えることにします。@c
このアンサンブルでは複数の譜をまとめて左端に波括弧を付ける 
@code{StaffGroup} は必要ありません。@c
そのため、それを削除します。@c
しかしながら、歌手とピアノが@emph{必要}です。

@example
\score @{
  <<
    \new Staff = "singer" <<
    >>
    \new PianoStaff = "piano" <<
    >>
  >>
  \layout @{ @}
@}
@end example

歌手とピアノが同時進行であることを示すために @code{@{ ... @}} の代わりに 
@code{<< ... >>} を使用するということを覚えておいてください。@c
我々はボーカル パートとピアノパートが同時進行であるということを明確に@c
示したいのであり、どちらかがもう一方の後に演奏されるのではないのです！@c
歌手の譜表は一続きの音楽表記を 1 つだけ保持するため、歌手の譜表に対して 
<< ... >> は必ずしも必要ありません。@c
しかしながら、譜表の中の音楽が 2 つの同時進行の音楽表記 -- つまり、@c
2 つの同時進行のボイスであるとか、歌詞付きの歌 -- である場合、@c
波括弧の代わりに @code{<< ... >>} を使う必要があります。@c
後で実際の音楽を加えてみますが、ここではダミーの音符と歌詞を入力してみます。

@lilypond[verbatim,quote,ragged-right]
\score {
  <<
    \new Staff = "singer" <<
      \new Voice = "vocal" { c'1 }
      \addlyrics { And }
    >>
    \new PianoStaff = "piano" <<
      \new Staff = "upper" { c'1 }
      \new Staff = "lower" { c'1 }
    >>
  >>
  \layout { }
}
@end lilypond

更に詳細を加えていきます。@c
歌手の譜表は @code{Voice} (LilyPond では、この用語は音符のセットを@c
参照するものであり、必ずしもボーカルの音符であるわけではありません
-- 例えば、一般にバイオリンは 1 つのボイスを演奏します) と歌詞を保持します。@c
さらに、ピアノの譜表は上部譜表 (右手) と下部譜表 (左手) を保持します。

この段階で、音符の入力を開始することができます。@c
@code{\new Voice = "vocal"} の後の波括弧の中に、以下を書き加えることができます:

@example
\relative c'' @{
  r4 d8\noBeam g, c4 r
@}
@end example

しかしながら、そのようにすると、@code{\score} セクションは非常に長くなり、@c
何が起こるのか理解しにくくなります。@c
そのため、直接音符を付け加える代わりに変数を使用しましょう。@c
前のセクションで変数についての紹介を行いました。@c
覚えていますよね？@c
では、いくつかの音符を加えて実際の楽譜の一部を作成してみましょう:

@lilypond[verbatim,quote,ragged-right]
melody = \relative c'' { r4 d8\noBeam g, c4 r }
text   = \lyricmode { And God said, }
upper  = \relative c'' { <g d g,>2~ <g d g,> }
lower  = \relative c { b2 e2 }

\score {
  <<
    \new Staff = "singer" <<
      \new Voice = "vocal" { \melody }
      \addlyrics { \text }
    >>
    \new PianoStaff = "piano" <<
      \new Staff = "upper" { \upper }
      \new Staff = "lower" {
        \clef "bass"
        \lower
      }
    >>
  >>
  \layout { }
}
@end lilypond

音符 -- これは @code{\relative} の中で導入されたり、音楽表記の中に@c
直接含まれています -- と歌詞 -- これは @code{\lyricmode} で導入されています -- 
の違いに気をつけてください。@c
前者は LilyPond に後に続く内容を音楽として解釈するように指示し、@c
後者はテキストとして解釈するように指示します。

@code{\score} セクションを書いている (あるいは読んでいる) とき、ゆっくりと@c
注意深く進めてください。@c
外側から始めて、それから内部の細かな部分に取り組んでください。@c
さらに、きちんとインデントを入れると非常に役に立ちます － これは、@c
同じレベルにある各要素はテキスト エディタの中で同じ水平位置から始まる@c
ということを保証します。


@seealso
記譜法リファレンス: @ruser{Structure of a score}


@node 音楽表記をネストする
@subsection 音楽表記をネストする
@translationof Nesting music expressions

@cindex staves, temporary (一時的な譜)
@cindex temporary staves (一時的な譜)
@cindex ossias (オッシア)

すべての譜をファイルの始めに宣言することは必須ではありません。@c
譜はどこででも臨時に導入される可能性があります。@c
これはオッシアを作成する際に特に有用です -- @rglos{ossia} を参照してください。@c
ここで、3 つの音符に対して臨時に新しい譜表を導入する方法を示す@c
ちょっとした例を挙げます:

@lilypond[verbatim,quote,ragged-right]
\new Staff {
  \relative g' {
    r4 g8 g c4 c8 d |
    e4 r8
    <<
      { f c c }
      \new Staff {
        f8 f c
      }
    >>
    r4 |
  }
}
@end lilypond

@noindent
音部記号のサイズは音部変更後に譜刻される音部記号のサイズ -- 
行の開始点での音部記号よりも少し小さい -- と同じであるということに@c
注意してください。@c
これは行の途中で譜刻される音部記号全般に言えることです。

@cindex staff, positioning (譜表の配置)

オッシアは以下のように譜表の上に置かれるかもしれません:

@lilypond[verbatim,quote,ragged-right]
\new Staff = "main" {
  \relative g' {
    r4 g8 g c4 c8 d |
    e4 r8
    <<
      { f c c }
      \new Staff \with {
        alignAboveContext = #"main" }
      { f8 f c }
    >>
    r4 |
  }
}
@end lilypond

この例は後で説明される @code{\with} を使用しています。@c
このコマンドは単一の譜表のデフォルトの振る舞いを変更することを意味します。@c
ここでは、このコマンドは新しい譜表をデフォルトの位置 (@qq{main} と@c
呼ばれている譜表の下) ではなく、上に置くべきであると言っています。


@seealso
オッシアはしばしば音部記号や拍子記号無しで描かれ、通常は小さなフォントで@c
描かれます。@c
これらはまだ紹介されていない追加のコマンドを必要とします。@c
@ref{オブジェクトのサイズ} と @ruser{Ossia staves} を参照してください。


@node ネストされない括弧とタイ
@subsection ネストされない括弧とタイ
@translationof On the un-nestedness of brackets and ties

@cindex brackets, nesting (括弧をネストする)
@cindex bracket types (括弧のタイプ)
@cindex brackets, enclosing vs. marking (囲みの括弧 vs. マークの括弧)

これまでに LilyPond への入力ファイルを書く際に使用する括弧には@c
いくつかの種類があるということを見てきました。@c
これらは異なる規則 -- 最初は混乱を引き起こす可能性があります -- に従います。@c
規則についての説明を行う前に、括弧の種類を再確認してみましょう。

@c attempt to force this onto a new page
@need 50
@multitable @columnfractions .3 .7
@headitem 括弧のタイプ
  @tab 機能
@item @code{@{ .. @}}
  @tab 一続きの音楽を囲みます
@item @code{< .. >}
  @tab 和音となる音符を囲みます
@item @code{<< .. >>}
  @tab 同時進行する音楽表記を囲みます
@item @code{( .. )}
  @tab スラーの開始点と終了点を意味します
@item @code{\( .. \)}
  @tab フレージング スラーの開始点と終了点を意味します
@item @code{[ .. ]}
  @tab 手動連桁の開始点と終了点を意味します
@end multitable

こららに対して、音符の間や音符をまたがって線を生成する他の構文を@c
付け加えるべきです: タイ (チルド @code{~} によって記述されます)、@c
連符 (@code{\times x/y @{..@}} として記述されます)、@c
グレイス ノート (@code{\grace@{..@}} として記述されます) です。

LilyPond 以外では、種類の異なる括弧が適切にネストされること -- 
@code{[ @{ ( .. ) @} ]} のように -- が一般的な使い方であり、@c
括弧の終わりの順序は正確に括弧の始まりの順序と逆になります。@c
このことは上記の表で @q{囲みます} という言葉で記述されている 
3 種類の括弧に対しては@strong{必須}となります -- それらは適切に@c
ネストされなければなりません。@c
しかしながら、残りの括弧 -- 上記の表で @q{意味します} という言葉で@c
記述されいるものと、タイ、連符で使用されるもの -- はいかなる括弧とも@c
ネストされる必要は@strong{ありません}。@c
実際、これらは何かを囲むという意味では括弧ではありません -- 
それらは単に何かが始まる場所、終わる場所を示すためのマークです。

そのため、例えばフレージング スラーは手動で挿入される連桁の前に開始して、@c
その手動連桁の前に終わる可能性もあります -- たぶん音楽的では@c
ないかもしれませんが、可能性はあります:

@lilypond[quote,verbatim,fragment,ragged-right,relative=2]
 { g8\( a b[ c b\) a] }
@end lilypond

一般に、種類の異なる括弧と連符、タイ、装飾小音符に適用される括弧は@c
自由に混ぜ合わせられるかもしれません。@c
以下の例では、連桁は連符の中にまで伸びていて (行 1)、スラーは連符の中にまで@c
伸びていて (行 2)、連桁とスラーが連符の中にまで伸びていて (行 3)、@c
タイが 2 つの連符にまたがっていて、さらにフレージング スラーが連符の外にまで@c
伸びています (行 3 と 4)。

@lilypond[quote,verbatim,fragment,ragged-right]
{
  r16[ g16 \times 2/3 {r16 e'8] }
  g16( a \times 2/3 {b d) e' }
  g8[( a \times 2/3 {b d') e'~]}
  \times 4/5 {e'32\( a b d' e'} a'4.\)
}
@end lilypond


@node 音楽を保持するボイス
@section 音楽を保持するボイス
@translationof Voices contain music

歌手は歌うボイスを必要とし、それゆえ LilyPond も歌う (演奏する) ボイスを@c
必要とします。@c
楽譜の中にあるすべての楽器に対する実際の音楽はボイスの中に保持されます 
-- このことは LilyPond すべてのコンセプトの中での最も基礎的なことです。

@menu
* 私はボイスを聴いている::
* ボイスの明示的なインスタンス化::
* ボイスとボーカル::
@end menu


@node 私はボイスを聴いている
@subsection 私はボイスを聴いている
@translationof I'm hearing Voices

@cindex polyphony (多声)
@cindex layers (レイヤ)
@cindex multiple voices (複数のボイス)
@cindex voices, multiple (複数のボイス)
@cindex Voice context (Voice コンテキスト)
@cindex context, Voice (Voice コンテキスト)
@cindex simultaneous music (同時進行する音楽)
@cindex music, simultaneous (同時進行する音楽)
@cindex concurrent music (並列な音楽)
@cindex music, concurrent (並列な音楽)
@cindex voices vs. chords (ボイス vs. 和音)
@cindex chords vs. voices (和音 vs. ボイス)

LilyPond の楽譜の中で最も低レベルで、最も基礎的であり、最も内部にあるレイヤは 
@q{ボイス コンテキスト} または縮めて単に @q{ボイス} と呼ばれます。@c
ボイスはときどき他の記譜法パッケージの中で @q{レイヤ} と呼ばれます。

実際、ボイス レイヤまたはコンテキストは音楽を保持することができる@c
唯一のものです。@c
ボイス コンテキストが明示的に宣言されていない場合、この章の始めで@c
見てきたようにボイス コンテキストが 1 つ自動的に生成されます。@c
オーボエなどといった楽器は同時に 1 つの音符だけを演奏できます。@c
そのような楽器のために書かれた音楽は単声であり、ボイスを 1 つだけを@c
必要とします。@c
ピアノのように同時に複数の音符を演奏することができる楽器はしばしば、@c
それらが演奏することのできる同時進行の異なる音符やリズムを@c
エンコードするために、複数のボイスを必要とします。

もちろん、単一のボイスは和音の中で多くの音符を保持することができます。@c
それでは、複数のボイスが実際に必要とされるのはどんな場合なのでしょうか？@c
まずは、4 つの和音を持つ以下の例を見てください:

@lilypond[quote,verbatim,fragment,ragged-right,relative=1]
\key g \major
<d g>4 <d fis> <d a'> <d g>
@end lilypond

この例は単一の山括弧からなる和音記号@code{< ... >} を使って@c
表記することができ、必要とされるボイスは 1 つだけです。@c
しかしながら、F シャープが A に移行する際に、F シャープは実際には 
8 分音符であり、そのあとに 8 分音符の G が続くとしたらどうでしょうか？@c
そのような場合、同時に開始されるが演奏時間が異なる 2 つの音符を@c
持つことになります: 4 分音符の D と 8 分音符の F シャープです。@c
これらの音符をどのように記述すればよいのでしょうか？@c
これらの音符は和音として記述することはできません。@c
なぜなら、和音の中の音符はすべて同じ演奏時間でなければならないからです。@c
そして、それらの音符は同時に開始しなければならないので、2 つのシーケンシャルな 
(連続した) 音符として記述することもできません。@c
この場合は 2 つのボイスが必要となります。

上記のことが LilyPond 入力構文でどのように達成されるのかを見てみましょう。

@funindex << \\ >>
@funindex \\

1 つの譜表に複数のボイスがある音楽断片を入力する最も簡単な方法は、@c
各ボイスをシーケンスに (続けて) 入力し (各ボイスを @code{@{...@}} の中に@c
入れます)、それらのボイスを @code{<<...>>} を使って
同時進行するよう組み合わせます。@c
さらに、各断片は、それぞれが別の断片であることを示すために、@c
ダブル バックスラッシュ @code{\\} で区切られなければなりません。@c
ダブル バックスラッシュが無ければ、すべての音符は単一のボイスの中に挿入され、@c
通常はエラーとなります。@c
このテクニックは、大部分が単声であり、時々短い部分で多声になる楽曲に@c
特に適しています。

以下では、上記の例の和音を 2 つのボイスに分け、経過音とスラーを付け加えています:

@lilypond[quote,verbatim,fragment,ragged-right,relative=2]
\key g \major
%    Voice "1"                  Voice "2"
<< { g4 fis8( g) a4 g }    \\ { d4 d d d }  >> |
@end lilypond

この例では 2 番目のボイスの符幹が下向きになっていることに気づいてください。

今度はもう 1 つ簡単な例を挙げてみます:


@lilypond[quote,verbatim,fragment,ragged-right,relative=2]
\key d \minor
%    Voice "1"             Voice "2"
<< { r4 g g4. a8 }    \\ { d,2 d4 g }       >> |
<< { bes4 bes c bes } \\ { g4 g g8( a) g4 } >> |
<< { a2. r4 }         \\ { fis2. s4 }       >> |
@end lilypond

各小節で別々に @code{<< \\ >>} 構造を使用する必要はありません。@c
各小節に音符が少ししかないような音楽の場合、このレイアウトはコードの@c
可読性を良くするのに役立ちます。@c
しかしながら、各小節に多くの音符がある場合、以下のように各ボイスを@c
分離した方が良いかもしれません:

@lilypond[quote,verbatim,fragment,ragged-right,relative=2]
\key d \minor
<< {
  % Voice "1"
  r4 g g4. a8 |
  bes4 bes c bes |
  a2. r4 |
} \\ {
  % Voice "2"
  d,2 d4 g |
  g4 g g8( a) g4 |
  fis2. s4 |
} >>
@end lilypond


@cindex voices, naming (ボイスに名前を付ける)
@cindex voices crossing brackets (括弧をまたがるボイス)
@cindex slurs crossing brackets (括弧をまたがるスラー)
@cindex ties crossing brackest (括弧をまたがるタイ)

この例にあるボイスは 2 つだけです。@c
しかしながら、これと同じ構成にもっと多くのバック スラッシュを@c
付け加えることによって、3 つかそれ以上のボイスを@c
持たせることになるかもしれません。

ボイス コンテキストは @code{"1"}, @code{"2"} などの名前を持ちます。@c
各コンテキストの中では、スラー、符幹、タイ、強弱記号などの@c
垂直方向の向きは適切にセットされます。

@lilypond[quote,verbatim,fragment]
\new Staff \relative c' {
  % Main voice
  c16 d e f
  %    Voice "1"     Voice "2"                 Voice "3"
  << { g4 f e } \\ { r8 e4 d c8 ~ } >> |
  << { d2 e2 }  \\ { c8 b16 a b8 g ~ g2 } \\ { s4 b4 c2 } >> |
}
@end lilypond

これらのボイスはすべてメインのボイスからは分かれています。@c
メインのボイスの音符は@code{<< .. >>} 構造の外にあるからです。@c
この @code{<< .. >>} 構造を同時進行構造と呼ぶことにしましょう。@c
通常、スラーとタイは同じボイス内にある音符だけをつなぎます。@c
そのため、スラーとタイは同時進行構造を出たり入ったりすることはありません。@c
反対に、同じ譜表上にある個々の同時進行構造で、平行の位置にあるボイスは@c
同じボイスになります。@c
さらに、その他のボイス関連プロパティは同時進行構造をまたがって持ち越されます。@c
ここで、上記と同じ例で各ボイスに対して異なる色と符頭を割り当ててみます。@c
あるボイスでの変更は他のボイスに影響を与えませんが、その後に続く同じボイス 
(訳者: 平行位置にあるボイス) でその変更が維持されることに注意してください。@c
さらに、タイでつながれた音符は、同じボイスとなる 2 つの同時進行構造に@c
またがって分かれるかもしれないということに注意してください。

@lilypond[quote,verbatim]
\new Staff \relative c' {
  % Main voice
  c16 d e f
  << % Bar 1
    {
      \voiceOneStyle
      g4 f e
    }
  \\
    {
      \voiceTwoStyle
      r8 e4 d c8 ~
    }
  >>
  << % Bar 2
     % Voice 1 continues
    { d2 e2 }
  \\
     % Voice 2 continues
    { c8 b16 a b8 g ~ g2 }
  \\
    {
      \voiceThreeStyle
      s4 b4 c2
    }
  >>
}
@end lilypond

@funindex \voiceOneStyle
@funindex \voiceTwoStyle
@funindex \voiceThreeStyle
@funindex \voiceFourStyle
@funindex \voiceNeutralStyle

コマンド @code{\voiceXXXStyle} は主にこのマニュアルのような教育目的の@c
ドキュメントで使用することを意図したものです。@c
このコマンドは、各ボイスが容易に見分けられるように、符頭、符幹、連桁の色、@c
それに符頭のスタイルを変更します。@c
ボイス 1 は赤でダイアモンドの符頭を持つようにセットされ、@c
ボイス 2 は青で三角形の符頭を、ボイス 3 は緑で×付きの円を、@c
ボイス 4 (ここでは使用されていません) はマゼンダの×の符頭を持つように@c
セットされます。@c
@code{\voiceNeutralStyle} (これもここでは使用されていません) は@c
符頭のスタイルをデフォルトに戻します。@c
後ほど、ユーザがこのようなコマンドを作成するための方法を見ていきます。@c
@ref{オブジェクトの可視性と色} と @ref{調整のために変数を使用する} 
を参照してください。

@cindex polyphony and relative note entry (多声と相対音符入力)
@cindex relative note entry and polyphony (相対音符入力と多声)

多声部は @code{\relative @{ @}} ブロック内の音符の相対関係を変えません。@c
各音符は直前の音符あるいは直前の和音の最初の音符との相対関係で計算されます。@c
そのため、以下の例では

@example
\relative c' @{ noteA << < noteB noteC > \\ noteD >> noteE @}
@end example

@noindent
@code{noteB} は @code{noteA} との相対関係で決まり                         @*
@code{noteC} は @code{noteA} ではなく @code{noteB} との相対関係で決まり  @*
@code{noteD} は @code{noteA} や @code{noteC} ではなく
@code{noteC} との相対関係で決まり                                           @*
@code{noteE} は @code{noteA} ではなく @code{noteD} との相対関係で決まります。

各ボイスの中にある音符の音程がボイスごとに大きく離れている場合、各ボイスの始めに 
@code{\relative} コマンドを置くと明瞭になるかもしれません:

@example
\relative c' @{ noteA ... @}
<<
  \relative c'' @{ < noteB noteC > ... @}
@bs{}@bs{}
  \relative g' @{ noteD ... @}
>>
\relative c' @{ noteE ... @}
@end example

最後に、もっと複雑な楽曲の中にあるボイスを分析してみましょう。@c
以下は、ショパンの Deux Nocturnes, Op 32 の 2 番の最初の 2 小節です。@c
この例は、記譜を行うためのテクニックをいくつか示すために、本章の後の方と@c
次の章で使用されます。@c
ですから、今はコードの中にある意味不明に見えるものは無視して、@c
音楽とボイスだけに注目してください -- 込み入った内容は後ほど説明します。

@c The following should appear as music without code
@lilypond[quote,ragged-right]
\new Staff \relative c'' {
  \key aes \major
  << % Voice one
    { c2 aes4. bes8 }
  \\ % Voice two
    { aes2 f4 fes }
  \\ % No voice three
  \\ % Voice four
    {
      % Ignore these for now - they are explained in Ch 4
      \once \override NoteColumn #'force-hshift = #0
      <ees c>2
      \once \override NoteColumn #'force-hshift = #0.5
      des2
    }
  >> |
  <c ees aes c>1 |
}
@end lilypond

符幹の向きはしばしば 2 つの同時進行する旋律ラインのつながりを示すために@c
使用されます。@c
ここでは、一番上の音符の符幹はすべて上向きであり、下の方にある音符の符幹は@c
すべて下向きです。@c
これは、複数のボイスが必要とされているということを示す最初の兆候です。

しかしながら、複数のボイスが実際に必要とされるのは、同時に始まる音符が@c
異なる演奏時間を持つ場合です。@c
最初の小節の 3 拍目を見てください。@c
A フラットは付点 4 分音符であり、F は 4 分音符、D フラットは半音符です。@c
これらの音符を和音として記述することはできません。@c
なぜなら、和音の中の音符はすべて同じ演奏時間でなければならないからです。@c
これらの音符をシーケンシャルな (連続する) 音符として記述することもできません。@c
なぜなら、これらの音符は同時に始まらなければならないからです。@c
この箇所では 3 つのボイスが必要となり、以下に示すように一般的には@c
この小節全体を 3 つのボイスで記述します。@c
そこでは、3 つのボイスに対して異なる符頭と色を割り当てています。@c
もう一度繰り返しますが、この例のコードのことは後ほど説明しますので、@c
理解できないことは無視してください。

@c The following should appear as music without code
@c The three voice styles should be defined in -init
@lilypond[quote,ragged-right]
\new Staff \relative c'' {
  \key aes \major
  <<
    { % Voice one
      \voiceOneStyle
      c2 aes4. bes8
    }
  \\  % Voice two
    { \voiceTwoStyle
      aes2 f4 fes
    }
  \\  % No Voice three (we want stems down)
  \\  % Voice four
    { \voiceThreeStyle
      % Ignore these for now - they are explained in Ch 4
      \once \override NoteColumn #'force-hshift = #0
      <ees c>2
      \once \override NoteColumn #'force-hshift = #0.5
      des2
    }
  >> |
  <c ees aes c>1 |
}
@end lilypond


この音楽のコードをゼロから記述してみましょう。@c
これから見ていくように、いくつかの問題に遭遇します。@c
すでに学んだように、最初の小節の音楽を 3 つのボイスに分けて記述するために 
@code{<< \\  >>} 構造を使用します:

@c ignore
@lilypond[quote,verbatim,fragment,ragged-right]
\new Staff \relative c'' {
  \key aes \major
  <<
    { c2 aes4. bes8 } \\ { aes2 f4 fes } \\ { <ees c>2 des2 }
  >>
  <c ees aes c>1
}
@end lilypond

@cindex stem down (下向きの符幹)
@cindex voices and stem directions (ボイスと符幹の向き)
@cindex stem directions and voices (符幹の向きとボイス)
@cindex stem up (上向きの符幹)

符幹の向きは自動的に割り当てられ、奇数番号のボイスが上向きの符幹、@c
偶数番号のボイスが下向きの符幹を持ちます。@c
ボイス 1 と 2 の符幹は正しいのですが、ボイス 3 の符幹はここでは下向きに@c
なるべきです。@c
これは単純にボイス 3 を省略して、その音楽をボイス 4 に記述することによって@c
修正できます:

@lilypond[quote,verbatim,fragment,ragged-right]
\new Staff \relative c'' {
  \key aes \major
  << % Voice one
    { c2 aes4. bes8 }
  \\ % Voice two
    { aes2 f4 fes   }
  \\ % Omit Voice three
  \\ % Voice four
    { <ees c>2 des2 }
  >> |
  <c ees aes c>1 |
}
@end lilypond

@noindent
これにより符幹の向きが修正されました。@c
しかしながら、複数のボイスを持つ場合にしばしば発生する問題に@c
遭遇してしまいました -- 
あるボイスの中にある音符の符幹が他のボイスの中にある符頭と衝突しています。@c
音符をレイアウトするときに、LilyPond は 2 つのボイスの符幹の向きを@c
反対にすることによって 2 つのボイスの音符や和音が@c
同じ垂直方向の音符列に位置することを可能にします。@c
しかしながら、3 番目や 4 番目のボイスは符頭の衝突を避けるために@c
必要があれば移動させられます。@c
これは普通はうまくいきますが、この例では一番下のボイスの音符は@c
デフォルトの状態では明らかにうまくいっていません。@c
LilyPond は音符の水平方向位置を調節するためにいくつかの手段を提供します。@c
我々はまだこの問題を修正するための方法を見ていく準備が整っていないので、@c
この問題は後に残しておくことにします -- 
@ref{表記の重なりを修正する} の @code{force-hshift} プロパティを@c
参照してください。


@seealso
記譜法リファレンス: @ruser{Multiple voices}
@c 複数のボイス


@node ボイスの明示的なインスタンス化
@subsection ボイスの明示的なインスタンス化
@translationof Explicitly instantiating voices

@funindex \voiceOne
@funindex voiceOne
@funindex \voiceTwo
@funindex voiceTwo
@funindex \voiceThree
@funindex voiceThree
@funindex \voiceFour
@funindex voiceFour
@funindex \oneVoice
@funindex oneVoice
@funindex \new Voice
@cindex voice contexts, creating (ボイス コンテキストを作成する)

多声部音楽を作成するためにボイス コンテキストを手動で @code{<< >>} ブロックの@c
中に作成することもできます。@c
符幹、スラーなどの向きを示すために @code{\voiceOne} ... @code{\voiceFour} を@c
使用します。@c
この手法は各ボイスを別々にして、より記述的な名前を与えることを可能にするため、@c
長い楽譜ではわかりやすいものになります。

本質的には、前のセクションで使用した構造 @code{<< \\ >>}:

@example
\new Staff @{
  \relative c' @{
    << @{ e4 f g a @} @bs{}@bs{} @{ c,4 d e f @} >>
  @}
@}
@end example

@noindent
は以下と等価です:

@example
\new Staff <<
  \new Voice = "1" @{ \voiceOne \relative c' @{ e4 f g a @} @}
  \new Voice = "2" @{ \voiceTwo \relative c' @{ c4 d e f @} @}
>>
@end example

上記の両方ともが以下の楽譜を生成します:

@c The following example should not display the code
@lilypond[ragged-right,quote]
\new Staff <<
  \new Voice = "1" { \voiceOne \relative c' { e4 f g a } }
  \new Voice = "2" { \voiceTwo \relative c' { c4 d e f } }
>>
@end lilypond

@cindex voices, reverting to single (単一のボイスに戻す)
@cindex reverting to a single voice (単一のボイスに戻す)

@code{\voiceXXX} コマンドは符幹、スラー、タイ、アーティキュレーション、@c
テキストの注釈、付点音符の付点、運指記号の向きをセットします。@c
@code{\voiceOne} と @code{\voiceThree} はこれらのオブジェクトを上向きにし、@c
一方の @code{\voiceTwo} と @code{\voiceFour} は下向きにします。@c
さらに、符頭の衝突を避ける必要がある場合、これらのコマンドは@c
各ボイスに対して水平方向のシフトを発生させます。@c
コマンド @code{\oneVoice} は設定を単一のボイスの場合の通常値に戻します。

いくつかの簡単な例で、@code{\oneVoice}, @code{\voiceOne}, @code{\voiceTwo} が@c
マークアップ、タイ、スラー、強弱記号に与える影響を見ていきましょう:

@lilypond[quote,ragged-right,verbatim]
\relative c'{
  % Default behavior or behavior after \oneVoice
  c d8 ~ d e4 ( f g a ) b-> c
}
@end lilypond

@lilypond[quote,ragged-right,verbatim]
\relative c'{
  \voiceOne
  c d8 ~ d e4 ( f g a ) b-> c
  \oneVoice
  c, d8 ~ d e4 ( f g a ) b-> c
}
@end lilypond

@lilypond[quote,ragged-right,verbatim]
\relative c'{
  \voiceTwo
  c d8 ~ d e4 ( f g a ) b-> c
  \oneVoice
  c, d8 ~ d e4 ( f g a ) b-> c
}
@end lilypond

今度は、前のセクションの例を使って同じ多声部音楽のパッセージを 
3 つの異なる方法で表記する例を見ていきます。それぞれ異なる状況で利点があります。

1 つはメイン ボイスに属する @code{<< >>} の内部に直接表記を記述する方法です 
(しかしながら、音符は @code{<< \\ >>} 構造の中に置かれては@strong{いません})。@c
これはメイン ボイスの途中で追加のボイスが現れる場合に有用です。@c
ここでは例にさらに調整を加えます。@c
赤のダイアモンド形の音符はメイン メロディが単一のボイス コンテキストに@c
なっていて、その上にフレージング スラーを描くことができるということを@c
示しています。

@lilypond[quote,ragged-right,verbatim]
\new Staff \relative c' {
  \voiceOneStyle
  % The following notes are monophonic
  c16^( d e f
  % Start simultaneous section of three voices
  <<
    % Continue the main voice in parallel
    { g4 f e | d2 e2) }
    % Initiate second voice
    \new Voice {
      % Set stems, etc, down
      \voiceTwo
      r8 e4 d c8 ~ | c8 b16 a b8 g ~ g2
    }
    % Initiate third voice
    \new Voice {
      % Set stems, etc, up
      \voiceThree
      s2. | s4 b4 c2
    }
  >>
}
@end lilypond

@cindex nesting music expressions (音楽表記をネストさせる)
@cindex nesting simultaneous constructs (同時進行構造をネストさせる)
@cindex nesting voices (ボイスをネストさせる)
@cindex voices, temporary (一時的なボイス)
@cindex voices, nesting (ボイスをネストさせる)

多声部構造をより深くネストさせることが可能であり、追加のボイスが@c
短時間のものであるならば、こちらの方がより自然な音楽表記方法で@c
あるかもしれません:

@lilypond[quote,ragged-right,verbatim]
\new Staff \relative c' {
  c16^( d e f
  <<
    { g4 f e | d2 e2) }
    \new Voice {
      \voiceTwo
      r8 e4 d c8 ~ |
      <<
        {c8 b16 a b8 g ~ g2}
        \new Voice {
          \voiceThree
          s4 b4 c2
        }
      >>
    }
  >>
}
@end lilypond

@cindex spacing notes (空白音符)

新しいボイスを一時的にネストさせる手法は音楽のほんの一部だけが多声である場合に@c
有用です。@c
しかしながら、楽譜全体が多声である場合、一貫して複数のボイスを使用した方が@c
わかりやすくなります。@c
ボイスが無音の場所を飛ばすには以下のように空白音符を使用します:

@lilypond[quote,ragged-right,verbatim]
\new Staff \relative c' <<
  % Initiate first voice
  \new Voice {
    \voiceOne
    c16^( d e f g4 f e | d2 e2) |
  }
  % Initiate second voice
  \new Voice {
    % Set stems, etc, down
    \voiceTwo
    s4 r8 e4 d c8 ~ | c8 b16 a b8 g ~ g2 |
  }
  % Initiate third voice
  \new Voice {
    % Set stems, etc, up
    \voiceThree
    s1 | s4 b4 c2 |
  }
>>
@end lilypond


@subsubheading Note columns
@c 音符列

@cindex note column (音符列)
@cindex note collisions (音符の衝突)
@cindex collisions, notes (音符の衝突)
@cindex shift commands (シフト コマンド)
@funindex \shiftOff
@funindex shiftOff
@funindex \shiftOn
@funindex shiftOn
@funindex \shiftOnn
@funindex shiftOnn
@funindex \shiftOnnn
@funindex shiftOnnn

和音の中で小さな間隔で置かれる音符、あるいは異なるボイスで同時に発生する@c
音符は、符頭が重なるのを避けるために 2 列、時にはそれ以上の列に@c
割り振られます。@c
これらの列は音符列と呼ばれます。@c
それぞれのボイスに対して別々の列が存在し、符頭の衝突が起こる場合は@c
ボイスごとのシフトが適用されます。@c
これは上の例でも見ることができます。@c
2 小節目でボイス 2 の C はボイス 1 の D との関係で右にシフトされていて、@c
最後の和音でボイス 3 の C も他の音符との関係で右にシフトされています。

@code{\shiftOn}, @code{\shiftOnn}, @code{\shiftOnnn}, それに @code{\shiftOff} 
コマンドは、衝突が起こる場合に音符や和音をシフトさせる度合いを指定します。@c
デフォルトでは、外側のボイス (通常はボイス 1 と 2) には @code{\shiftOff} が@c
指定されていて、内側のボイス (ボイス 3 と 4) には @code{\shiftOn} が@c
指定されています。@c
シフトが適用される場合、ボイス 1 と 3 は右にシフトされ、ボイス 2 と 4は@c
左にシフトされます。

@code{\shiftOnn} と @code{\shiftOnnn} はさらなるシフト レベルを@c
定義するものであり、複雑な状況での衝突を解決するために@c
一時的に指定されるかもしれません -- 
@ref{実際の音楽からの例} を参照してください。


ある音符列は上向きの符幹を持つボイスからの音符 (あるいは和音) を 1 つだけ、@c
下向きの符幹を持つボイスからの音符 (あるいは和音) を 1 つだけ@c
保持することができます。@c
同じ向きの符幹を持つ 2 つのボイスからの音符が同じ位置に置かれ、両方のボイスに@c
シフトが指定されていない、あるいは同じシフトが指定されている場合、@c
エラー メッセージ @qq{Too many clashing note columns} (音符が多すぎて音符列で@c
衝突が起こっています) が生成されます。


@seealso
記譜法リファレンス: @ruser{Multiple voices}
@c 複数のボイス?


@node ボイスとボーカル
@subsection ボイスとボーカル
@translationof Voices and vocals

声楽には特別な困難があります: 2 つの表記 -- 音符と歌詞 -- を@c
組み合わせる必要があります。

@funindex \new Lyrics
@funindex \lyricsto
@funindex lyricsto
@funindex Lyrics
@cindex Lyrics context, creating (歌詞コンテキストを作成する)
@cindex lyrics, linking to voice (歌詞をボイスにリンクさせる)

すでに @code{\addlyrics@{@}} コマンドを見てきました。@c
これは簡単な楽譜であればうまく処理できます。@c
しかしながら、この方法では限界があります。@c
より複雑な音楽では、@code{\new Lyrics} を使って歌詞を 
@code{Lyrics} コンテキストに取り込み、ボイスに割り当ている名前を使って 
@code{\lyricsto@{@}} でその歌詞を明示的に音符にリンクさせます。

@lilypond[quote,verbatim,fragment]
<<
  \new Voice = "one" \relative c'' {
    \autoBeamOff
    \time 2/4
    c4 b8. a16 g4. f8 e4 d c2
  }
  \new Lyrics \lyricsto "one" {
    No more let sins and sor -- rows grow.
  }
>>
@end lilypond

歌詞は @code{Staff} コンテキスト@emph{ではなく} @code{Voice} コンテキストに@c
リンクさせなければならないということに注意してください。@c
このため、@code{Staff} コンテキストと @code{Voice} コンテキストを@c
明示的に作成する必要があります。

@cindex lyrics and beaming (歌詞と連桁)
@cindex beaming and lyrics (連桁と歌詞)
@funindex \autoBeamOff
@funindex autoBeamOff

LilyPond がデフォルトで使用する自動連桁は楽器だけの音楽では@c
うまく機能しますが、歌詞を持つ音楽ではそれほどうまく機能しません。@c
そこでは連桁はまったく必要ないか、歌詞のメリスマ (訳者注: 歌詞の 1 音節に@c
対して複数の音符を割り当てること) を示すために使用されるかのどちらかです。@c
上の例では、自動連桁を Off にするためにコマンド @code{\autoBeamOff} を@c
使用しています。

@funindex \new ChoirStaff
@funindex ChoirStaff
@funindex \lyricmode
@funindex lyricmode
@cindex vocal score structure (ボーカル譜構造)
@cindex choir staff

以前使用した Judas Maccabæus からの例を再度使用して、より自由度の高い方法を@c
示します。@c
まず、楽譜の内容を変数に振り直し、音楽と歌詞を譜表構造から分離させます。@c
さらに @code{ChoirStaff} ブラケットを導入します。@c
歌詞自体は、音楽ではなく歌詞として解釈されることを保証するために、@c
@code{\lyricsmode} で導入されなければなりません。

@lilypond[quote,verbatim]
global = { \time 6/8 \partial 8 \key f \major}
SopOneMusic = \relative c'' {
  c8 | c([ bes)] a a([ g)] f | f'4. b, | c4.~ c4 }
SopTwoMusic = \relative c' {
  r8 | r4. r4 c8 | a'([ g)] f f([ e)] d | e([ d)] c bes' }
SopOneLyrics = \lyricmode {
  Let | flee -- cy flocks the | hills a -- dorn, __ }
SopTwoLyrics = \lyricmode {
  Let | flee -- cy flocks the | hills a -- dorn, }

\score {
  \new ChoirStaff <<
    \new Staff <<
      \new Voice = "SopOne" {
        \global
        \SopOneMusic
      }
      \new Lyrics \lyricsto "SopOne" {
        \SopOneLyrics
      }
    >>
    \new Staff <<
      \new Voice = "SopTwo" {
        \global
        \SopTwoMusic
      }
      \new Lyrics \lyricsto "SopTwo" {
        \SopTwoLyrics
      }
    >>
  >>
}
@end lilypond

これはすべての声楽譜の基本的な構造です。@c
必要に応じてさらに多くの譜が追加されるかもしれませんし、さらに多くのボイスが@c
譜に追加されるかもしれませんし、さらに多くの歌詞 (原文: verse、@c
各ボイスに対する歌詞、あるいは、歌詞の 1 番、2 番のことを指すと思われる) が@c
歌詞に追加されるかもしれません。@c
音楽部分が長くなりすぎた場合は、音楽を保持している変数を容易に別のファイルに@c
置くことができます。

@cindex hymn structure (賛美歌構造)
@cindex SATB structure (SATB 構造)
@cindex vocal scores with multiple verses (複数のボーカル譜)
@cindex multiple vocal verses
@cindex verses, multiple vocal

ここで、例として 4 つの歌詞 -- それぞれが SATB (ソプラノ、アルト、テナー、バス) 
に対してセットされている -- を持つ賛美歌の最初の 1 行目を取り上げます。@c
この歌の場合、4 つのパートに対する歌詞の言葉は同じです。@c
変数を使用して音楽記譜と歌詞の言葉を譜表構造から分離させている手法に@c
注意してください。@c
さらに、 @q{TimeKey} と呼ぶことにした変数が、2 つの譜で使用される@c
いくつかのコマンドを保持するために、使用されていることにも注意してください。@c
他の例では、この変数はしばしば @q{global} と呼ばれます。

@lilypond[quote,verbatim]
TimeKey = { \time 4/4 \partial 4 \key c \major}
SopMusic   = \relative c' { c4 | e4. e8 g4  g  | a a g }
AltoMusic  = \relative c' { c4 | c4. c8 e4  e  | f f e }
TenorMusic = \relative c  { e4 | g4. g8 c4. b8 | a8 b c d e4 }
BassMusic  = \relative c  { c4 | c4. c8 c4  c  | f8 g a b c4 }
VerseOne   = \lyricmode {
  E -- | ter -- nal fa -- ther, | strong to save, }
VerseTwo   = \lyricmode {
  O | Christ, whose voice the | wa -- ters heard, }
VerseThree = \lyricmode {
  O | Ho -- ly Spi -- rit, | who didst brood }
VerseFour  = \lyricmode {
  O | Tri -- ni -- ty of | love and pow'r }

\score {
  \new ChoirStaff <<
    \new Staff <<
      \clef "treble"
      \new Voice = "Sop"  { \voiceOne \TimeKey \SopMusic }
      \new Voice = "Alto" { \voiceTwo \AltoMusic }
      \new Lyrics \lyricsto "Sop" { \VerseOne   }
      \new Lyrics \lyricsto "Sop" { \VerseTwo   }
      \new Lyrics \lyricsto "Sop" { \VerseThree }
      \new Lyrics \lyricsto "Sop" { \VerseFour  }
    >>
    \new Staff <<
      \clef "bass"
      \new Voice = "Tenor" { \voiceOne \TimeKey \TenorMusic }
      \new Voice = "Bass"  { \voiceTwo \BassMusic  }
    >>
  >>
}
@end lilypond

@cindex verse and refrain (歌詞とリフレイン)

最後に、2 つの譜の 2 パートのリフレイン (繰り返し) につながる単一の歌詞の節を@c
コードする方法を示す例を挙げます。@c
これを 1 つの楽譜で達成するためのシークエンシャル部分と@c
同時進行部分の配置の仕方は非常にトリッキーです。@c
そのため、説明を注意深く読んでください！

コーラスの開始点で波括弧を表示させたいので、@c
@code{ChoirStaff} を保持する score ブロックで始めます。@c
通常、すべての譜を並列にするために @code{\new ChoirStaff} の後に山括弧を@c
置く必要があります。@c
山括弧を使用しても害はありませんが、ここではコーラスまで並列化を@c
先延ばししたいので波括弧を使用します。@c
@code{ChoirStaff} の中で、まず最初に歌詞を保持する譜表を置く必要があります。@c
音符と歌詞を並列に並べなければならないので、@code{\new Voice} と 
@code{\new Lyrics} を同時に開始させるために山括弧で囲む必要があります:

@lilypond[quote,verbatim,ragged-right]
versenotes = \relative c'' {
  \clef "treble"
  \key g \major
  \time 3/4 g g g b b b
}
versewords = \lyricmode {
  One two three four five six
}
\score {
  \new ChoirStaff {
    \new Staff <<
      \new Voice = "verse" {
        \versenotes \break
      }
      \new Lyrics \lyricsto verse {
        \versewords
      }
    >>
  }
}
@end lilypond

これで歌詞の行が与えられました。

今度は、refainA を同じ譜表で続けて、それと並列に refrainB のためにもう 1 つ@c
譜表を導入する必要があります。@c
そのため、この並列部分は verse Voice の中の @code{\break} の直後に@c
置かれなければなりません。@c
そうです、verse Voice の@emph{中に}です！@c
ここで並列部分を示します。@c
同じ要領でここにもっと多くの譜を導入することもできます。

@example
<<
  \refrainnotesA
  \new Lyrics \lyricsto verse @{
    \refrainwordsA
  @}
  \new Staff <<
    \new Voice = "refrainB" @{
      \refrainnotesB
    @}
    \new Lyrics \lyricsto "refrainB" @{
      \refrainwordsB
    @}
  >>
>>
@end example

ここで最終結果を示します。@c
これはコーラスになっている 2 つの譜を持ち、並列部分がどのように 
verse Voice の中に置かれるかを示しています:

@lilypond[quote,verbatim, ragged-right]
versenotes = \relative c'' {
  \clef "treble"
  \key g \major
  \time 3/4 g g g b b b
}
refrainnotesA = \relative c'' {
  \time 2/4
  c c g g \bar "|."
}
refrainnotesB = \relative c {
  \clef "bass"
  \key g \major
  c e d d
}
versewords = \lyricmode {
  One two three four five six
}
refrainwordsA = \lyricmode {
  la la la la
}
refrainwordsB = \lyricmode {
  dum dum dum dum
}
\score {
  \new ChoirStaff {
    \new Staff <<
      \new Voice = "verse" {
        \versenotes \break
        <<
          \refrainnotesA
          \new Lyrics \lyricsto "verse" {
            \refrainwordsA
          }
          \new Staff <<
            \new Voice = "refrainB" {
              \refrainnotesB
            }
            \new Lyrics \lyricsto "refrainB" {
              \refrainwordsB
            }
          >>
        >>
      }
      \new Lyrics \lyricsto "verse" {
        \versewords
      }
    >>
  }
}
@end lilypond

@cindex book, example of using (book の使用例)
@funindex \book
@funindex book

これはシークエンシャル ブロックと同時進行ブロックがどのように機能するかを@c
理解するための手助けとしては興味深く有用です。@c
しかしながら、実際にこれをコードする場合は、恐らく以下のように暗黙の 
@code{\book} ブロック内部に 2 つの @code{\score} ブロックを@c
置くようにするでしょう:

@lilypond[quote,verbatim,ragged-right]
versenotes = \relative c'' {
  \clef "treble"
  \key g \major
  \time 3/4 g g g b b b
}
refrainnotesA = \relative c'' {
  \time 2/4
  c c g g \bar "|."
}
refrainnotesB = \relative c {
  \clef "bass"
  \key g \major
  c e d d
}
versewords = \lyricmode {
  One two three four five six
}
refrainwordsA = \lyricmode {
  la la la la
}
refrainwordsB = \lyricmode {
  dum dum dum dum
}
\score {
  \new Staff <<
    \new Voice = "verse" {
      \versenotes
    }
    \new Lyrics \lyricsto "verse" {
      \versewords
    }
  >>
}

\score {
  \new ChoirStaff <<
    \new Staff <<
      \new Voice = "refrainA" {
        \refrainnotesA
      }
      \new Lyrics \lyricsto "refrainA" {
        \refrainwordsA
      }
    >>
    \new Staff <<
      \new Voice = "refrainB" {
        \refrainnotesB
      }
      \new Lyrics \lyricsto "refrainB" {
        \refrainwordsB
      }
    >>
  >>
}
@end lilypond


@seealso
記譜法リファレンス: @ruser{Vocal music}
@c 声楽


@node コンテキストとエングラーバ
@section コンテキストとエングラーバ
@translationof Contexts and engravers

これまでに、コンテキストとエングラーバについて簡単に言及してきました。@c
ここでは、これらのコンセプトをより詳細に見ていくことにします。@c
なぜなら、これらは LilyPond 出力をうまく調節するのに重要だからです。

@menu
* コンテキストの説明::
* コンテキストを作成する::
* エングラーバの説明::
* コンテキスト プロパティを変更する::
* エングラーバを追加 / 削除する::
@end menu


@node コンテキストの説明
@subsection コンテキストの説明
@translationof Contexts explained

@cindex contexts explained (コンテキストの説明)

音楽が譜刻されるとき、入力ファイルでははっきりとは現れてこない多くの@c
記譜要素を出力に追加しなければなりません。@c
例えば、以下の例で入力と出力を比較してください:

@lilypond[quote,verbatim,relative=2,fragment]
cis4 cis2. g4
@end lilypond

この入力は内容がやや乏しいですが、出力では小節線、臨時記号、音部記号、@c
拍子記号が追加されています。@c
LilyPond が入力を@emph{解釈}するとき、音楽情報は時系列に調べられます。@c
これは楽譜を左から右へ読むのと似ています。@c
入力を読み込んでいる間、プログラムは小節の境目となる場所と明示的な臨時記号を@c
必要とするピッチを覚えています。@c
この情報はいくつかのレベルで持続されなければなりません。@c
例えば、臨時記号の効果は単一の譜表に制限されますが、@c
小節線は楽譜全体に亘って同調されなければなりません。

LilyPond 内部では、これらの規則と情報ビットは@emph{コンテキスト}に@c
グループ化されます。@c
すでに @code{Voice} コンテキストを見てきました。@c
他にも、@code{Staff} コンテキストと @code{Score} コンテキストがあります。@c
コンテキストは、楽譜の階層構造を反映するために、階層構造になっています。@c
例えば: @code{Staff} コンテキストは多くの @code{Voice} コンテキストを@c
保持することができ、@code{Score} コンテキストは@c
多くの @code{Staff} コンテキストを保持することができます。

@quotation
@sourceimage{context-example,5cm,,}
@end quotation

各コンテキストは、いくつかの記譜オブジェクトを作成し、関連プロパティを@c
維持しながら、いくつかの記譜規則を施行する責任があります。@c
例えば、@code{Voice} コンテキストは臨時記号を作り出すかもしれず、@c
そうした場合 @code{Staff} コンテキストはその小節の残りの部分で臨時記号を@c
表示したり隠したりするための規則を維持します。

他の例としては、小節線の同調はデフォルトでは @code{Score} コンテキストが@c
扱います。@c
しかしながら、いくつかの音楽では小節線を同調させたくない場合もあります -- 
4/4 拍子と 3/4 拍子の多声の楽譜といった場合です。@c
そのようなケースでは、@code{Score} と @code{Staff} コンテキストの@c
デフォルト設定を変更しなければなりません。

非常にシンプルな楽譜では、コンテキストは暗黙的に作成され、@c
あなたはそれらに気づく必要もありません。@c
複数の譜表を持つようなより大きな楽曲では、あなたが必要としているだけの譜を@c
手に入れられるよう、さらに、それらの譜が正しい順序で並ぶことを保証するために、@c
コンテキストを明示的に作成する必要があります。@c
特殊な記譜法を持つ楽曲を譜刻するには、通常は既存のコンテキストを変更します。@c
あるいは完全に新しいコンテキストを定義することさえあります。

@code{Score}, @code{Staff}, @code{Voice} コンテキストに加えて、@c
@code{PianoStaff} や @code{ChoirStaff} コンテキストといった譜表グループを@c
制御するための、楽譜レベルと譜表レベルの間にあるコンテキストがあります。@c
さらに、代替の譜表コンテキストとボイスコンテキストがあり、歌詞、打楽器、@c
フレットボード (訳者: 弦楽器の一種。フレットでウィキぺディアを参照)、@c
通奏低音 (数字付き低音、原文: figured bass) などのためのコンテキストがあります。

すべてのコンテキスト タイプの名前は 1 つ、あるいは複数の単語からなります。@c
各単語の最初の文字は大文字であり、前の単語のすぐあとに次の単語が続きます。@c
ハイフンやアンダスコアは使いません。@c
つまり @code{GregorianTranscriptionStaff} といった具合です。


@seealso
記譜法リファレンス: @ruser{Contexts explained}
@c コンテキストの説明


@node コンテキストを作成する
@subsection コンテキストを作成する
@translationof Creating contexts

@funindex \new
@funindex new
@cindex new contexts (新しいコンテキスト)
@cindex creating contexts (コンテキストを作成する)
@cindex contexts, creating (コンテキストを作成する)

最上位にあるコンテキストは 1 つだけです: @code{Score} コンテキストです。@c
これは @code{\score} コマンドによって作成されます。@c
また、簡単な楽譜では、これは自動的に作成されます。

1 つだけのボイスと 1 つだけの譜表を持つ楽譜では、@code{Voice} と @code{Staff} 
コンテキストは自動的に作成されるために放っておかれるかもしれません。@c
しかしながら、より複雑な楽譜では、これらを手ずから作成する必要があります。@c
これらを作成する最も簡単なコマンドは @code{\new} です。@c
これは音楽表記の前に置きます。@c
例を挙げます:

@example
\new @var{type} @var{music-expression}
@end example

@noindent

ここで、@var{type} はコンテキスト名です (@code{Staff} や @code{Voice} など)。@c
このコマンドは新しいコンテキストを作成し、そのコンテキストの中にある 
@var{music-expression} の解釈を開始します。

@code{\new Score} というコマンドは無いということに注意してください。@c
単一の最上位 @code{Score} コンテキストは @code{\score} で作成されます。

これまでに、新たに @code{Staff} と @code{Voice} コンテキストを作成する多くの@c
実際的な例を見てきましたが、これらのコマンドが実際にどのように使用されるのかを@c
覚えてもらうために、実際の音楽に注釈を付けた例を挙げます:

@lilypond[quote,verbatim,ragged-right]
\score {  % start of single compound music expression
  <<  % start of simultaneous staves section
    \time 2/4
    \new Staff {  % create RH staff
      \key g \minor
      \clef "treble"
      \new Voice {  % create voice for RH notes
        \relative c'' {  % start of RH notes
          d4 ees16 c8. |
          d4 ees16 c8. |
        }  % end of RH notes
      }  % end of RH voice
    }  % end of RH staff
    \new Staff <<  % create LH staff; needs two simultaneous voices
      \key g \minor
      \clef "bass"
      \new Voice {  % create LH voice one
        \voiceOne
        \relative g {  % start of LH voice one notes
          g8 <bes d> ees, <g c> |
          g8 <bes d> ees, <g c> |
        }  % end of LH voice one notes
      }  % end of LH voice one
      \new Voice {  % create LH voice two
        \voiceTwo
        \relative g {  % start of LH voice two notes
          g4 ees |
          g4 ees |
        }  % end of LH voice two notes
      }  % end of LH voice two
    >>  % end of LH staff
  >>  % end of simultaneous staves section
}  % end of single compound music expression
@end lilypond

(波括弧 @code{@{} や 2 重山括弧 @code{<<} の中でブロックになっているすべての@c
記述には括弧よりもスペースが 2 つ多いインデントを付けられていて、@c
閉じ括弧には括弧の開始行と同じインデントを付けられているということに@c
注意してください。@c
これは必須ではありませんが、こうしておくと @q{unmatched backet} 
(「括弧が一致しない」) エラーを大幅に減らすことができますので、@c
強く推奨します。@c
これにより、音楽の構造を簡単に見て取ることができ、一致していない括弧が@c
明瞭になります。@c
さらに、RH 譜表はボイスを 1 つだけしか必要としないために波括弧によって@c
囲まれた単一の音楽表記として作成されているのに対して、LH 譜表は 2 つのボイスを@c
必要とするために 2 重山括弧を使って作成されていることに注意してください。)

@cindex contexts, naming (コンテキストを名前を付ける)
@cindex naming contexts (コンテキストを名前を付ける)

また、@code{\new} コマンドはコンテキストに識別名を与えて、そのコンテキストを@c
同じタイプの他のコンテキストと区別することを可能にするかもしれません:

@example
\new @var{type} = @var{id} @var{music-expression}
@end example

@code{Staff}, @code{Voice} などといったコンテキスト タイプの名前と@c
そのようなコンテキスト タイプのインスタンスの名前 --これはユーザによって@c
提供され、どのような文字の連なりにもなり得ます -- の違いに注意してください。@c
数字とスペースも識別名に使用することができますが、その場合クォートで@c
囲まなければなりません -- 
つまり、@code{\new Staff = "MyStaff 1" @var{music-expression}} のように@c
なります。@c
識別名はコンテキストのあるインスタンスを参照するために使用されます。@c
このことを歌詞についてのセクションで見てきました。@c
@ref{ボイスとボーカル} を参照してください。


@seealso
記譜法リファレンス: @ruser{Creating contexts}


@node エングラーバの説明
@subsection エングラーバの説明
@translationof Engravers explained

@cindex engravers (エングラーバ)

LilyPond によって作成された楽譜上にあるすべての記号は @code{Engraver} によって@c
作り出されます。@c
つまり、譜を譜刻するエングラーバがあり、符頭を譜刻するエングラーバ、@c
符幹を譜刻するエングラーバ、連桁を譜刻するエングラーバなどなどです。@c
そのようなエングラーバは 120 以上あります！@c
幸いなことに、たいていの楽譜では数個のエングラーバについて知っていれば良く、@c
簡単な楽譜ではまったく知らなくても大丈夫です。

エングラーバはコンテキストの中に存在し、そこで活動します。@c
@code{Metronome_mark_engraver} などといった楽譜全体に影響を与える@c
エングラーバは最上位のコンテキスト -- @code{Score} コンテキスト -- で@c
活動します。

@code{Clef_engraver} と @code{Key_engraver} は各 @code{Staff} コンテキストの@c
中で見つかります -- 譜が異なれば音部記号や調号も異なるかもしれないからです。

@code{Note_heads_engraver} と @code{Stem_engraver} は@c
各 @code{Voice} コンテキスト -- 最下位のコンテキスト -- の中にあります。

各エングラーバはそれの機能に関連付けされているある特定のオブジェクトを処理し、@c
機能に関連するプロパティを維持します。@c
コンテキストに関連付けされているプロパティなどのようにこれらのプロパティは、@c
エングラーバの処理を変更するためや、譜刻される楽譜の中にある要素の見た目を@c
変更するために、変更されるかもしれません。

エングラーバはすべてそれらの機能を記述する単語から形成された複合名を持ちます。@c
最初の単語の最初の文字は大文字であり、その後に続く単語はアンダスコアで@c
連結されます。@c
ですから、@code{Staff_symbol_engraver} には譜表の線を作成する責任があり、@c
@code{Clef_engraver} は音部記号を描くことによってピッチの参照ポイントを@c
決定、セットします。


ここに、最も一般的なエングラーバをいくつかそれらの機能とともに挙げます。@c
たいていの場合、名前から簡単に機能を推測でき、その逆も成り立つことが@c
わかるでしょう。

@multitable @columnfractions .3 .7
@headitem エングラーバ
  @tab 機能
@item Accidental_engraver
  @tab 臨時記号 (警告的臨時記号とアドバイス的な臨時記号を含む) を作成します。
@item Beam_engraver
  @tab 連桁を譜刻します。
@item Clef_engraver
  @tab 音部記号を譜刻します。
@item Completion_heads_engraver
  @tab 小節線をまたがる音符を分割します。
@c The old Dynamic_engraver is deprecated. -jm
@item New_dynamic_engraver
  @tab 強弱記号 (クレッシェンド、デクレッシェンド) と強弱テキスト (p や f など) 
を作成します。
@item Forbid_line_break_engraver
  @tab 音楽要素がアクティブなままである場合に改行されることを防ぎます。(訳者: 
いわゆる禁則処理)
@item Key_engraver
  @tab 調号を作成します。
@item Metronome_mark_engraver
  @tab メトロノーム記号を譜刻します。
@item Note_heads_engraver
  @tab 符頭を譜刻します。
@item Rest_engraver
  @tab 休符を譜刻します。
@item Staff_symbol_engraver
  @tab (デフォルトで) 五線の譜表を譜刻します。
@item Stem_engraver
  @tab 符幹と単一符幹のトレモロを作成します。
@item Time_signature_engraver
  @tab 拍子記号を作成します。
@end multitable

@smallspace

後ほど、エングラーバのアクションを変更することによって LilyPond の出力が@c
どのように変わるのかを見ていきます。


@seealso
内部リファレンス: @rinternals{Engravers and Performers}


@node コンテキスト プロパティを変更する
@subsection コンテキスト プロパティを変更する
@translationof Modifying context properties

@cindex context properties (コンテキスト プロパティ)
@cindex context properties, modifying (コンテキスト プロパティを変更する)
@cindex modifying context properties (コンテキスト プロパティを変更する)
@funindex \set
@funindex set
@funindex \unset
@funindex unset

コンテキストにはいくつかのコンテキスト プロパティを保持する責任があります。@c
それらプロパティの多くは変更可能であり、変更することで入力の構文解釈に影響を@c
与えて出力の見た目を変化させます。@c
それらプロパティは \set コマンドによって変更されます。@c
これは以下のような形で行います:

@example
\set @emph{ContextName}.@emph{propertyName} = #@emph{value}
@end example

@emph{ontextName} には通常、@code{Score}, @code{Staff} or @code{Voice} が@c
入ります。@c
これを省略する場合もあり、そのような場合は @code{Voice} であると@c
見なされます。

コンテキスト プロパティの名前はハイフンやアンダスコアを使わずに連結された@c
単語によって形成され、最初の単語を除いて単語の最初の文字は大文字になります。@c
ここで、一般的に使用されるコンテキスト プロパティの例をいくつか挙げます。@c
実際には、コンテキスト プロパティはもっとたくさんあります。

@c attempt to force this onto a new page
@need 50
@multitable @columnfractions .25 .15 .45 .15
@headitem プロパティ名
  @tab タイプ
  @tab 機能
  @tab 実際の値の例
@item extraNatural
  @tab ブール値
  @tab 真の場合、追加のナチュラル記号を臨時記号の前にセットします
  @tab @code{#t}, @code{#f}
@item currentBarNumber
  @tab 整数
  @tab 小節番号をセットします
  @tab @code{50}
@item doubleSlurs
  @tab ブール値
  @tab 真の場合、音符の上と下の両方にスラーを譜刻します
  @tab @code{#t}, @code{#f}
@item instrumentName
  @tab テキスト
  @tab 譜表の先頭に表示される名前をセットします
  @tab @code{"Cello I"}
@item fontSize
  @tab 実数
  @tab フォント サイズを増減させます
  @tab @code{2.4}
@item stanza
  @tab テキスト
  @tab 歌詞の先頭に譜刻されるテキストをセットします
  @tab @code{"2"}
@end multitable

@noindent
ここでのブール値とは真 (@code{#t}) または偽 (@code{#f}) の@c
どちらかであり、整数とは正の整数であり、実数とは正または負の小数点付きの@c
数であり、テキストはダブル アポストロフィで囲まれます。@c
ハッシュ記号 (@code{#}) が 2 つの異なる箇所で出現することに@c
注意してください -- ブール値での @code{t} や @code{f} の前と、@c
@code{@bs{}set} での@emph{値}の前です。@c
そのため、@code{@bs{}set} の値にブール値を挿入する場合、ハッシュ記号が 2 つ@c
必要になります -- つまり @code{##t} です。

@cindex properties operating in contexts (コンテキスト内でのプロパティの操作)
@cindex setting properties within contexts (コンテキスト内部のプロパティを設定する)

これらのプロパティのいずれかをセットする前に、それらが操作するコンテキストは@c
どれなのかを知る必要があります。@c
これは明らかな場合もありますが、ややこしい場合もあります。@c
間違ったコンテキストが指定された場合、エラー メッセージは表示されませんが、@c
予期したアクションが起こりません。@c
例えば、@code{instrumentName} は間違いなく @code{Staff} コンテキストの中に@c
きます。@c
なぜなら、このプロパティが名前を付けるのは譜表だからです。@c
以下の例では、最初の譜表には名前が付けられていますが、2 番目の譜表には@c
付けられていません。@c
なぜなら、コンテキスト名を省略しているからです。

@lilypond[quote,verbatim,ragged-right]
<<
  \new Staff \relative c'' {
    \set Staff.instrumentName = #"Soprano"
    c4 c
 }
  \new Staff \relative c' {
  \set instrumentName = #"Alto"  % Wrong!
  d4 d
 }
>>
@end lilypond

デフォルトのコンテキスト名は @code{Voice} であることを思い出してください。@c
このため、2 番目の @code{@bs{}set} コマンドは @code{Voice} コンテキストの@c
プロパティ @code{instrumentName} を @qq{Alto} にセットしています。@c
しかしながら、LilyPond は @code{Voice} コンテキストでそのようなプロパティを@c
見つけ出さないため、何のアクションも起こしません。@c
これはエラーではなく、ログ ファイルにエラー メッセージは残りません。

同様に、プロパティ名の綴りを間違えた場合もエラー メッセージは表示されず、@c
予期したアクションが起こりません。@c
実際のところ、@code{@bs{}set} コマンドを使って、存在するいかなる@c
コンテキストにでも、いかなる (架空の) @q{プロパティ} を@c
セットすることができます。@c
しかしながら、そのプロパティ名を LilyPond が知らない場合、@c
何のアクションも起こしません。@c
LilyPond 入力ファイルに対する特別なサポートを持つ@c
いくつかのテキスト エディタは、あなたがプロパティ名の上にマウスを@c
持ってくるとバレット (テキストの先頭に付く小丸) 付きのプロパティ名を表示して@c
そのプロパティの裏づけを行い (LilyPondTool を持つ JEdit)、@c
あるいは未知のプロパティ名をハイライトします (ConTEXT)。@c
そのような機能を持つエディタを使用していないのなら、内部リファレンスで@c
プロパティ名をチェックすることを推奨します: 
@rinternals{Tunable context properties} や @rinternals{Contexts} 
を参照してください。

@code{instrumentName} プロパティは @code{Staff} コンテキストの中に@c
セットされた場合にのみ効果を持ちますが、いくつかのプロパティは複数の@c
コンテキストの中にセットすることができます。@c
例えば、プロパティ @code{extraNatural} はすべての譜に対してデフォルトで 
@code{##t} (真) にセットされています。@c
ある特定の @code{Staff} コンテキストでこれを @code{##f} (偽) に@c
セットした場合、その譜表の臨時記号にのみ適用されます。@c
これを @code{Score} コンテキストにセットした場合、すべての譜に適用されます。

それでは、ある譜表の追加ナチュラル記号を消してみます:

@lilypond[quote,verbatim,ragged-right]
<<
  \new Staff \relative c'' {
    ais4 aes
 }
  \new Staff \relative c'' {
    \set Staff.extraNatural = ##f
    ais4 aes
 }
>>
@end lilypond

@noindent
さらに、すべての譜の追加ナチュラル記号を消します:

@lilypond[quote,verbatim,ragged-right]
<<
  \new Staff \relative c'' {
    ais4 aes
 }
  \new Staff \relative c'' {
    \set Score.extraNatural = ##f
    ais4 aes
 }
>>
@end lilypond

他の例としては、@code{clefOctavation} が @code{Score} コンテキストに@c
セットされた場合、直ちにすべての譜でのオクターブの値を変更し、すべての譜に@c
適用される新しいデフォルト値をセットします。

逆のことを行うコマンド @code{@bs{}unset} はコンテキストからプロパティを@c
削除し、それによりたいていのプロパティはデフォルト値に戻ります。@c
通常、望みのことを達成するために新たな @code{@bs{}set} コマンドを@c
用いる場合、@code{@bs{}unset} は必要ありません。

@code{@bs{}set} と @code{@bs{}unset} コマンドは入力ファイルのどこにでも@c
現れる可能性があり、そのコマンドが出現した時点から、楽譜の終わりまたは@c
そのプロパティが再度 @code{@bs{}set} や @code{@bs{}unset} されるまで効果を@c
持ちます。@c
フォント サイズを変更してみましょう。@c
それにより (他のものに加えて) 符頭のサイズが何段階か変更されます。@c
変更は直前にセットされた値から行われるのではなく、デフォルト値から行われます。

@lilypond[quote,verbatim,ragged-right,relative=1,fragment]
c4
% make note heads smaller
\set fontSize = #-4
d e
% make note heads larger
\set fontSize = #2.5
f g
% return to default size
\unset fontSize
a b
@end lilypond

これまでにいくつかのタイプのプロパティ値をセットする方法を見てきました。@c
整数と番号の前には常にハッシュ記号 @code{#} が付き、真と偽の値は 
2 つのハッシュ記号を付けて @code{##t} と @code{##f} 
によって指定されてるということに注意してください。@c
テキスト プロパティは上で示したようにダブル クォーテーションによって@c
囲まれます。@c
しかしながら、後ほど、テキストは実際には非常に強力な @code{markup} コマンドを@c
用いたもっと一般的な方法で指定できるということを見ていきます。


@subsubheading Setting context properties with @code{\with}
@c \with を使ったコンテキスト プロパティの設定

@funindex \with
@funindex with
@cindex context properties, setting with \with (\with でコンテキスト プロパティを設定する)

コンテキスト プロパティはコンテキストが作成されるときに@c
セットされることもあるかもしれません。@c
この設定がコンテキスト全体で保持される場合、この方法でプロパティ値を@c
指定すると明瞭になります。@c
コンテキストが @code{@bs{}new} コマンドで作成されるとき、その直後に 
@code{@bs{}with @{ .. @}} ブロックが続き、その中でプロパティ値が@c
セットされるかもしれません。@c
例えば、ある譜表全体で追加のナチュラルの表示を抑制しようとする場合、@c
以下のように書きます:

@example
\new Staff \with @{ extraNatural = ##f @}
@end example

@noindent
そして、以下のように使用します:

@lilypond[quote,verbatim,ragged-right]
<<
  \new Staff
  \relative c'' {
    gis ges aes ais
  }
  \new Staff \with { extraNatural = ##f }
  \relative c'' {
    gis ges aes ais
  }
>>
@end lilypond

この方法でプロパティをセットした場合でも、@code{@bs{}set} を使って動的に@c
変更されたり、@code{@bs{}unset} を使ってデフォルト値に@c
戻されたりするかもしれません。

@cindex fontSize, default and setting (fontSize のデフォルトと設定)

@code{fontSize} プロパティの扱いは異なります。@c
これが @code{@bs{}with} の中でセットされた場合、フォント サイズの@c
デフォルト値をセットし直します。@c
そのあとでフォント サイズが @code{@bs{}set} によって変更された場合、@c
@code{@bs{}with} でセットされた新しいデフォルト値は 
@code{@bs{}unset fontSize} コマンドによって元に戻されるかもしれません。


@subsubheading Setting context properties with @code{\context}
@c \context を使ったコンテキスト プロパティの設定

@cindex context properties, setting with \context (\context でコンテキスト プロパティを設定する)
@funindex \context
@funindex context

コンテキスト プロパティの値は単一のコマンドによってある特定のタイプの@c
コンテキスト@emph{すべて} -- すべての @code{Staff} コンテキストなどのように 
-- にセットされるかもしれません。@c
プロパティをセットするコンテキストのタイプは、@code{Staff} のような@c
そのコンテキストのタイプ名に接頭辞としてバック スラッシュを付けたもの 
-- @code{@bs{}Staff} のように -- によって指定されます。@c
プロパティ値をセットするための記述は上で紹介した @code{@bs{}with} ブロックの@c
中の記述と同じです。@c
この記述は @code{@bs{}layout} ブロック内部の @code{@bs{}context} ブロックの@c
中に置かれます。@c
各 @code{@bs{}context} ブロックは、その @code{@bs{}layout} ブロックが@c
置かれている @code{@bs{}score} または @code{@bs{}book} ブロック全体を通じて、@c
指定されたタイプのコンテキストすべてに対して効果を持ちます。@c
ここで、記述方法を示すための例を挙げます:

@lilypond[verbatim,quote]
\score {
  \new Staff {
    \relative c'' {
      cis4 e d ces
    }
  }
  \layout {
    \context {
      \Staff
      extraNatural = ##t
    }
  }
}
@end lilypond

@noindent
この方法でセットされたコンテキスト プロパティは、@code{@bs{}with} ブロックの@c
中の記述によって、さらには、音楽表記の中に埋め込まれた 
@code{@bs{}set} コマンドによって、ある特定のコンテキスト インスタンスでは@c
上書きされるかもしれません。


@seealso
記譜法リファレンス: @ruser{Changing context default settings}
@c コンテキストのデフォルト設定の変更
@c FIXME
@c uncomment when backslash-node-name issue is resolved -pm
@c <at>ruser{The set command}.

内部リファレンス: @rinternals{Contexts},
@rinternals{Tunable context properties}
@c コンテキスト, 調整可能なコンテキスト プロパティ


@node エングラーバを追加 / 削除する
@subsection エングラーバを追加 / 削除する
@translationof Adding and removing engravers

@cindex engravers, adding (エングラーバを追加する)
@cindex adding engravers (エングラーバを追加する)
@cindex engravers, removing (エングラーバを削除する)
@cindex removing engravers (エングラーバを削除する)

@funindex \consists
@funindex consists
@funindex \remove
@funindex remove

これまでに、コンテキストはそれぞれにいくつかのエングラーバを保持し、それぞれの@c
エングラーバは出力のある特定部分 -- 小節線、譜、符頭、符幹など -- の譜刻に@c
責任を持つということを見てきました。@c
あるエングラーバがコンテキストから削除されると、それはもはや出力を行いません。@c
これは出力を変更するための荒っぽい方法ですが、役に立つ場合もあります。

@subsubheading Changing a single context
@c 単一のコンテキストの変更

あるコンテキストからあるエングラーバを削除するには、前のセクションで@c
見てたきたのと同様に、コンテキスト作成コマンドの直後に置く 
@code{@bs{}with} コマンドを使用します。

例として、前のセクションで使用した例から譜表線を取り除いてみましょう。@c
譜表線は @code{Staff_symbol_engraver} によって作り出されるということを@c
思い出してください。

@lilypond[quote,verbatim,ragged-right]
\new Staff \with {
  \remove Staff_symbol_engraver
}
\relative c' {
  c4
  \set fontSize = #-4  % make note heads smaller
  d e
  \set fontSize = #2.5  % make note heads larger
  f g
  \unset fontSize  % return to default size
  a b
}
@end lilypond

@cindex ambitus engraver (音域エングラーバ)

さらに、エングラーバは個々のコンテキストに追加されることもあります。@c
エングラーバを追加するコマンドは以下のようなものです:

@code{\consists @var{Engraver_name}},

@noindent
これを @code{@bs{}with} ブロックの中に置きます。@c
いくつかのボーカル譜は、その譜表の中にある音符の範囲を示すために、@c
譜表の開始点に音域 (ambitus) を置きます -- 
@rglos{ambitus} を参照してください。@c
音域は @code{Ambitus_engraver} によって作成され、普通は、@c
これはどのコンテキストにも含まれません。@c
これを @code{Voice} コンテキストに追加した場合、それはそのボイスのみから@c
音域を計算します:

@lilypond[quote,verbatim,ragged-right]
\new Staff <<
  \new Voice \with {
    \consists Ambitus_engraver
  }
  \relative c'' {
    \voiceOne
    c a b g
  }
  \new Voice
  \relative c' {
    \voiceTwo
    c e d f
  }
>>
@end lilypond

@noindent
しかし、音域エングラーバを @code{Staff} コンテキストに追加した場合、@c
そのエングラーバはその譜表上にあるすべてのボイスの中の音符から音域を計算します:

@lilypond[quote,verbatim,ragged-right]
\new Staff \with {
    \consists Ambitus_engraver
  }
  <<
  \new Voice
  \relative c'' {
    \voiceOne
    c a b g
  }
  \new Voice
  \relative c' {
    \voiceTwo
    c e d f
  }
>>
@end lilypond

@subsubheading Changing all contexts of the same type
@c 同じタイプのコンテキストをすべて変更する

@funindex \layout
@funindex layout

上の例では、個々のコンテキストにエングラーバを追加あるいは削除する方法を@c
示しました。@c
さらに、そのコマンドを @code{@bs{}layout} ブロックの中の適当なコンテキストの@c
中に置くことによって、ある特定のタイプのコンテキストすべてにエングラーバを@c
追加あるいは削除することもできます。@c
例えば、4 つの譜表を持つ楽譜ですべての譜表に音域を表示する場合、@c
以下のように記述します:

@lilypond[quote,verbatim,ragged-right]
\score {
  <<
    \new Staff <<
      \relative c'' { c a b g }
    >>
    \new Staff <<
      \relative c' { c a b g }
    >>
    \new Staff <<
      \clef "G_8"
      \relative c' { c a b g }
    >>
    \new Staff <<
      \clef "bass"
      \relative c { c a b g }
    >>
  >>
  \layout {
    \context {
      \Staff
      \consists Ambitus_engraver
    }
  }
}
@end lilypond

@noindent
また、コンテキスト プロパティの値も、上記と同様に 
@code{@bs{}context} ブロックの中に @code{@bs{}set} を含ませることによって、@c
ある特定のタイプのコンテキストすべてに対してセットすることができます。


@seealso
記譜法リファレンス: @ruser{Modifying context plug-ins},
@ruser{Changing context default settings}
@c コンテキスト プラグインの変更, コンテキストのデフォルト設定の変更


@node テンプレートを拡張する
@section テンプレートを拡張する
@translationof Extending the templates

あなたはチュートリアルを読み終えました。@c
あなたはどのように音楽を書くかを知っていて、基礎となるコンセプトを@c
理解しています。@c
しかし、どうやったらあなたはあなたが望む譜表を手に入れられるでしょうか？@c
あなたにとって良いスタート地点となるかもしれない多くのテンプレートがあります 
(@ref{テンプレート} を参照してください)。@c
しかしながら、あなたの望むものがそこでカバーされていなかったらどうしましょう？@c
続きを読んでください。

@menu
* ソプラノとチェロ::
* 4 パート SATB ボーカル譜::
* ゼロから楽譜を構築する::
* 変数と関数を用いて入力の手間を省く::
* 楽譜とパート::
@end menu

@node ソプラノとチェロ
@subsection ソプラノとチェロ
@translationof Soprano and cello

@cindex template, modifying (テンプレートを変更する)
@cindex modifying templates (テンプレートを変更する)

あなたが最終的に望むものに最も近いテンプレートから始めてください。@c
ソプラノとチェロのための楽譜を書きたいということにしましょう。@c
ここでは、@q{音符と歌詞} (ソプラノ パート用) から始めることにします。

@example
\version @w{"@version{}"}
melody = \relative c' @{
  \clef treble
  \key c \major
  \time 4/4
  a4 b c d
@}

text = \lyricmode @{
  Aaa Bee Cee Dee
@}

\score @{
  <<
    \new Voice = "one" @{
      \autoBeamOff
      \melody
    @}
    \new Lyrics \lyricsto "one" \text
  >>
  \layout @{ @}
  \midi @{ @}
@}
@end example

これにチェロ パートを追加していきます。@c
@q{音符のみ} のテンプレートを見てみましょう:

@example
\version @w{"@version{}"}
melody = \relative c' @{
  \clef treble
  \key c \major
  \time 4/4
  a4 b c d
@}

\score @{
  \new Staff \melody
  \layout @{ @}
  \midi @{ @}
@}
@end example

@code{\version} コマンドは 2 つも必要ありません。@c
@code{melody} セクションは必要です。@c
@code{\score} セクションは 2 つも必要ありません -- @code{\score} が 
2 つあると、2 つのパートがばらばらになります。@c
2 つのパートをデュオのように一緒にしたいのです。@c
@code{\score} セクションの中に @code{\layout} や @code{\midi} は 2 つも@c
必要ありません。

単に @code{melody} セクションをカット＆コピーした場合、@code{melody} 定義が 
2 つになります。@c
これはエラーにはなりませんが、2 番目の定義が両方の旋律で@c
使われることになります。@c
そのため、2 つの旋律を区別するためにリネームします。@c
ソプラノ用のセクションを @code{sopranoMusic} と呼び、チェロ用のセクションを 
@code{celloMusic} と呼ぶことにします。@c
リネームするときに、@code{text} を @code{sopranoLyrics} とりネームしましょう。@c
これらのインスタンスをリネームすることも忘れないでください −- 
初期定義 (@code{melody = \relative c' @{ } 部分) とその名前が@c
使われているところ (@code{\score セクションの中}) の両方です。

リネームする際に、チェロ パートの譜表も変更しましょう −- 通常、チェロは@c
低音部を使用します。@c
さらに、チェロの音符を変えてみます。

@example
\version @w{"@version{}"}
sopranoMusic = \relative c' @{
  \clef treble
  \key c \major
  \time 4/4
  a4 b c d
@}

sopranoLyrics = \lyricmode @{
  Aaa Bee Cee Dee
@}

celloMusic = \relative c @{
  \clef bass
  \key c \major
  \time 4/4
  d4 g fis8 e d4
@}

\score @{
  <<
    \new Voice = "one" @{
      \autoBeamOff
      \sopranoMusic
    @}
    \new Lyrics \lyricsto "one" \sopranoLyrics
  >>
  \layout @{ @}
  \midi @{ @}
@}
@end example

これでうまくいくように見えますが、チェロ パートが楽譜に表示されません −- 
チェロ パートを @code{\score} セクションの中で使っていないからです。@c
チェロ パートをソプラノ パートの下に表示させたいのなら、以下をソプラノの@c
譜の下に追加する必要があります:

@example
\new Staff \celloMusic
@end example

@noindent
さらに、音楽を @code{<<} と @code{>>} で囲む必要もあります −- これは LilyPond 
に複数のもの (この場合は 2 つの @code{Stave}) が同時に起こるということを@c
知らせます。@c
@code{\score} は以下のようになります:

@c Indentation in this example is deliberately poor
@example
\score @{
  <<
  <<
    \new Voice = "one" @{
      \autoBeamOff
      \sopranoMusic
    @}
    \new Lyrics \lyricsto "one" \sopranoLyrics
  >>
  \new Staff \celloMusic
  >>
  \layout @{ @}
  \midi @{ @}
@}
@end example

@noindent
これは少し見にくいです。@c
インデントがきちんと入っていません。@c
これは簡単に修正できます。@c
ここで、完成したソプラノとチェロ用のテンプレートを挙げます。

@lilypond[quote,verbatim,ragged-right,addversion]
sopranoMusic = \relative c' {
  \clef treble
  \key c \major
  \time 4/4
  a4 b c d
}

sopranoLyrics = \lyricmode {
  Aaa Bee Cee Dee
}

celloMusic = \relative c {
  \clef bass
  \key c \major
  \time 4/4
  d4 g fis8 e d4
}

\score {
  <<
    <<
      \new Voice = "one" {
        \autoBeamOff
        \sopranoMusic
      }
      \new Lyrics \lyricsto "one" \sopranoLyrics
    >>
    \new Staff \celloMusic
  >>
  \layout { }
  \midi { }
}
@end lilypond


@seealso
開始点となるテンプレートは付録 @q{テンプレート} で見つけることができます。@c
@ref{単一の譜表} を参照してください。
@c 単一の譜


@node 4 パート SATB ボーカル譜
@subsection 4 パート SATB ボーカル譜
@translationof Four-part SATB vocal score

@cindex template, SATB (SATB テンプレート)
@cindex SATB template (SATB テンプレート)

Mendelssohn の Elijah や Handel の Messiah などのオーケストラ伴奏付きの 
4 パート聖歌隊のために書かれたボーカル譜の多くは 4 つの譜上に@c
音符と歌詞を持ち、それぞれの譜は SATB (ソプラノ、アルト、テナー、バス) のうちの 
1 つであり、その下にオーケストラ伴奏のピアノ譜が付きます。@c
ここで、Handel の Messiah から例を挙げます:

@c The following should appear as music without code
@lilypond[quote,ragged-right]
global = { \key d \major \time 4/4 }
sopranoMusic = \relative c'' {
  \clef "treble"
  r4 d2 a4 | d4. d8 a2 | cis4 d cis2 |
}
sopranoWords = \lyricmode {
  Wor -- thy is the lamb that was slain
}
altoMusic = \relative a' {
  \clef "treble"
  r4 a2 a4 | fis4. fis8 a2 | g4 fis e2 |
}
altoWords = \sopranoWords
tenorMusic = \relative c' {
  \clef "G_8"
  r4 fis2 e4 | d4. d8 d2 | e4 a, cis2 |
}
tenorWords = \sopranoWords
bassMusic = \relative c' {
  \clef "bass"
  r4 d2 cis4 | b4. b8 fis2 | e4 d a'2 |
}
bassWords = \sopranoWords
upper = \relative a' {
  \clef "treble"
  \global
  r4 <a d fis>2 <a e' a>4 |
  <d fis d'>4. <d fis d'>8 <a d a'>2 |
  <g cis g'>4 <a d fis> <a cis e>2 |
}
lower = \relative c, {
  \clef "bass"
  \global
  <d d'>4 <d d'>2 <cis cis'>4 |
  <b b'>4. <b' b'>8 <fis fis'>2 |
  <e e'>4 <d d'> <a' a'>2 |
}

\score {
  <<  % combine ChoirStaff and PianoStaff in parallel
    \new ChoirStaff <<
      \new Staff = "sopranos" <<
        \set Staff.instrumentName = #"Soprano"
        \new Voice = "sopranos" { \global \sopranoMusic }
      >>
      \new Lyrics \lyricsto "sopranos" { \sopranoWords }
      \new Staff = "altos" <<
        \set Staff.instrumentName = #"Alto"
        \new Voice = "altos" { \global \altoMusic }
      >>
      \new Lyrics \lyricsto "altos" { \altoWords }
      \new Staff = "tenors" <<
        \set Staff.instrumentName = #"Tenor"
        \new Voice = "tenors" { \global \tenorMusic }
      >>
      \new Lyrics \lyricsto "tenors" { \tenorWords }
      \new Staff = "basses" <<
        \set Staff.instrumentName = #"Bass"
        \new Voice = "basses" { \global \bassMusic }
      >>
      \new Lyrics \lyricsto "basses" { \bassWords }
    >>  % end ChoirStaff

    \new PianoStaff <<
      \set PianoStaff.instrumentName = #"Piano"
      \new Staff = "upper" \upper
      \new Staff = "lower" \lower
    >>
  >>
}
@end lilypond

このレイアウトをそのまま提供するテンプレートはありません。@c
最も近いのは @q{SATB ボーカル譜と自動ピアノ伴奏譜} -- @ref{合唱} を@c
参照してください -- ですが、レイアウトを変更して、ボーカル パートから@c
自動的に生成されたものではないピアノ伴奏譜を付け加える必要があります。@c
ボーカル パートのための音楽と歌詞を保持している変数はそのまま使えますが、@c
ピアノ伴奏譜のための変数を付け加える必要があります。

テンプレートの @code{ChoirStaff} の中でコンテキストが出現する順序は上で@c
示したボーカル譜の順序と一致していません。@c
そのため、コンテキストを再配置して、それぞれの歌詞が対応する譜表の@c
すぐ下にくるようにします。@c
すべてのボイスは @code{\voiceOne} -- これがデフォルトです -- に@c
なるべきなので、@code{\voiceXXX} コマンドは削除すべきです。@c
さらに、テノールに対してハ音記号 (中音部記号) を指定する必要があります。@c
テンプレートの中で歌詞を指定する方法はまだ説明していませんので、@c
馴染みのある方法を使用する必要があります。@c
さらに、それぞれの譜に名前を追加すべきです。

以上のことを @code{ChoirStaff} に対して行います:

@example
    \new ChoirStaff <<
      \new Staff = "sopranos" <<
        \set Staff.instrumentName = #"Soprano"
        \new Voice = "sopranos" @{ \global \sopranoMusic @}
      >>
      \new Lyrics \lyricsto "sopranos" @{ \sopranoWords @}
      \new Staff = "altos" <<
        \set Staff.instrumentName = #"Alto"
        \new Voice = "altos" @{ \global \altoMusic @}
      >>
      \new Lyrics \lyricsto "altos" @{ \altoWords @}
      \new Staff = "tenors" <<
        \set Staff.instrumentName = #"Tenor"
        \new Voice = "tenors" @{ \global \tenorMusic @}
      >>
      \new Lyrics \lyricsto "tenors" @{ \tenorWords @}
      \new Staff = "basses" <<
        \set Staff.instrumentName = #"Bass"
        \new Voice = "basses" @{ \global \bassMusic @}
      >>
      \new Lyrics \lyricsto "basses" @{ \bassWords @}
    >>  % end ChoirStaff
@end example

次にピアノ パートに取り掛からなければなりません。@c
これは簡単です -- @q{ソロ ピアノ} テンプレートからピアノ パートを@c
引き抜いてくるだけです:

@example
\new PianoStaff <<
  \set PianoStaff.instrumentName = #"Piano  "
  \new Staff = "upper" \upper
  \new Staff = "lower" \lower
>>
@end example

そして、@code{upper} と @code{lower} に変数定義を付け加えます。

@code{ChoirStaff} を @code{PianoStaff} の上に置きたいので、それらを山括弧を@c
使って組み合わせなければなりません:

@example
<<  % combine ChoirStaff and PianoStaff one above the other
  \new ChoirStaff <<
    \new Staff = "sopranos" <<
      \new Voice = "sopranos" @{ \global \sopranoMusic @}
    >>
    \new Lyrics \lyricsto "sopranos" @{ \sopranoWords @}
    \new Staff = "altos" <<
      \new Voice = "altos" @{ \global \altoMusic @}
    >>
    \new Lyrics \lyricsto "altos" @{ \altoWords @}
    \new Staff = "tenors" <<
      \clef "G_8"  % tenor clef
      \new Voice = "tenors" @{ \global \tenorMusic @}
    >>
    \new Lyrics \lyricsto "tenors" @{ \tenorWords @}
    \new Staff = "basses" <<
      \clef "bass"
      \new Voice = "basses" @{ \global \bassMusic @}
    >>
    \new Lyrics \lyricsto "basses" @{ \bassWords @}
  >>  % end ChoirStaff

  \new PianoStaff <<
    \set PianoStaff.instrumentName = #"Piano"
    \new Staff = "upper" \upper
    \new Staff = "lower" \lower
  >>
>>
@end example

これらすべてを組み合わせて、上の例の 3 小節分の音楽を付け加えます:

@lilypond[quote,verbatim,ragged-right,addversion]
global = { \key d \major \time 4/4 }
sopranoMusic = \relative c'' {
  \clef "treble"
  r4 d2 a4 | d4. d8 a2 | cis4 d cis2 |
}
sopranoWords = \lyricmode {
  Wor -- thy is the lamb that was slain
}
altoMusic = \relative a' {
  \clef "treble"
  r4 a2 a4 | fis4. fis8 a2 | g4 fis fis2 |
}
altoWords = \sopranoWords
tenorMusic = \relative c' {
  \clef "G_8"
  r4 fis2 e4 | d4. d8 d2 | e4 a, cis2 |
}
tenorWords = \sopranoWords
bassMusic = \relative c' {
  \clef "bass"
  r4 d2 cis4 | b4. b8 fis2 | e4 d a'2 |
}
bassWords = \sopranoWords
upper = \relative a' {
  \clef "treble"
  \global
  r4 <a d fis>2 <a e' a>4 |
  <d fis d'>4. <d fis d'>8 <a d a'>2 |
  <g cis g'>4 <a d fis> <a cis e>2 |
}
lower = \relative c, {
  \clef "bass"
  \global
  <d d'>4 <d d'>2 <cis cis'>4 |
  <b b'>4. <b' b'>8 <fis fis'>2 |
  <e e'>4 <d d'> <a' a'>2 |
}

\score {
  <<  % combine ChoirStaff and PianoStaff in parallel
    \new ChoirStaff <<
      \new Staff = "sopranos" <<
        \set Staff.instrumentName = #"Soprano"
        \new Voice = "sopranos" { \global \sopranoMusic }
      >>
      \new Lyrics \lyricsto "sopranos" { \sopranoWords }
      \new Staff = "altos" <<
        \set Staff.instrumentName = #"Alto"
        \new Voice = "altos" { \global \altoMusic }
      >>
      \new Lyrics \lyricsto "altos" { \altoWords }
      \new Staff = "tenors" <<
        \set Staff.instrumentName = #"Tenor"
        \new Voice = "tenors" { \global \tenorMusic }
      >>
      \new Lyrics \lyricsto "tenors" { \tenorWords }
      \new Staff = "basses" <<
        \set Staff.instrumentName = #"Bass"
        \new Voice = "basses" { \global \bassMusic }
      >>
      \new Lyrics \lyricsto "basses" { \bassWords }
    >>  % end ChoirStaff

    \new PianoStaff <<
      \set PianoStaff.instrumentName = #"Piano  "
      \new Staff = "upper" \upper
      \new Staff = "lower" \lower
    >>
  >>
}
@end lilypond


@node ゼロから楽譜を構築する
@subsection ゼロから楽譜を構築する
@translationof Building a score from scratch

@cindex template, writing your own (自分自身のテンプレートを記述する)
@cindex example of writing a score (楽譜の書き方の例)
@cindex writing a score, example (楽譜の書き方の例)
@cindex score, example of writing (楽譜の書き方の例)

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

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

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

@example
\version @w{"@version{}"}
\header @{
  title = "Jesu, meine Freude"
  composer = "J S Bach"
@}
TimeKey = @{ \time 4/4 \key c \minor @}
ManualOneVoiceOneMusic = @{s1@}
ManualOneVoiceTwoMusic = @{s1@}
ManualTwoMusic = @{s1@}
PedalOrganMusic = @{s1@}

\score @{
@}
@end example

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

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

@example
  \new PianoStaff <<
    \new Staff = "ManualOne" <<
      \new Voice @{ \ManualOneVoiceOneMusic @}
      \new Voice @{ \ManualOneVoiceTwoMusic @}
    >>  % end ManualOne Staff context
    \new Staff = "ManualTwo" <<
      \new Voice @{ \ManualTwoMusic @}
    >>  % end ManualTwo Staff context
  >>  % end PianoStaff context
@end example

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

@example
<<  % PianoStaff and Pedal Staff must be simultaneous
  \new PianoStaff <<
    \new Staff = "ManualOne" <<
      \new Voice @{ \ManualOneVoiceOneMusic @}
      \new Voice @{ \ManualOneVoiceTwoMusic @}
    >>  % end ManualOne Staff context
    \new Staff = "ManualTwo" <<
      \new Voice @{ \ManualTwoMusic @}
    >>  % end ManualTwo Staff context
  >>  % end PianoStaff context
  \new Staff = "PedalOrgan" <<
    \new Voice @{ \PedalOrganMusic @}
  >>
>>
@end example

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

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

@example
\score @{
  <<  % PianoStaff and Pedal Staff must be simultaneous
    \new PianoStaff <<
      \new Staff = "ManualOne" <<
        \TimeKey  % set time signature and key
        \clef "treble"
        \new Voice @{ \voiceOne \ManualOneVoiceOneMusic @}
        \new Voice @{ \voiceTwo \ManualOneVoiceTwoMusic @}
      >>  % end ManualOne Staff context
      \new Staff = "ManualTwo" <<
        \TimeKey
        \clef "bass"
        \new Voice @{ \ManualTwoMusic @}
      >>  % end ManualTwo Staff context
    >>  % end PianoStaff context
    \new Staff = "PedalOrgan" <<
      \TimeKey
      \clef "bass"
      \new Voice @{ \PedalOrganMusic @}
    >>  % end PedalOrgan Staff
  >>
@}  % end Score context
@end example

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

@lilypond[quote,verbatim,ragged-right,addversion]
\header {
  title = "Jesu, meine Freude"
  composer = "J S Bach"
}
TimeKey = { \time 4/4 \key c \minor }
ManualOneVoiceOneMusic = \relative g' {
  g4 g f ees | d2 c2 |
}
ManualOneVoiceTwoMusic = \relative c' {
  ees16 d ees8~ ees16 f ees d c8 d~ d c~ |
  c c4 b8 c8. g16 c b c d |
}
ManualTwoMusic = \relative c' {
  c16 b c8~ c16 b c g a8 g~ g16 g aes ees |
  f ees f d g aes g f ees d e8~ ees16 f ees d |
}
PedalOrganMusic = \relative c {
  r8 c16 d ees d ees8~ ees16 a, b g c b c8 |
  r16 g ees f g f g8 c,2 |
  }

\score {
  <<  % PianoStaff and Pedal Staff must be simultaneous
    \new PianoStaff <<
      \new Staff = "ManualOne" <<
        \TimeKey  % set time signature and key
        \clef "treble"
        \new Voice { \voiceOne \ManualOneVoiceOneMusic }
        \new Voice { \voiceTwo \ManualOneVoiceTwoMusic }
      >>  % end ManualOne Staff context
      \new Staff = "ManualTwo" <<
        \TimeKey
        \clef "bass"
        \new Voice { \ManualTwoMusic }
      >>  % end ManualTwo Staff context
    >>  % end PianoStaff context
    \new Staff = "PedalOrgan" <<
      \TimeKey
      \clef "bass"
      \new Voice { \PedalOrganMusic }
    >>  % end PedalOrgan Staff context
  >>
}  % end Score context
@end lilypond


@node 変数と関数を用いて入力の手間を省く
@subsection 変数と関数を用いて入力の手間を省く
@translationof Saving typing with variables and functions

@cindex variables (変数)

これまでに、以下のような記述を見てきました:

@lilypond[quote,verbatim,ragged-right]
hornNotes = \relative c'' { c4 b dis c }
\score {
  {
    \hornNotes
  }
}
@end lilypond

これは音楽表記を最小化するのに役に立つ可能性があるということに@c
気付くかもしれません:

@lilypond[quote,verbatim,ragged-right]
fragmentA = \relative c'' { a4 a8. b16 }
fragmentB = \relative c'' { a8. gis16 ees4 }
violin = \new Staff { \fragmentA \fragmentA \fragmentB \fragmentA }
\score {
  {
    \violin
  }
}
@end lilypond

さらに、これらの変数 (変数、マクロ、(ユーザ定義) コマンドなどと呼ばれます) を@c
調整のために使うこともできます:

@lilypond[quote,verbatim,ragged-right]
dolce = \markup{ \italic \bold dolce }
padText = { \once \override TextScript #'padding = #5.0 }
fthenp=_\markup{ \dynamic f \italic \small { 2nd } \hspace #0.1 \dynamic p }
violin = \relative c'' {
  \repeat volta 2 {
    c4._\dolce b8 a8 g a b |
    \padText
    c4.^"hi there!" d8 e' f g d |
    c,4.\fthenp b8 c4 c-. |
  }
}
\score {
  {
    \violin
  }
\layout{ragged-right=##t}
}
@end lilypond

これらの明らかに変数は入力の手間を省くのに役立っています。@c
例えそれらの変数が 1 回しか使用されないとしても、@c
変数化することを考慮する価値があります -- 複雑さを減らします。@c
以前に使用した変数を使っていない例を見てみましょう。@c
それはとても読み難く、特に最後の行が読み難いです。

@example
violin = \relative c'' @{
  \repeat volta 2 @{
    c4._\markup@{ \italic \bold dolce @} b8 a8 g a b |
    \once \override TextScript #'padding = #5.0
    c4.^"hi there!" d8 e' f g d |
    c,4.\markup@{ \dynamic f \italic \small @{ 2nd @}
      \hspace #0.1 \dynamic p @} b8 c4 c-. |
  @}
@}
@end example

@c TODO Replace the following with a better example  -td
@c Skylining handles this correctly without padText

これまでに見てきたのは静的な置き換えです -- 
LilyPond は @code{@bs{}padText} を見ると、それを定義した内容 
(つまり、@code{padText=} の右側にあるもの) に置き換えます。

LilyPond は非静的な置き換えも処理できます (それらを関数と見なすことができます)。

@lilypond[quote,verbatim,ragged-right]
padText =
#(define-music-function (parser location padding) (number?)
  #{
    \once \override TextScript #'padding = #$padding
  #})

\relative c''' {
  c4^"piu mosso" b a b
  \padText #1.8
  c4^"piu mosso" d e f
  \padText #2.6
  c4^"piu mosso" fis a g
}
@end lilypond

変数を使うことは、LilyPond 入力構文に変更があった場合の作業を減らす@c
良い方法でもあります (@rprogram{古い入力ファイルをアップデートする} を参照してください)。@c
あなたがあなたの入力ファイルすべてに使用する単一の定義 
(@code{@bs{}dolce} のような) を持っていて、構文が変更された場合、@c
すべての @code{.ly} ファイルを変更する代わりに、@c
@code{@bs{}dolce} 定義をアップデートするだけで済みます。


@node 楽譜とパート
@subsection 楽譜とパート
@translationof Scores and parts

TODO: this is really old stuff from the really old tutorial.
Rewrite, fix, etc.  Or maybe delete entirely.  -gp
Include section on tags   -td
and then move to section 5. Working ...  -td

オーケストラ音楽では、すべての音符は 2 回譜刻されます。@c
1 回は演奏家のためのパート譜で、1 回は指揮者のための総譜で譜刻されます。@c
変数を使うことで二度手間を避けることができます。@c
音楽は 1 回、変数に入力されます。@c
その変数の内容は、パート譜と総譜の両方を生成するために使用されます。

音符を特別なファイルの中に定義すると便利です。@c
例えば、ファイル @code{horn-music.ly} は@c
以下のホルン/@/バスーン デュオのパートを保持しているとします:

@example
hornNotes = \relative c @{
  \time 2/4
  r4 f8 a cis4 f e d
@}
@end example

@noindent
個々のパートは、ファイルの中に以下の記述をすることによって作り出されます:

@example
\include "horn-music.ly"
\header @{
  instrument = "Horn in F"
@}

@{
 \transpose f c' \hornNotes
@}
@end example

以下の行:

@example
\include "horn-music.ly"
@end example

@noindent
は、ファイルの中でその行が置かれている場所で、@c
@file{horn-music.ly} の内容に置き換わり、@c
@code{hornNotes} はその後に定義されます。@c
コマンド @code{@bs{}transpose f@tie{}c'} は、@c
引数 @code{@bs{}hornNotes} は 5 度上へ移調すべきであるということを@c
示しています。@c
@code{f} の音は譜面に表記された @code{c'} で表され、@c
これは通常のフレンチ ホルンを F にチューニングすることに相当します。@c
この移調により出力は以下のようになります:

@lilypond[quote,ragged-right]
\transpose f c' \relative c {
  \time 2/4
  r4 f8 a cis4 f e d
}
@end lilypond

アンサンブルでは、しばしばボイスの 1 つが何小節も演奏されないことがあります。@c
これは特別な休符 -- 複小節休符 -- によって示されます。@c
これは大文字の @code{R} とその後に続く演奏時間 
(全音符には @code{1}、半音符には @code{2} などです) で入力されます。@c
この演奏時間に掛け算を行うことによって、@c
さらに長い休符を構築することができます。@c
例えば、以下の休符は 2/4 拍子で 3 小節分の長さになります:

@example
R2*3
@end example

この部分を譜刻するとき、複小節休符を圧縮する必要があります。@c
これは以下のラン-タイム変数を設定することによって行います:

@example
\set Score.skipBars = ##t
@end example

@noindent
このコマンドは @code{Score} コンテキストの中にある@c
プロパティ @code{skipBars} を真 (@code{##t}) にセットします。@c
この休符とオプションを上記の音楽の先頭に追加することによって、@c
以下のような結果になります:

@lilypond[quote,ragged-right]
\transpose f c' \relative c {
  \time 2/4
  \set Score.skipBars = ##t
  R2*3
  r4 f8 a cis4 f e d
}
@end lilypond

楽譜はすべての音楽を一緒にすることによって作り出されます。@c
他のボイスはファイル @file{bassoon-music.ly} の中の @code{bassoonNotes} の@c
中にあると仮定すると、楽譜は以下のような記述で作られます:

@example
\include "bassoon-music.ly"
\include "horn-music.ly"

<<
  \new Staff \hornNotes
  \new Staff \bassoonNotes
>>
@end example

@noindent
そして、以下のような楽譜になります:

@lilypond[quote,ragged-right]
\relative c <<
  \new Staff {
    \time 2/4 R2*3
    r4 f8 a cis4 f e d
  }
  \new Staff {
    \clef bass
    r4 d,8 f | gis4 c | b bes |
    a8 e f4 | g d | gis f
  }
>>
@end lilypond

