1 @c -*- coding: utf-8; mode: texinfo; documentlanguage: ja -*-
4 Translation of GIT committish: 499a511d4166feaada31114e097f86b5e0c56421
6 When revising a translation, copy the HEAD committish of the
7 version that you are working on. See TRANSLATION for details.
12 @c Translators: Yoshiki Sawada
13 @c Translation status: post-GDP
17 @translationof Fundamental concepts
20 チュートリアルではシンプルなテキスト ファイルから美しい楽譜を刻譜する方法を見@c
21 てきました。このセクションでは、同じように美しいがより複雑な楽譜を作り出すのに@c
22 必要とされるコンセプトとテクニックについて紹介します。
25 * LilyPond 入力ファイルの仕組み::
31 @node LilyPond 入力ファイルの仕組み
32 @section LilyPond 入力ファイルの仕組み
33 @translationof How LilyPond input files work
34 @c LilyPond 入力ファイルの仕組み
36 LilyPond の入力フォーマットは非常に自由な形式であり、経験豊富なユーザにとって@c
37 はファイルを構築する際の自由度が高いです。しかしながら、この自由度が新しいユー@c
38 ザにとっては混乱の元になります。このセクションではこの入力ファイルの構造につい@c
39 ていくつか説明します。しかしながら、簡潔さを保つためにいくつかの詳細については@c
40 目をつぶるかもしれません。入力フォーマットについての完全な記述は、@ruser{File structure} を参照してください。
44 * LilyPond ファイル構造の紹介::
45 * Score は (単一の) 複合的な音楽表記::
51 @node LilyPond ファイル構造の紹介
52 @subsection LilyPond ファイル構造の紹介
53 @translationof Introduction to the LilyPond file structure
57 @cindex file structure
59 LilyPond 入力ファイルの基本例は以下のようなものです:
62 \version @w{"@version{}"}
65 @var{...compound music expression...} % all the music goes here!
66 @var{...複合音楽表記...} % すべての音楽がここに入ります!
73 基本パターンは本当にさまざまです。しかしながら、この例は開始点として役に立ちま@c
83 これまで、あなたが見てきた例では @code{\score @{@}} コマンドを使用していません@c
84 でした。その理由は、あなたが LilyPond に与えたのが簡単な入力であった場合、@c
85 LilyPond が自動的に追加のコマンドを付け加えるからです。LilyPond は以下のような@c
112 言い換えると、入力が保持しているのが単一の音楽表記である場合、LilyPond はまる@c
113 でその音楽表記が上で示されたコマンドで包まれているかのように解釈します。
115 @cindex implicit contexts
116 @cindex contexts, implicit
118 @strong{一言警告!} LilyPond ドキュメントの中にある多くの例では、@code{\new
119 Staff} と @code{\new Voice} コマンドは暗黙的に作成されるために省略されていま@c
120 す。簡単な例ではそれでうまくいきますが、より複雑な例の場合 -- 特に追加のコマン@c
121 ドが使用される場合 -- コンテキストの暗黙的な作成は予想外の結果となる可能性があ@c
122 ります。多分、予期しない余分な譜が作成されるでしょう。コンテキストを明示的に作@c
123 成する方法は @ref{コンテキストとエングラーバ} で説明されています。
126 @warning{数行以上の音楽を入力する場合、常に譜とボイスを明示的に作成したほうが@c
129 今度は最初の例に戻って、@code{\score} コマンドについて検証します。他のことはデ@c
132 @code{\score} ブロックは常にただ 1 つの音楽表記を保持していなければなりませ@c
133 ん。そして、その音楽表記は @code{\score} コマンドのすぐ後に置かれなければなり@c
134 ません。音楽表記は単一の音符である場合もありますし、以下のような巨大な複合表記@c
135 である場合もあるということを覚えておいてください:
140 @var{...insert the whole score of a Wagner opera in here...}
141 @var{...ワーグナーのオペラの楽譜全体がここに入ります...}
147 すべては @code{@{ ... @}} の内部にあるため、それは 1 つの音楽表記であるとカ@c
150 以前見てきたように、@code{\score} ブロックは他のものを含む可能性もあります。例@c
173 これら 3 つのコマンド -- @code{\header}, @code{\layout}, @code{\midi} -- は特@c
174 別なものであるということに注意してください: バックスラッシュ (@code{@bs{}}) で@c
175 始まる他の多くのコマンドとは異なり、これらは音楽表記@emph{ではなく}、何らかの@c
176 音楽表記の一部でもありません。そのため、これらは @code{\score} ブロックの内部@c
177 に置かれるかもしれませんし、外部に置かれるかもしれません。実際、これらのコマン@c
178 ドは一般的に @code{\score} ブロックの外側に置かれます -- 例えば、このセク@c
179 ションの最初の例のように @code{\header} はしばしば @code{\score} コマンドの上@c
182 以前は見なかった他の 2 つのコマンドは @code{\layout @{ @}} と @code{\midi @{ @}}
183 です。それらが上記のように記述された場合、LilyPond はそれぞれ譜刻された出力と
184 MIDI 出力を作り出します。それらは表記リファレンスの @ruser{Score layout} と
185 @ruser{Creating MIDI files} で完全に記述されています。
189 @cindex scores, multiple
190 @cindex book block, implicit
191 @cindex implicit book block
195 あなたは複数の @code{\score} ブロックを記述するかもしれません。それらはそれぞ@c
196 れ別々の楽譜として扱われますが、それらは結合されて単一の出力ファイルに収められ@c
197 ます。@code{\book} コマンドは必要ありません -- このコマンドは暗黙的に 1 つ作成@c
198 されます。しかしながら、あなたが 1 つの @code{.ly} ファイルから別々に分かれた@c
199 出力ファイルを作成しようとするのなら、それぞれのセクションを異なる出力ファイル@c
200 に分けるために @code{\book} コマンドが使用されます: 各 @code{\book} ブロックは@c
205 各 @code{\book} ブロックは別々の出力ファイル (つまり PDF ファイル) を作成しま@c
206 す。あなたが明示的に @code{\book} コマンドを記述しなかった場合、LilyPond は暗@c
207 黙的に入力コードを @code{\book} ブロックで包み込みます。
209 各 @code{\score} ブロックは @code{\book} ブロック内部で別々の音楽表記のチャンク
212 @cindex layout block, effect of location
214 各 @code{\layout} ブロックはそのブロックを含んでいる @code{\score} ブロックや
215 @code{\book} ブロックに影響を与えます -- つまり、ある @code{\score} ブロックの@c
216 内部にある @code{\layout} ブロックはその @code{\score} ブロックにだけ影響を与@c
217 え、@code{\score} ブロックの外部にある (それゆえ、明示的あるいは暗黙的に
218 @code{\book} ブロックの中にある) @code{\layout} ブロックはその @code{\book} ブ@c
219 ロックの中にあるすべての @code{\score} に影響を与えます。
221 詳細は、@ruser{Multiple scores in a book} を参照してください。
222 @c 1 つの book の中にある複数の score
226 もう一つの重要な簡略表記は変数を定義することです。すべてのテンプレートがこれを@c
230 melody = \relative c' @{
239 LilyPond がこのファイルを見ると、@code{melody} の値 (イコール記号の後にあるす@c
240 べて) を記憶し、@code{\melody} と記述された箇所すべてにその値を挿入します。変@c
241 数の名前について特別なことは何もありません -- 変数名は @code{melody},
242 @code{global}, @code{TimeKey}, @code{pianorighthand}, @code{foofoobarbaz} など@c
243 となります。詳細は、@ref{変数と関数を用いて入力の手間を省く} を参照し@c
244 てください。変数名はアルファベットだけで構成されていて、LilyPond コマンド名と@c
245 異なっている限りは、ほぼどんな名前でも使用できるということを覚えておいてくださ@c
246 い。変数名の厳密な制限については、@ruser{File structure} で詳述されています。
247 @c 変数と関数を用いたタイピングの省力化
252 入力フォーマットの完全な定義は、@ruser{File structure} を参照してください。
256 @node Score は (単一の) 複合的な音楽表記
257 @subsection Score は (単一の) 複合的な音楽表記
258 @translationof Score is a (single) compound musical expression
259 @c Score は (単一の) 複合的な音楽表記
264 @cindex contents of a score block
265 @cindex score block, contents of
266 @cindex compound music expression
267 @cindex music expression, compound
269 前のセクション -- @ref{LilyPond ファイル構造の紹介} -- で
270 LilyPond 入力ファイルの一般的な構造について見てきました。しかしながら、我々は@c
271 最も重要な部分を飛ばしてきたようです: どうやって @code{\score} の後に記述する@c
273 @c LilyPond ファイル構造の紹介
275 我々はそのことを完全には飛ばしてきませんでした。この大きな謎は簡単なことであ@c
276 り、謎でもなんでも@emph{ないのです}。以下の行がこの謎についてすべてを説明して@c
280 @emph{@code{\score} ブロックは 1 つの複合音楽表記で始まらなくてはなりません。}
284 音楽表記と複合音楽表記が意味しているものを理解するには、チュートリアルの
285 @ref{音楽表記についての説明} を読み返すと役に立つかもしれません。そこで@c
286 は、小さな音楽表記 -- 音符から始めて、それから和音など -- から大きな音楽表記を@c
287 構築する方法を説明しています。今度は、大きな音楽表記からはじめて、その複雑さを@c
293 @{ % this brace begins the overall compound music expression
294 % この中括弧は複合音楽表記全体の開始点です
296 @var{...insert the whole score of a Wagner opera in here...}
297 @var{...ワーグナーのオペラの楽譜全体がここに入ります...}
299 @} % this brace ends the overall compound music expression
300 % この中括弧は複合音楽表記全体の終了点です
305 ワーグナーのオペラの長さはこのマニュアルの軽く 2 倍はあります。そのため、歌手@c
306 とピアノだけを加えることにします。このアンサンブルでは複数の譜をまとめて左端に@c
307 中括弧を付ける @code{StaffGroup} は必要ありません。そのため、それを削除しま@c
308 す。しかしながら、歌手とピアノが@emph{必要}です。
313 \new Staff = "singer" <<
315 \new PianoStaff = "piano" <<
322 歌手とピアノが同時進行であることを示すために @code{@{ ... @}} の代わりに
323 @code{<< ... >>} を使用するということを覚えておいてください。我々はボーカル
324 パートとピアノパートが同時進行であるということを明確に示したいのであり、どちら@c
325 かがもう一方の後に演奏されるのではないのです!歌手の譜表は一続きの音楽表記を 1
326 つだけ保持するため、歌手の譜表に対して << ... >> は必ずしも必要ありません。し@c
327 かしながら、譜表の中の音楽が 2 つの同時進行の音楽表記 -- つまり、2 つの同時進@c
328 行のボイスであるとか、歌詞付きの歌 -- である場合、中括弧の代わりに @code{<< ...
329 >>} を使う必要があります。後で実際の音楽を加えてみますが、ここではダミーの音符@c
332 @lilypond[verbatim,quote,ragged-right]
335 \new Staff = "singer" <<
336 \new Voice = "vocal" { c'1 }
339 \new PianoStaff = "piano" <<
340 \new Staff = "upper" { c'1 }
341 \new Staff = "lower" { c'1 }
348 更に詳細を加えていきます。歌手の譜表は @code{Voice} (LilyPond では、この用語は@c
349 音符のセットを参照するものであり、必ずしもボーカルの音符であるわけではありません
350 -- 例えば、一般にバイオリンは 1 つのボイスを演奏します) と歌詞を保持します。さ@c
351 らに、ピアノの譜表は上部譜表 (右手) と下部譜表 (左手) を保持します。
353 この段階で、音符の入力を開始することができます。@code{\new Voice = "vocal"} の@c
354 後の中括弧の中に、以下を書き加えることができます:
362 しかしながら、そのようにすると、@code{\score} セクションは非常に長くなり、何が@c
363 起こるのか理解しにくくなります。そのため、直接音符を付け加える代わりに変数を使@c
364 用しましょう。前のセクションで変数についての紹介を行いました。覚えていますよ@c
365 ね?では、いくつかの音符を加えて実際の楽譜の一部を作成してみましょう:
367 @lilypond[verbatim,quote,ragged-right]
368 melody = \relative c'' { r4 d8\noBeam g, c4 r }
369 text = \lyricmode { And God said, }
370 upper = \relative c'' { <g d g,>2~ <g d g,> }
371 lower = \relative c { b2 e2 }
375 \new Staff = "singer" <<
376 \new Voice = "vocal" { \melody }
379 \new PianoStaff = "piano" <<
380 \new Staff = "upper" { \upper }
381 \new Staff = "lower" {
391 音符 -- これは @code{\relative} の中で導入されたり、音楽表記の中に直接含まれて@c
392 います -- と歌詞 -- これは @code{\lyricmode} で導入されています -- の違いに気@c
393 をつけてください。前者は LilyPond に後に続く内容を音楽として解釈するように指示@c
394 し、後者はテキストとして解釈するように指示します。
396 @code{\score} セクションを書いている (あるいは読んでいる) とき、ゆっくりと注意@c
397 深く進めてください。外側から始めて、それから内部の細かな部分に取り組んでくださ@c
398 い。さらに、きちんとインデントを入れると非常に役に立ちます - これは、同じレベ@c
399 ルにある各要素はテキスト エディタの中で同じ水平位置から始まるということを保証@c
402 @code{\score} セクションを書いている (あるいは読んでいる) とき、ゆっくりと注意@c
403 深く進めてください。外側から始めて、それから内部の細かな部分に取り組んでくださ@c
404 い。さらに、きちんとインデントを入れると非常に役に立ちます -- これは、同じレベ@c
405 ルにある各要素はテキスト エディタの中で同じ水平位置から始まるということを保証@c
410 表記リファレンス: @ruser{Structure of a score}
416 @translationof Nesting music expressions
419 @cindex staves, temporary
420 @cindex temporary staves
423 すべての譜をファイルの始めに宣言することは必須ではありません; 譜はどこででも臨@c
424 時に導入される可能性があります。これはオッシアを作成する際に特に有用です --
425 @rglos{ossia} を参照してください。ここで、3 つの音符に対して臨時に新しい譜表を@c
426 導入する方法を示すちょっとした例を挙げます:
429 @lilypond[verbatim,quote,ragged-right]
446 音部記号のサイズは音部変更後に譜刻される音部記号のサイズ -- 行の開始点での音部@c
447 記号よりも少し小さい -- と同じであるということに注意してください。これは行の途@c
448 中で譜刻される音部記号全般に言えることです。
450 @cindex staff, positioning
452 オッシアは以下のように譜表の上に置かれるかもしれません:
454 @lilypond[verbatim,quote,ragged-right]
455 \new Staff = "main" {
462 alignAboveContext = #"main" }
470 この例は後で説明される @code{\with} を使用しています。このコマンドは単一の譜表@c
471 のデフォルトの振る舞いを変更することを意味します。ここでは、このコマンドは新し@c
472 い譜表をデフォルトの位置 (@qq{main} と呼ばれている譜表の下) ではなく、上に置く@c
477 オッシアはしばしば音部記号や拍子記号無しで描かれ、通常は小さなフォントで描かれ@c
478 ます。これらはまだ紹介されていない追加のコマンドを必要とします。@ref{オブジェクトのサイズ} と @ruser{Ossia staves} を参照してください。
484 @subsection ネストされない括弧とタイ
485 @translationof On the un-nestedness of brackets and ties
488 @cindex brackets, nesting
489 @cindex bracket types
490 @cindex brackets, enclosing vs. marking
492 これまでに LilyPond への入力ファイルを書く際に使用する括弧にはいくつかの種類が@c
493 あるということを見てきました。これらは異なる規則 -- 最初は混乱を引き起こす可能@c
494 性があります -- に従います。規則についての説明を行う前に、括弧の種類を再確認し@c
497 @c attempt to force this onto a new page
499 @multitable @columnfractions .3 .7
502 @item @code{@{ .. @}}
506 @item @code{<< .. >>}
509 @tab スラーの開始点と終了点を意味します
510 @item @code{\( .. \)}
511 @tab フレージング スラーの開始点と終了点を意味します
513 @tab 手動ビームの開始点と終了点を意味します
516 こららに対して、音符の間や音符をまたがって線を生成する他の構文を付け加えるべき@c
517 です: タイ (チルド @code{~} によって記述されます)、@c
518 連符 (@code{\times x/y @{..@}} として記述されます)、@c
519 グレイス ノート (@code{\grace@{..@}} として記述されます) です。
521 LilyPond 以外では、種類の異なる括弧が適切にネストされること -- @code{[ @{ ( .. )
522 @} ]} のように -- が一般的な使い方であり、括弧の終わりの順序は正確に括弧の始ま@c
523 りの順序と逆になります。このことは上記の表で @q{囲みます} という言葉で記述され@c
524 ている 3 種類の括弧に対しては@strong{必須}となります -- それらは適切にネストさ@c
525 れなければなりません。しかしながら、残りの括弧 -- 上記の表で @q{意味します} と@c
526 いう言葉で記述されいるものと、タイ、連符で使用されるもの -- はいかなる括弧とも@c
527 ネストされる必要は@strong{ありません}。実際、これらは何かを囲むという意味では@c
528 括弧ではありません -- それらは単に何かが始まる場所、終わる場所を示すためのマー@c
531 そのため、例えばフレージング スラーは手動で挿入されるビームの前に開始して、そ@c
532 の手動ビームの前に終わる可能性もあります -- たぶん音楽的ではないかもしれません@c
535 @lilypond[quote,verbatim,fragment,ragged-right,relative=2]
536 { g8\( a b[ c b\) a] }
539 一般に、種類の異なる括弧と連符、タイ、グレースノートに適用される括弧は自由に混@c
540 ぜ合わせられるかもしれません。以下の例では、ビームは連符の中にまで伸びていて (行
541 1)、スラーは連符の中にまで伸びていて (行 2)、ビームとスラーが連符の中にまで伸@c
542 びていて (行 3)、タイが 2 つの連符にまたがっていて、さらにフレージング スラー@c
543 が連符の外にまで伸びています (行 3 と 4)。
545 @lilypond[quote,verbatim,fragment,ragged-right]
547 r16[ g16 \times 2/3 {r16 e'8] }
548 g16( a \times 2/3 {b d) e' }
549 g8[( a \times 2/3 {b d') e'~]}
550 \times 4/5 {e'32\( a b d' e'} a'4.\)
557 @translationof Voices contain music
560 歌手は歌うボイスを必要とし、それゆえ LilyPond も歌う (演奏する) ボイスを必要と@c
561 します。楽譜の中にあるすべての楽器に対する実際の音楽はボイスの中に保持されます
562 -- このことは LilyPond すべてのコンセプトの中での最も基礎的なことです。
571 @subsection 私はボイスを聴いている
572 @translationof I'm hearing Voices
577 @cindex multiple voices
578 @cindex voices, multiple
579 @cindex Voice context
580 @cindex context, Voice
581 @cindex simultaneous music
582 @cindex music, simultaneous
583 @cindex concurrent music
584 @cindex music, concurrent
585 @cindex voices vs. chords
586 @cindex chords vs. voices
588 LilyPond の楽譜の中で最も低レベルで、最も基礎的であり、最も内部にあるレイヤは
589 @q{ボイス コンテキスト} または縮めて単に @q{ボイス} と呼ばれます。ボイスはとき@c
590 どき他の表記パッケージの中で @q{レイヤ} と呼ばれます。
592 実際、ボイス レイヤまたはコンテキストは音楽を保持することができる唯一のもので@c
593 す。ボイス コンテキストが明示的に宣言されていない場合、この章の始めで見てきた@c
594 ようにボイス コンテキストが 1 つ自動的に生成されます。オーボエなどといった楽器@c
595 は同時に 1 つの音符だけを演奏できます。そのような楽器のために書かれた音楽は単@c
596 声であり、ボイスを 1 つだけを必要とします。ピアノのように同時に複数の音符を演@c
597 奏することができる楽器はしばしば、それらが演奏することのできる同時進行の異なる@c
598 音符やリズムをエンコードするために、複数のボイスを必要とします。
600 もちろん、単一のボイスは和音の中で多くの音符を保持することができます。それで@c
601 は、複数のボイスが実際に必要とされるのはどんな場合なのでしょうか?まずは、4 つ@c
604 @lilypond[quote,verbatim,fragment,ragged-right,relative=1]
606 <d g>4 <d fis> <d a'> <d g>
609 この例は単一の角括弧からなる和音記号@code{< ... >} を使って表記することがで@c
610 き、必要とされるボイスは 1 つだけです。しかしながら、F シャープが A に移行する@c
611 際に、F シャープは実際には 8 分音符であり、そのあとに 8 分音符の G が続くとし@c
612 たらどうでしょうか?そのような場合、同時に開始されるが演奏時間が異なる 2 つの@c
613 音符を持つことになります: 4 分音符の D と 8 分音符の F シャープです。これらの@c
614 音符をどのように記述すればよいのでしょうか?これらの音符は和音として記述するこ@c
615 とはできません。なぜなら、和音の中の音符はすべて同じ演奏時間でなければならない@c
616 からです。そして、それらの音符は同時に開始しなければならないので、2 つのシー@c
617 ケンシャルな (連続した) 音符として記述することもできません。この場合は 2 つの@c
620 上記のことが LilyPond 入力構文でどのように達成されるのかを見てみましょう。
625 1 つの譜表に複数のボイスがある音楽断片を入力する最も簡単な方法は、各ボイスを@c
626 シーケンスに (続けて) 入力し (各ボイスを @code{@{...@}} の中に入れます)、それ@c
627 らのボイスを @code{<<...>>} を使って同時進行するよう組み合わせます。さらに、各@c
628 断片は、それぞれが別の断片であることを示すために、ダブル バックスラッシュ
629 @code{\\} で区切られなければなりません。ダブル バックスラッシュが無ければ、す@c
630 べての音符は単一のボイスの中に挿入され、通常はエラーとなります。このテクニック@c
631 は、大部分が単声であり、時々短い部分で多声になる楽曲に特に適しています。
633 以下では、上記の例の和音を 2 つのボイスに分け、経過音とスラーを付け加えています:
635 @lilypond[quote,verbatim,fragment,ragged-right,relative=2]
637 % Voice "1" Voice "2"
638 << { g4 fis8( g) a4 g } \\ { d4 d d d } >> |
641 この例では 2 番目のボイスのステムが下向きになっていることに気づいてください。
643 今度はもう 1 つ簡単な例を挙げてみます:
646 @lilypond[quote,verbatim,fragment,ragged-right,relative=2]
648 % Voice "1" Voice "2"
649 << { r4 g g4. a8 } \\ { d,2 d4 g } >> |
650 << { bes4 bes c bes } \\ { g4 g g8( a) g4 } >> |
651 << { a2. r4 } \\ { fis2. s4 } >> |
654 各小節で別々に @code{<< \\ >>} 構造を使用する必要はありません。各小節に音符が@c
655 少ししかないような音楽の場合、このレイアウトはコードの可読性を良くするのに役立@c
656 ちます。しかしながら、各小節に多くの音符がある場合、以下のように各ボイスを分離@c
659 @lilypond[quote,verbatim,fragment,ragged-right,relative=2]
675 @cindex voices, naming
676 @cindex voices crossing brackets
677 @cindex slurs crossing brackets
678 @cindex ties crossing brackest
680 この例にあるボイスは 2 つだけです。しかしながら、これと同じ構成にもっと多くの@c
681 バック スラッシュを付け加えることによって、3 つかそれ以上のボイスを持たせるこ@c
684 ボイス コンテキストは @code{"1"}, @code{"2"} などの名前を持ちます。各コンテキ@c
685 ストの中では、スラー、ステム、タイ、強弱記号などの垂直方向の向きは適切にセット@c
688 @lilypond[quote,verbatim,fragment]
689 \new Staff \relative c' {
692 % Voice "1" Voice "2" Voice "3"
693 << { g4 f e } \\ { r8 e4 d c8 ~ } >> |
694 << { d2 e2 } \\ { c8 b16 a b8 g ~ g2 } \\ { s4 b4 c2 } >> |
698 これらのボイスはすべてメインのボイスからは分かれています。メインのボイスの音符は
699 @code{<< .. >>} 構造の外にあるからです。この @code{<< .. >>} 構造を同時進行構@c
700 造と呼ぶことにしましょう。通常、スラーとタイは同じボイス内にある音符だけをつな@c
701 ぎます。そのため、スラーとタイは同時進行構造を出たり入ったりすることはありま@c
702 せん。反対に、同じ譜表上にある個々の同時進行構造で、平行の位置にあるボイスは同@c
703 じボイスになります。さらに、その他のボイス関連プロパティは同時進行構造をまた@c
704 がって持ち越されます。ここで、上記と同じ例で各ボイスに対して異なる色と音符玉を@c
705 割り当ててみます。あるボイスでの変更は他のボイスに影響を与えませんが、その後に@c
706 続く同じボイス (訳者: 平行位置にあるボイス) でその変更が維持されることに注意し@c
707 てください。さらに、タイでつながれた音符は、同じボイスとなる 2 つの同時進行構@c
708 造にまたがって分かれるかもしれないということに注意してください。
710 @lilypond[quote,verbatim]
711 \new Staff \relative c' {
730 { c8 b16 a b8 g ~ g2 }
740 @funindex \voiceOneStyle
741 @funindex \voiceTwoStyle
742 @funindex \voiceThreeStyle
743 @funindex \voiceFourStyle
744 @funindex \voiceNeutralStyle
746 コマンド @code{\voiceXXXStyle} は主にこのマニュアルのような教育目的のドキュ@c
747 メントで使用することを意図したものです。このコマンドは、各ボイスが容易に見分け@c
748 られるように、音符玉、ステム、ビームの色、それに音符玉のスタイルを変更します。@c
749 ボイス 1 は赤でダイアモンドの音符玉を持つようにセットされ、ボイス 2 は青で三角@c
750 形の音符玉を、ボイス 3 は緑で×付きの円を、ボイス 4 (ここでは使用されていません)
751 はマゼンダの×の音符玉を持つようにセットされます。@code{\voiceNeutralStyle}
752 (これもここでは使用されていません) は音符玉のスタイルをデフォルトに戻します。@c
753 後ほど、ユーザがこのようなコマンドを作成するための方法を見ていきます。@c
754 @ref{オブジェクトの可視性と色} と @ref{調整のために変数を使用する} を参@c
759 @cindex polyphony and relative note entry
760 @cindex relative note entry and polyphony
762 多声部は @code{\relative @{ @}} ブロック内の音符の相対関係を変えません。各音符@c
763 は直前の音符あるいは直前の和音の最初の音符との相対関係で計算されます。そのた@c
767 \relative c' @{ noteA << < noteB noteC > \\ noteD >> noteE @}
771 @code{noteB} は @code{noteA} との相対関係で決まり @*
772 @code{noteC} は @code{noteA} ではなく @code{noteB} との相対関係で決まり @*
773 @code{noteD} は @code{noteA} や @code{noteC} ではなく
774 @code{noteC} との相対関係で決まり @*
775 @code{noteE} は @code{noteA} ではなく @code{noteD} との相対関係で決まります。
777 各ボイスの中にある音符の音程がボイスごとに大きく離れている場合、各ボイスの始めに
778 @code{\relative} コマンドを置くと明瞭になるかもしれません:
781 \relative c' @{ noteA ... @}
783 \relative c'' @{ < noteB noteC > ... @}
785 \relative g' @{ noteD ... @}
787 \relative c' @{ noteE ... @}
790 最後に、もっと複雑な楽曲の中にあるボイスを分析してみましょう。以下は、ショパンの
791 Deux Nocturnes, Op 32 の 2 番の最初の 2 小節です。この例は、表記を記述するため@c
792 のテクニックをいくつか示すために、本章の後の方と次の章で使用されます。ですか@c
793 ら、今はコードの中にある意味不明に見えるものは無視して、音楽とボイスだけに注目@c
794 してください -- 込み入った内容は後ほど説明します。
796 @c The following should appear as music without code
797 @lilypond[quote,ragged-right]
798 \new Staff \relative c'' {
807 % Ignore these for now - they are explained in Ch 4
808 \once \override NoteColumn #'force-hshift = #0
810 \once \override NoteColumn #'force-hshift = #0.5
818 ステムの向きはしばしば 2 つの同時進行する旋律ラインのつながりを示すために使用@c
819 されます。ここでは、一番上の音符のステムはすべて上向きであり、下の方にある音符@c
820 のステムはすべて下向きです。これは、複数のボイスが必要とされているということを@c
823 しかしながら、複数のボイスが実際に必要とされるのは、同時に始まる音符が異なる演@c
824 奏時間を持つ場合です。最初の小節の 3 拍目を見てください。A フラットは付点 4 分@c
825 音符であり、F は 4 分音符、D フラットは半音符です。これらの音符を和音として記@c
826 述することはできません。なぜなら、和音の中の音符はすべて同じ演奏時間でなければ@c
827 ならないからです。これらの音符をシーケンシャルな (連続する) 音符として記述する@c
828 こともできません。なぜなら、これらの音符は同時に始まらなければならないからで@c
829 す。この箇所では 3 つのボイスが必要となり、以下に示すように一般的にはこの小節@c
830 全体を 3 つのボイスで記述します。そこでは、3 つのボイスに対して異なる音符玉と@c
831 色を割り当てています。もう一度繰り返しますが、この例のコードのことは後ほど説明@c
832 しますので、理解できないことは無視してください。
834 @c The following should appear as music without code
835 @c The three voice styles should be defined in -init
836 @lilypond[quote,ragged-right]
837 \new Staff \relative c'' {
848 \\ % No Voice three (we want stems down)
851 % Ignore these for now - they are explained in Ch 4
852 \once \override NoteColumn #'force-hshift = #0
854 \once \override NoteColumn #'force-hshift = #0.5
863 この音楽のコードをゼロから記述してみましょう。これから見ていくように、いくつか@c
864 の問題に遭遇します。すでに学んだように、最初の小節の音楽を 3 つのボイスに分け@c
865 て記述するために @code{<< \\ >>} 構造を使用します:
868 @lilypond[quote,verbatim,fragment,ragged-right]
869 \new Staff \relative c'' {
872 { c2 aes4. bes8 } \\ { aes2 f4 fes } \\ { <ees c>2 des2 }
879 @cindex voices and stem directions
880 @cindex stem directions and voices
883 ステムの向きは自動的に割り当てられ、奇数番号のボイスが上向きのステム、偶数番号@c
884 のボイスが下向きのステムを持ちます。ボイス 1 と 2 のステムは正しいのですが、ボ@c
885 イス 3 のステムはここでは下向きになるべきです。これは単純にボイス 3 を省略し@c
886 て、その音楽をボイス 4 に記述することによって修正できます:
888 @lilypond[quote,verbatim,fragment,ragged-right]
889 \new Staff \relative c'' {
895 \\ % Omit Voice three
904 これによりステムの向きが修正されました。しかしながら、複数のボイスを持つ場合に@c
905 しばしば発生する問題に遭遇してしまいました -- あるボイスの中にある音符のステム@c
906 が他のボイスの中にある音符玉と衝突しています。音符をレイアウトするときに、@c
907 LilyPond は 2 つのボイスのステムの向きを反対にすることによって 2 つのボイスの@c
908 音符や和音が同じ垂直方向の音符列に位置することを可能にします。しかしながら、3
909 番目や 4 番目のボイスは音符玉の衝突を避けるために必要があれば移動させられま@c
910 す。これは普通はうまくいきますが、この例では一番下のボイスの音符はデフォルトの@c
911 状態では明らかにうまくいっていません。LilyPond は音符の水平方向位置を調節する@c
912 ためにいくつかの手段を提供します。我々はまだこの問題を修正するための方法を見て@c
913 いく準備が整っていないので、この問題は後に残しておくことにします --
914 @ref{表記の重なりを修正する} の @code{force-hshift} プロパティを参照して@c
919 表記リファレンス: @ruser{Multiple voices}
923 @node ボイスの明示的なインスタンス化
924 @subsection ボイスの明示的なインスタンス化
925 @translationof Explicitly instantiating voices
932 @funindex \voiceThree
939 @cindex voice contexts, creating
941 多声部音楽を作成するためにボイス コンテキストを手動で @code{<< >>} ブロックの@c
942 中に作成することもできます。ステム、スラーなどの向きを示すために
943 @code{\voiceOne} ... @code{\voiceFour} を使用します。この手法は各ボイスを別々@c
944 にして、より記述的な名前を与えることを可能にするため、長い楽譜ではわかりやすい@c
947 本質的には、前のセクションで使用した構造 @code{<< \\ >>}:
952 << @{ e4 f g a @} @bs{}@bs{} @{ c,4 d e f @} >>
962 \new Voice = "1" @{ \voiceOne \relative c' @{ e4 f g a @} @}
963 \new Voice = "2" @{ \voiceTwo \relative c' @{ c4 d e f @} @}
969 @c The following example should not display the code
970 @lilypond[ragged-right,quote]
972 \new Voice = "1" { \voiceOne \relative c' { e4 f g a } }
973 \new Voice = "2" { \voiceTwo \relative c' { c4 d e f } }
977 @cindex voices, reverting to single
978 @cindex reverting to a single voice
980 @code{\voiceXXX} コマンドはステム、スラー、タイ、アーティキュレーション、テキ@c
981 ストの注釈、付点音符の付点、運指記号の向きをセットします。@code{\voiceOne} と
982 @code{\voiceThree} はこれらのオブジェクトを上向きにし、一方の @code{\voiceTwo}
983 と @code{\voiceFour} は下向きにします。さらに、音符の玉の衝突を避ける必要があ@c
984 る場合、これらのコマンドは各ボイスに対して水平方向のシフトを発生させます。コ@c
985 マンド @code{\oneVoice} は設定を単一のボイスの場合の通常値に戻します。
987 いくつかの簡単な例で、@code{\oneVoice}, @code{\voiceOne}, @code{\voiceTwo} が@c
988 マークアップ、タイ、スラー、強弱記号に与える影響を見ていきましょう:
990 @lilypond[quote,ragged-right,verbatim]
992 % Default behavior or behavior after \oneVoice
993 c d8 ~ d e4 ( f g a ) b-> c
997 @lilypond[quote,ragged-right,verbatim]
1000 c d8 ~ d e4 ( f g a ) b-> c
1002 c, d8 ~ d e4 ( f g a ) b-> c
1006 @lilypond[quote,ragged-right,verbatim]
1009 c d8 ~ d e4 ( f g a ) b-> c
1011 c, d8 ~ d e4 ( f g a ) b-> c
1015 今度は、前のセクションの例を使って同じ多声部音楽のパッセージを 3 つの異なる方@c
1016 法で表記する例を見ていきます。それぞれ異なる状況で利点があります。
1018 1 つはメイン ボイスに属する @code{<< >>} の内部に直接表記を記述する方法です
1019 (しかしながら、音符は @code{<< \\ >>} 構造の中に置かれては@strong{いません})。@c
1020 これはメイン ボイスの途中で追加のボイスが現れる場合に有用です。ここでは例にさ@c
1021 らに調整を加えます。赤のダイアモンド形の音符はメイン メロディが単一のボイス
1022 コンテキストになっていて、その上にフレージング スラーを描くことができるという@c
1025 @lilypond[quote,ragged-right,verbatim]
1026 \new Staff \relative c' {
1028 % The following notes are monophonic
1030 % Start simultaneous section of three voices
1032 % Continue the main voice in parallel
1034 % Initiate second voice
1036 % Set stems, etc, down
1038 r8 e4 d c8 ~ | c8 b16 a b8 g ~ g2
1040 % Initiate third voice
1042 % Set stems, etc, up
1050 @cindex nesting music expressions
1051 @cindex nesting simultaneous constructs
1052 @cindex nesting voices
1053 @cindex voices, temporary
1054 @cindex voices, nesting
1056 多声部構造をより深くネストさせることが可能であり、追加のボイスが短時間のもので@c
1057 あるならば、こちらの方がより自然な音楽表記方法であるかもしれません:
1059 @lilypond[quote,ragged-right,verbatim]
1060 \new Staff \relative c' {
1068 {c8 b16 a b8 g ~ g2}
1079 @cindex spacing notes
1081 新しいボイスを一時的にネストさせる手法は音楽のほんの一部だけが多声である場合に@c
1082 有用です。しかしながら、楽譜全体が多声である場合、一貫して複数のボイスを使用し@c
1083 た方がわかりやすくなります。ボイスが無音の場所を飛ばすには以下のように空白音符@c
1086 @lilypond[quote,ragged-right,verbatim]
1087 \new Staff \relative c' <<
1088 % Initiate first voice
1091 c16^( d e f g4 f e | d2 e2) |
1093 % Initiate second voice
1095 % Set stems, etc, down
1097 s4 r8 e4 d c8 ~ | c8 b16 a b8 g ~ g2 |
1099 % Initiate third voice
1101 % Set stems, etc, up
1113 @cindex note collisions
1114 @cindex collisions, notes
1115 @cindex shift commands
1122 @funindex \shiftOnnn
1125 和音の中で小さな間隔で置かれる音符、あるいは異なるボイスで同時に発生する音符@c
1126 は、音符の玉が重なるのを避けるために 2 列、時にはそれ以上の列に割り振られま@c
1127 す。これらの列は音符列と呼ばれます。それぞれのボイスに対して別々の列が存在し、@c
1128 音符の玉の衝突が起こる場合はボイスごとのシフトが適用されます。これは上の例でも@c
1129 見ることができます。2 小節目でボイス 2 の C はボイス 1 の D との関係で右にシフ@c
1130 トされていて、最後の和音でボイス 3 の C も他の音符との関係で右にシフトされてい@c
1133 @code{\shiftOn}, @code{\shiftOnn}, @code{\shiftOnnn}, それに @code{\shiftOff}
1134 コマンドは、衝突が起こる場合に音符や和音をシフトさせる度合いを指定します。デ@c
1135 フォルトでは、外側のボイス (通常はボイス 1 と 2) には @code{\shiftOff} が指定@c
1136 されていて、内側のボイス (ボイス 3 と 4) には @code{\shiftOn} が指定されていま@c
1137 す。シフトが適用される場合、ボイス 1 と 3 は右にシフトされ、ボイス 2 と 4は左@c
1140 @code{\shiftOnn} と @code{\shiftOnnn} はさらなるシフト レベルを定義するもので@c
1141 あり、複雑な状況での衝突を解決するために一時的に指定されるかもしれません --
1142 @ref{実際の音楽からの例} を参照してください。
1145 ある音符列は上向きのステムを持つボイスからの音符 (あるいは和音) を 1 つだけ、@c
1146 下向きのステムを持つボイスからの音符 (あるいは和音) を 1 つだけ保持することが@c
1147 できます。同じ向きのステムを持つ 2 つのボイスからの音符が同じ位置に置かれ、両@c
1148 方のボイスにシフトが指定されていない、あるいは同じシフトが指定されている場合、@c
1149 エラー メッセージ @qq{Too many clashing note columns} (音符が多すぎて音符列で@c
1150 衝突が起こっています) が生成されます。
1154 表記リファレンス: @ruser{Multiple voices}
1159 @subsection ボイスとボーカル
1160 @translationof Voices and vocals
1163 声楽には特別な困難があります: 2 つの表記 -- 音符と歌詞 -- を組み合わせる必要が@c
1166 @funindex \new Lyrics
1170 @cindex Lyrics context, creating
1171 @cindex lyrics, linking to voice
1173 すでに @code{\addlyrics@{@}} コマンドを見てきました。これは簡単な楽譜であれば@c
1174 うまく処理できます。しかしながら、この方法では限界があります。より複雑な音楽で@c
1175 は、@code{\new Lyrics} を使って歌詞を @code{Lyrics} コンテキストに取り込み、ボ@c
1176 イスに割り当ている名前を使って @code{\lyricsto@{@}} でその歌詞を明示的に音符に@c
1179 @lilypond[quote,verbatim,fragment]
1181 \new Voice = "one" \relative c'' {
1184 c4 b8. a16 g4. f8 e4 d c2
1186 \new Lyrics \lyricsto "one" {
1187 No more let sins and sor -- rows grow.
1192 歌詞は @code{Staff} コンテキスト@emph{ではなく} @code{Voice} コンテキストに@c
1193 リンクさせなければならないということに注意してください。このため、@code{Staff}
1194 コンテキストと @code{Voice} コンテキストを明示的に作成する必要があります。
1196 @cindex lyrics and beaming
1197 @cindex beaming and lyrics
1198 @funindex \autoBeamOff
1199 @funindex autoBeamOff
1201 LilyPond がデフォルトで使用する自動ビームは楽器だけの音楽ではうまく機能します@c
1202 が、歌詞を持つ音楽ではそれほどうまく機能しません。そこではビームはまったく必要@c
1203 ないか、歌詞のメリスマ (訳者注: 歌詞の 1 音節に対して複数の音符を割り当てること)
1204 を示すために使用されるかのどちらかです。上の例では、自動ビームを Off にするた@c
1205 めにコマンド @code{\autoBeamOff} を使用しています。
1207 @funindex \new ChoirStaff
1208 @funindex ChoirStaff
1209 @funindex \lyricmode
1211 @cindex vocal score structure
1214 以前使用した Judas Maccabæus からの例を再度使用して、より自由度の高い方法を示@c
1215 します。まず、楽譜の内容を変数に振り直し、音楽と歌詞を譜表構造から分離させま@c
1216 す。さらに @code{ChoirStaff} ブラケットを導入します。歌詞自体は、音楽ではなく@c
1217 歌詞として解釈されることを保証するために、@code{\lyricsmode} で導入されなけれ@c
1220 @lilypond[quote,verbatim]
1221 global = { \time 6/8 \partial 8 \key f \major}
1222 SopOneMusic = \relative c'' {
1223 c8 | c([ bes)] a a([ g)] f | f'4. b, | c4.~ c4 }
1224 SopTwoMusic = \relative c' {
1225 r8 | r4. r4 c8 | a'([ g)] f f([ e)] d | e([ d)] c bes' }
1226 SopOneLyrics = \lyricmode {
1227 Let | flee -- cy flocks the | hills a -- dorn, __ }
1228 SopTwoLyrics = \lyricmode {
1229 Let | flee -- cy flocks the | hills a -- dorn, }
1234 \new Voice = "SopOne" {
1238 \new Lyrics \lyricsto "SopOne" {
1243 \new Voice = "SopTwo" {
1247 \new Lyrics \lyricsto "SopTwo" {
1255 これはすべての声楽譜の基本的な構造です。必要に応じてさらに多くの譜が追加される@c
1256 かもしれませんし、さらに多くのボイスが譜に追加されるかもしれませんし、さらに多@c
1257 くの歌詞 (原文: verse、各ボイスに対する歌詞、あるいは、歌詞の 1 番、2 番のこと@c
1258 を指すと思われる) が歌詞に追加されるかもしれません。音楽部分が長くなりすぎた場@c
1259 合は、音楽を保持している変数を容易に別のファイルに置くことができます。
1261 @cindex hymn structure
1262 @cindex SATB structure
1263 @cindex vocal scores with multiple verses
1264 @cindex multiple vocal verses
1265 @cindex verses, multiple vocal
1267 ここで、例として 4 つの歌詞 -- それぞれが SATB (ソプラノ、アルト、テナー、バス)
1268 に対してセットされている -- を持つ賛美歌の最初の 1 行目を取り上げます。この歌@c
1269 の場合、4 つのパートに対する歌詞の言葉は同じです。変数を使用して音楽表記と歌詞@c
1270 の言葉を譜表構造から分離させている手法に注意してください。さらに、 @q{TimeKey}
1271 と呼ぶことにした変数が、2 つの譜で使用されるいくつかのコマンドを保持するため@c
1272 に、使用されていることにも注意してください。他の例では、この変数はしばしば
1275 @lilypond[quote,verbatim]
1276 TimeKey = { \time 4/4 \partial 4 \key c \major}
1277 SopMusic = \relative c' { c4 | e4. e8 g4 g | a a g }
1278 AltoMusic = \relative c' { c4 | c4. c8 e4 e | f f e }
1279 TenorMusic = \relative c { e4 | g4. g8 c4. b8 | a8 b c d e4 }
1280 BassMusic = \relative c { c4 | c4. c8 c4 c | f8 g a b c4 }
1281 VerseOne = \lyricmode {
1282 E -- | ter -- nal fa -- ther, | strong to save, }
1283 VerseTwo = \lyricmode {
1284 O | Christ, whose voice the | wa -- ters heard, }
1285 VerseThree = \lyricmode {
1286 O | Ho -- ly Spi -- rit, | who didst brood }
1287 VerseFour = \lyricmode {
1288 O | Tri -- ni -- ty of | love and pow'r }
1294 \new Voice = "Sop" { \voiceOne \TimeKey \SopMusic }
1295 \new Voice = "Alto" { \voiceTwo \AltoMusic }
1296 \new Lyrics \lyricsto "Sop" { \VerseOne }
1297 \new Lyrics \lyricsto "Sop" { \VerseTwo }
1298 \new Lyrics \lyricsto "Sop" { \VerseThree }
1299 \new Lyrics \lyricsto "Sop" { \VerseFour }
1303 \new Voice = "Tenor" { \voiceOne \TimeKey \TenorMusic }
1304 \new Voice = "Bass" { \voiceTwo \BassMusic }
1310 @cindex verse and refrain
1312 最後に、2 つの譜の 2 パートのリフレイン (繰り返し) につながる単一の歌詞の節を@c
1313 コードする方法を示す例を挙げます。これを 1 つの楽譜で達成するためのシークエン@c
1314 シャル部分と同時進行部分の配置の仕方は非常にトリッキーです。そのため、説明を注@c
1317 コーラスの開始点でブレースを表示させたいので、@code{ChoirStaff} を保持する score
1318 ブロックで始めます。通常、すべての譜を並列にするために @code{\new ChoirStaff}
1319 の後に角括弧を置く必要があります。角括弧を使用しても害はありませんが、ここでは@c
1320 コーラスまで並列化を先延ばししたいのでブレースを使用します。@code{ChoirStaff}
1321 の中で、まず最初に歌詞を保持する譜表を置く必要があります。音符と歌詞を並列に並@c
1322 べなければならないので、@code{\new Voice} と @code{\new Lyrics} を同時に開始さ@c
1325 @lilypond[quote,verbatim,ragged-right]
1326 versenotes = \relative c'' {
1329 \time 3/4 g g g b b b
1331 versewords = \lyricmode {
1332 One two three four five six
1337 \new Voice = "verse" {
1340 \new Lyrics \lyricsto verse {
1350 今度は、refainA を同じ譜表で続けて、それと並列に refrainB のためにもう 1 つ譜@c
1351 表を導入する必要があります。そのため、この並列部分は verse Voice の中の
1352 @code{\break} の直後に置かれなければなりません。そうです、verse Voice の@c
1353 @emph{中に}です!ここで並列部分を示します。同じ要領でここにもっと多くの譜を導@c
1359 \new Lyrics \lyricsto verse @{
1363 \new Voice = "refrainB" @{
1366 \new Lyrics \lyricsto "refrainB" @{
1373 ここで最終結果を示します。これはコーラスになっている 2 つの譜を持ち、並列部分@c
1374 がどのように verse Voice の中に置かれるかを示しています:
1376 @lilypond[quote,verbatim, ragged-right]
1377 versenotes = \relative c'' {
1380 \time 3/4 g g g b b b
1382 refrainnotesA = \relative c'' {
1386 refrainnotesB = \relative c {
1391 versewords = \lyricmode {
1392 One two three four five six
1394 refrainwordsA = \lyricmode {
1397 refrainwordsB = \lyricmode {
1403 \new Voice = "verse" {
1407 \new Lyrics \lyricsto "verse" {
1411 \new Voice = "refrainB" {
1414 \new Lyrics \lyricsto "refrainB" {
1420 \new Lyrics \lyricsto "verse" {
1428 @cindex book, example of using
1432 これはシークエンシャル ブロックと同時進行ブロックがどのように機能するかを理解@c
1433 するための手助けとしては興味深く有用です。しかしながら、実際にこれをコードする@c
1434 場合は、恐らく以下のように暗黙の @code{\book} ブロック内部に 2 つの
1435 @code{\score} ブロックを置くようにするでしょう:
1437 @lilypond[quote,verbatim,ragged-right]
1438 versenotes = \relative c'' {
1441 \time 3/4 g g g b b b
1443 refrainnotesA = \relative c'' {
1447 refrainnotesB = \relative c {
1452 versewords = \lyricmode {
1453 One two three four five six
1455 refrainwordsA = \lyricmode {
1458 refrainwordsB = \lyricmode {
1463 \new Voice = "verse" {
1466 \new Lyrics \lyricsto "verse" {
1475 \new Voice = "refrainA" {
1478 \new Lyrics \lyricsto "refrainA" {
1483 \new Voice = "refrainB" {
1486 \new Lyrics \lyricsto "refrainB" {
1496 表記リファレンス: @ruser{Vocal music}
1501 @section コンテキストとエングラーバ
1502 @translationof Contexts and engravers
1505 これまでに、コンテキストとエングラーバについて簡単に言及してきました。ここで@c
1506 は、これらのコンセプトをより詳細に見ていくことにします。なぜなら、これらは
1507 LilyPond 出力をうまく調節するのに重要だからです。
1514 * コンテキスト プロパティを変更する::
1515 * エングラーバを追加 / 削除する::
1520 @subsection コンテキストの説明
1521 @translationof Contexts explained
1524 @cindex contexts explained
1526 音楽が譜刻されるとき、入力ファイルでははっきりとは現れてこない多くの表記要素を@c
1527 出力に追加しなければなりません。例えば、以下の例で入力と出力を比較してください:
1529 @lilypond[quote,verbatim,relative=2,fragment]
1533 この入力は内容がやや乏しいですが、出力では小節線、臨時記号、音部記号、拍子記号@c
1534 が追加されています。LilyPond が入力を@emph{解釈}するとき、音楽情報は時系列に調@c
1535 べられます。これは楽譜を左から右へ読むのと似ています。入力を読み込んでいる間、@c
1536 プログラムは小節の境目となる場所と明示的な臨時記号を必要とする音高を覚えていま@c
1537 す。この情報はいくつかのレベルで持続されなければなりません。例えば、臨時記号の@c
1538 効果は単一の譜表に制限されますが、小節線は楽譜全体に亘って同調されなければなり@c
1541 LilyPond 内部では、これらの規則と情報ビットは@emph{コンテキスト}にグループ化さ@c
1542 れます。すでに @code{Voice} コンテキストを見てきました。他にも、@code{Staff}
1543 コンテキストと @code{Score} コンテキストがあります。コンテキストは、楽譜の階層@c
1544 構造を反映するために、階層構造になっています。例えば: @code{Staff} コンテキス@c
1545 トは多くの @code{Voice} コンテキストを保持することができ、@code{Score} コンテ@c
1546 キストは多くの @code{Staff} コンテキストを保持することができます。
1549 @sourceimage{context-example,5cm,,}
1552 各コンテキストは、いくつかの表記オブジェクトを作成し、関連プロパティを維持しな@c
1553 がら、いくつかの表記規則を施行する責任があります。例えば、@code{Voice} コンテ@c
1554 キストは臨時記号を作り出すかもしれず、そうした場合 @code{Staff} コンテキストは@c
1555 その小節の残りの部分で臨時記号を表示したり隠したりするための規則を維持します。
1557 他の例としては、小節線の同調はデフォルトでは @code{Score} コンテキストが扱いま@c
1558 す。しかしながら、いくつかの音楽では小節線を同調させたくない場合もあります --
1559 4/4 拍子と 3/4 拍子の多声の楽譜といった場合です。そのようなケースでは、@c
1560 @code{Score} と @code{Staff} コンテキストのデフォルト設定を変更しなければなり@c
1563 非常にシンプルな楽譜では、コンテキストは暗黙的に作成され、あなたはそれらに気づ@c
1564 く必要もありません。複数の譜表を持つようなより大きな楽曲では、あなたが必要とし@c
1565 ているだけの譜を手に入れられるよう、さらに、それらの譜が正しい順序で並ぶことを@c
1566 保証するために、コンテキストを明示的に作成する必要があります。特殊な表記を持つ@c
1567 楽曲を譜刻するには、通常は既存のコンテキストを変更します。あるいは完全に新しい@c
1568 コンテキストを定義することさえあります。
1570 @code{Score}, @code{Staff}, @code{Voice} コンテキストに加えて、@code{PianoStaff}
1571 や @code{ChoirStaff} コンテキストといった譜表グループを制御するための、楽譜レ@c
1572 ベルと譜表レベルの間にあるコンテキストがあります。さらに、代替の譜表コンテキス@c
1573 トとボイスコンテキストがあり、歌詞、打楽器、フレットボード (訳者: 弦楽器の一@c
1574 種。フレットでウィキぺディアを参照)、通奏低音 (数字付き低音、原文: figured bass)
1577 すべてのコンテキスト タイプの名前は 1 つ、あるいは複数の単語からなります。各単@c
1578 語の最初の文字は大文字であり、前の単語のすぐあとに次の単語が続きます。ハイフン@c
1579 やアンダスコアは使いません。つまり @code{GregorianTranscriptionStaff} といった@c
1584 表記リファレンス: @ruser{コンテキストの説明}
1589 @subsection コンテキストを作成する
1590 @translationof Creating contexts
1595 @cindex new contexts
1596 @cindex creating contexts
1597 @cindex contexts, creating
1599 最上位にあるコンテキストは 1 つだけです: @code{Score} コンテキストです。これは
1600 @code{\score} コマンドによって作成されます。また、簡単な楽譜では、これは自動的@c
1603 1 つだけのボイスと 1 つだけの譜表を持つ楽譜では、@code{Voice} と @code{Staff}
1604 コンテキストは自動的に作成されるために放っておかれるかもしれません。しかしなが@c
1605 ら、より複雑な楽譜では、これらを手ずから作成する必要があります。これらを作成す@c
1606 る最も簡単なコマンドは @code{\new} です。これは音楽表記の前に置きます。例を挙@c
1610 \new @var{type} @var{music-expression}
1615 ここで、@var{type} はコンテキスト名です (@code{Staff} や @code{Voice} など)。@c
1616 このコマンドは新しいコンテキストを作成し、そのコンテキストの中にある
1617 @var{music-expression} の解釈を開始します。
1619 @code{\new Score} というコマンドは無いということに注意してください。単一の最上位
1620 @code{Score} コンテキストは @code{\score} で作成されます。
1622 これまでに、新たに @code{Staff} と @code{Voice} コンテキストを作成する多くの実@c
1623 際的な例を見てきましたが、これらのコマンドが実際にどのように使用されるのかを覚@c
1624 えてもらうために、実際の音楽に注釈を付けた例を挙げます:
1626 @lilypond[quote,verbatim,ragged-right]
1627 \score { % start of single compound music expression
1628 << % start of simultaneous staves section
1630 \new Staff { % create RH staff
1633 \new Voice { % create voice for RH notes
1634 \relative c'' { % start of RH notes
1640 \new Staff << % create LH staff; needs two simultaneous voices
1643 \new Voice { % create LH voice one
1645 \relative g { % start of LH voice one notes
1646 g8 <bes d> ees, <g c> |
1647 g8 <bes d> ees, <g c> |
1648 } % end of LH voice one notes
1649 } % end of LH voice one
1650 \new Voice { % create LH voice two
1652 \relative g { % start of LH voice two notes
1655 } % end of LH voice two notes
1656 } % end of LH voice two
1657 >> % end of LH staff
1658 >> % end of simultaneous staves section
1659 } % end of single compound music expression
1662 (中括弧 @code{@{} や 2 重角括弧 @code{<<} の中でブロックになっているすべての記@c
1663 述には括弧よりもスペースが 2 つ多いインデントを付けられていて、閉じ括弧には括@c
1664 弧の開始行と同じインデントを付けられているということに注意してください。これは@c
1665 必須ではありませんが、こうしておくと @q{unmatched backet} (「括弧が一致しない」)
1666 エラーを大幅に減らすことができますので、強く推奨します。これにより、音楽の構造@c
1667 を簡単に見て取ることができ、一致していない括弧が明瞭になります。さらに、RH 譜@c
1668 表はボイスを 1 つだけしか必要としないために中括弧によって囲まれた単一の音楽表@c
1669 記として作成されているのに対して、LH 譜表は 2 つのボイスを必要とするために 2
1670 重角括弧を使って作成されていることに注意してください。)
1672 @cindex contexts, naming
1673 @cindex naming contexts
1675 また、@code{\new} コマンドはコンテキストに識別名を与えて、そのコンテキストを同@c
1676 じタイプの他のコンテキストと区別することを可能にするかもしれません:
1679 \new @var{type} = @var{id} @var{music-expression}
1682 @code{Staff}, @code{Voice} などといったコンテキスト タイプの名前とそのような@c
1683 コンテキスト タイプのインスタンスの名前 --これはユーザによって提供され、どのよ@c
1684 うな文字の連なりにもなり得ます -- の違いに注意してください。数字とスペースも識@c
1685 別名に使用することができますが、その場合クォートで囲まなければなりません -- つ@c
1686 まり、@code{\new Staff = "MyStaff 1" @var{music-expression}} のようになりま@c
1687 す。識別名はコンテキストのあるインスタンスを参照するために使用されます。このこ@c
1688 とを歌詞についてのセクションで見てきました。@ref{ボイスとボーカル} を参照して@c
1694 表記リファレンス: @ruser{コンテキストを作成する}
1699 @subsection エングラーバの説明
1700 @translationof Engravers explained
1705 LilyPond によって作成された楽譜上にあるすべての記号は @code{Engraver} によって@c
1706 作り出されます。つまり、譜を譜刻するエングラーバがあり、音符玉を譜刻するエング@c
1707 ラーバ、ステムを譜刻するエングラーバ、ビームを譜刻するエングラーバなどなどで@c
1708 す。そのようなエングラーバは 120 以上あります!幸いなことに、たいていの楽譜で@c
1709 は数個のエングラーバについて知っていれば良く、簡単な楽譜ではまったく知らなくて@c
1712 エングラーバはコンテキストの中に存在し、そこで活動します。@c
1713 @code{Metronome_mark_engraver} などといった楽譜全体に影響を与えるエングラーバ@c
1714 は最上位のコンテキスト -- @code{Score} コンテキスト -- で活動します。
1716 @code{Clef_engraver} と @code{Key_engraver} は各 @code{Staff} コンテキストの中@c
1717 で見つかります -- 譜が異なれば音部記号や調号も異なるかもしれないからです。
1719 @code{Note_heads_engraver} と @code{Stem_engraver} は各 @code{Voice} コンテキ@c
1720 スト -- 最下位のコンテキスト -- の中にあります。
1722 各エングラーバはそれの機能に関連付けされているある特定のオブジェクトを処理し、@c
1723 機能に関連するプロパティを維持します。コンテキストに関連付けされているプロパ@c
1724 ティなどのようにこれらのプロパティは、エングラーバの処理を変更するためや、譜刻@c
1725 される楽譜の中にある要素の見た目を変更するために、変更されるかもしれません。
1727 エングラーバはすべてそれらの機能を記述する単語から形成された複合名を持ちます。@c
1728 最初の単語の最初の文字は大文字であり、その後に続く単語はアンダスコアで連結され@c
1729 ます。ですから、@code{Staff_symbol_engraver} には譜表の線を作成する責任があ@c
1730 り、@code{Clef_engraver} は音部記号を描くことによって音高の参照ポイントを決@c
1734 ここに、最も一般的なエングラーバをいくつかそれらの機能とともに挙げます。たいて@c
1735 いの場合、名前から簡単に機能を推測でき、その逆も成り立つことがわかるでしょう。
1737 @multitable @columnfractions .3 .7
1740 @item Accidental_engraver
1741 @tab 臨時記号 (警告的臨時記号とアドバイス的な臨時記号を含む) を作成します。
1746 @item Completion_heads_engraver
1747 @tab 小節線をまたがる音符を分割します。
1748 @c The old Dynamic_engraver is deprecated. -jm
1749 @item New_dynamic_engraver
1750 @tab 強弱記号 (クレッシェンド、デクレッシェンド) と強弱テキスト (p や f など)
1752 @item Forbid_line_break_engraver
1753 @tab 音楽要素がアクティブなままである場合に改行されることを防ぎます。(訳者:
1757 @item Metronome_mark_engraver
1758 @tab メトロノーム記号を譜刻します。
1759 @item Note_heads_engraver
1763 @item Staff_symbol_engraver
1764 @tab (デフォルトで) 五線の譜表を譜刻します。
1766 @tab ステムと単一ステムのトレモロを作成します。
1767 @item Time_signature_engraver
1773 後ほど、エングラーバのアクションを変更することによって LilyPond の出力がどのよ@c
1778 内部リファレンス: @rinternals{Engravers and Performers}
1782 @node コンテキスト プロパティを変更する
1783 @subsection コンテキスト プロパティを変更する
1784 @translationof Modifying context properties
1785 @c コンテキスト プロパティを変更する
1787 @cindex context properties
1788 @cindex context properties, modifying
1789 @cindex modifying context properties
1795 コンテキストにはいくつかのコンテキスト プロパティを保持する責任があります。そ@c
1796 れらプロパティの多くは変更可能であり、変更することで入力の構文解釈に影響を与え@c
1797 て出力の見た目を変化させます。それらプロパティは \set コマンドによって変更され@c
1801 \set @emph{ContextName}.@emph{propertyName} = #@emph{value}
1804 @emph{ontextName} には通常、@code{Score}, @code{Staff} or @code{Voice} が入り@c
1805 ます。これを省略する場合もあり、そのような場合は @code{Voice} であると見なされ
1808 コンテキスト プロパティの名前はハイフンやアンダスコアを使わずに連結された単語@c
1809 によって形成され、最初の単語を除いて単語の最初の文字は大文字になります。ここ@c
1810 で、一般的に使用されるコンテキスト プロパティの例をいくつか挙げます。実際に@c
1811 は、コンテキスト プロパティはもっとたくさんあります。
1813 @c attempt to force this onto a new page
1815 @multitable @columnfractions .25 .15 .45 .15
1822 @tab 真の場合、追加のナチュラル記号を臨時記号の前にセットします
1823 @tab @code{#t}, @code{#f}
1824 @item currentBarNumber
1830 @tab 真の場合、音符の上と下の両方にスラーを譜刻します
1831 @tab @code{#t}, @code{#f}
1832 @item instrumentName
1834 @tab 譜表の先頭に表示される名前をセットします
1835 @tab @code{"Cello I"}
1838 @tab フォント サイズを増減させます
1842 @tab 歌詞の先頭に譜刻されるテキストをセットします
1847 ここでのブール値とは真 (@code{@hash{}t}) または偽 (@code{@hash{}f}) のどちらか@c
1848 であり、整数とは正の整数であり、実数とは正または負の小数点付きの数であり、テキ@c
1849 ストはダブル アポストロフィで囲まれます。ハッシュ記号 (@code{@hash{}}) が 2 つ@c
1850 の異なる箇所で出現することに注意してください -- ブール値での @code{t} や
1851 @code{f} の前と、@code{@bs{}set} での@emph{値}の前です。そのため、@c
1852 @code{@bs{}set} の値にブール値を挿入する場合、ハッシュ記号が 2 つ必要になります
1853 -- つまり @code{@hash{}@hash{}t} です。
1855 @cindex properties operating in contexts
1856 @cindex setting properties within contexts
1858 これらのプロパティのいずれかをセットする前に、それらが操作するコンテキストはど@c
1859 れなのかを知る必要があります。これは明らかな場合もありますが、ややこしい場合も@c
1860 あります。間違ったコンテキストが指定された場合、エラー メッセージは表示されま@c
1861 せんが、予期したアクションが起こりません。例えば、@code{instrumentName} は間違@c
1862 いなく @code{Staff} コンテキストの中にきます。なぜなら、このプロパティが名前を@c
1863 付けるのは譜表だからです。以下の例では、最初の譜表には名前が付けられています@c
1864 が、2 番目の譜表には付けられていません。なぜなら、コンテキスト名を省略している@c
1867 @lilypond[quote,verbatim,ragged-right]
1869 \new Staff \relative c'' {
1870 \set Staff.instrumentName = #"Soprano"
1873 \new Staff \relative c' {
1874 \set instrumentName = #"Alto" % Wrong!
1880 デフォルトのコンテキスト名は @code{Voice} であることを思い出してください。この@c
1881 ため、2 番目の @code{@bs{}set} コマンドは @code{Voice} コンテキストのプロパティ
1882 @code{instrumentName} を @qq{Alto} にセットしています。しかしながら、@c
1883 LilyPond は @code{Voice} コンテキストでそのようなプロパティを見つけ出さないた@c
1884 め、何のアクションも起こしません。これはエラーではなく、ログ ファイルにエラー
1887 同様に、プロパティ名の綴りを間違えた場合もエラー メッセージは表示されず、予期@c
1888 したアクションが起こりません。実際のところ、@code{@bs{}set} コマンドを使って、@c
1889 存在するいかなるコンテキストにでも、いかなる (架空の) @q{プロパティ} をセット@c
1890 することができます。しかしながら、そのプロパティ名を LilyPond が知らない場合、@c
1891 何のアクションも起こしません。LilyPond 入力ファイルに対する特別なサポートを持@c
1892 ついくつかのテキスト エディタは、あなたがプロパティ名の上にマウスを持ってくる@c
1893 とバレット (テキストの先頭に付く小丸) 付きのプロパティ名を表示してそのプロパ@c
1894 ティの裏づけを行い (LilyPondTool を持つ JEdit)、あるいは未知のプロパティ名をハ@c
1895 イライトします (ConTEXT)。そのような機能を持つエディタを使用していないのなら、@c
1896 内部リファレンスでプロパティ名をチェックすることを推奨します:
1897 @rinternals{Tunable context properties} や @rinternals{Contexts} を参照してく@c
1899 @c 調節可能なコンテキスト プロパティ, コンテキスト
1901 @code{instrumentName} プロパティは @code{Staff} コンテキストの中にセットされた@c
1902 場合にのみ効果を持ちますが、いくつかのプロパティは複数のコンテキストの中にセッ@c
1903 トすることができます。例えば、プロパティ @code{extraNatural} はすべての譜に対@c
1904 してデフォルトで @code{@hash{}@hash{}t} (真) にセットされています。ある特定@c
1905 の @code{Staff} コンテキストでこれを @code{@hash{}@hash{}f} (偽) にセットし@c
1906 た場合、その譜表の臨時記号にのみ適用されます。これを @code{Score} コンテキスト@c
1907 にセットした場合、すべての譜に適用されます。
1909 それでは、ある譜表の追加ナチュラル記号を消してみます:
1911 @lilypond[quote,verbatim,ragged-right]
1913 \new Staff \relative c'' {
1916 \new Staff \relative c'' {
1917 \set Staff.extraNatural = ##f
1924 さらに、すべての譜の追加ナチュラル記号を消します:
1926 @lilypond[quote,verbatim,ragged-right]
1928 \new Staff \relative c'' {
1931 \new Staff \relative c'' {
1932 \set Score.extraNatural = ##f
1938 他の例としては、@code{clefOctavation} が @code{Score} コンテキストにセットされ@c
1939 た場合、直ちにすべての譜でのオクターブの値を変更し、すべての譜に適用される新し@c
1942 逆のことを行うコマンド @code{@bs{}unset} はコンテキストからプロパティを削除@c
1943 し、それによりたいていのプロパティはデフォルト値に戻ります。通常、望みのことを@c
1944 達成するために新たな @code{@bs{}set} コマンドを用いる場合、@code{@bs{}unset}
1947 @code{@bs{}set} と @code{@bs{}unset} コマンドは入力ファイルのどこにでも現れる@c
1948 可能性があり、そのコマンドが出現した時点から、楽譜の終わりまたはそのプロパティ@c
1949 が再度 @code{@bs{}set} や @code{@bs{}unset} されるまで効果を持ちます。フォント
1950 サイズを変更してみましょう。それにより (他のものに加えて) 音符玉のサイズが何段@c
1951 階か変更されます。変更は直前にセットされた値から行われるのではなく、デフォルト@c
1954 @lilypond[quote,verbatim,ragged-right,relative=1,fragment]
1956 % make note heads smaller
1959 % make note heads larger
1960 \set fontSize = #2.5
1962 % return to default size
1967 これまでにいくつかのタイプのプロパティ値をセットする方法を見てきました。整数と@c
1968 番号の前には常にハッシュ記号 @code{@hash{}} が付き、真と偽の値は 2 つのハッ@c
1969 シュ記号を付けて @code{@hash{}@hash{}t} と @code{@hash{}@hash{}f} によって指定@c
1970 されてるということに注意してください。テキスト プロパティは上で示したようにダ@c
1971 ブル クォーテーションによって囲まれます。しかしながら、後ほど、テキストは実際@c
1972 には非常に強力な @code{markup} コマンドを用いたもっと一般的な方法で指定できる@c
1976 @subsubheading @code{\with} を用いてコンテキスト プロパティを設定する
1977 @c \with を使ったコンテキスト プロパティの設定
1981 @cindex context properties, setting with \with
1983 コンテキスト プロパティはコンテキストが作成されるときにセットされることもある@c
1984 かもしれません。この設定がコンテキスト全体で保持される場合、この方法でプロパ@c
1985 ティ値を指定すると明瞭になります。コンテキストが @code{@bs{}new} コマンドで作@c
1986 成されるとき、その直後に @code{@bs{}with @{ .. @}} ブロックが続き、その中でプ@c
1987 ロパティ値がセットされるかもしれません。例えば、ある譜表全体で追加のナチュラル@c
1988 の表示を抑制しようとする場合、以下のように書きます:
1991 \new Staff \with @{ extraNatural = ##f @}
1997 @lilypond[quote,verbatim,ragged-right]
2003 \new Staff \with { extraNatural = ##f }
2010 この方法でプロパティをセットした場合でも、@code{@bs{}set} を使って動的に変更さ@c
2011 れたり、@code{@bs{}unset} を使ってデフォルト値に戻されたりするかもしれません。
2013 @cindex fontSize, default and setting
2015 @code{fontSize} プロパティの扱いは異なります。これが @code{@bs{}with} の中で@c
2016 セットされた場合、フォント サイズのデフォルト値をセットし直します。そのあとで@c
2017 フォント サイズが @code{@bs{}set} によって変更された場合、@code{@bs{}with} で@c
2018 セットされた新しいデフォルト値は @code{@bs{}unset fontSize} コマンドによって元@c
2022 @subsubheading @code{\context} を用いてコンテキスト プロパティを設定する
2023 @c \context を使ったコンテキスト プロパティの設定
2025 @cindex context properties, setting with \context
2029 コンテキスト プロパティの値は単一のコマンドによってある特定のタイプのコンテキ@c
2030 スト@emph{すべて} -- すべての @code{Staff} コンテキストなどのように -- にセッ@c
2031 トされるかもしれません。プロパティをセットするコンテキストのタイプは、@c
2032 @code{Staff} のようなそのコンテキストのタイプ名に接頭辞としてバック スラッシュ@c
2033 を付けたもの -- @code{@bs{}Staff} のように -- によって指定されます。プロパティ@c
2034 値をセットするための記述は上で紹介した @code{@bs{}with} ブロックの中の記述と同@c
2035 じです。この記述は @code{@bs{}layout} ブロック内部の @code{@bs{}context} ブ@c
2036 ロックの中に置かれます。各 @code{@bs{}context} ブロックは、その
2037 @code{@bs{}layout} ブロックが置かれている @code{@bs{}score} または
2038 @code{@bs{}book} ブロック全体を通じて、指定されたタイプのコンテキストすべてに@c
2039 対して効果を持ちます。ここで、記述方法を示すための例を挙げます:
2041 @lilypond[verbatim,quote]
2058 この方法でセットされたコンテキスト プロパティは、@code{@bs{}with} ブロックの中@c
2059 の記述によって、さらには、音楽表記の中に埋め込まれた @code{@bs{}set} コマンド@c
2060 によって、ある特定のコンテキスト インスタンスでは上書きされるかもしれません。
2064 表記リファレンス: @ruser{Changing context default settings}
2065 @c コンテキストのデフォルト設定の変更
2067 @c uncomment when backslash-node-name issue is resolved -pm
2068 @c <at>ruser{The set command}.
2070 内部リファレンス: @rinternals{Contexts},
2071 @rinternals{Tunable context properties}
2072 @c コンテキスト, 調整可能なコンテキスト プロパティ
2075 @node エングラーバを追加 / 削除する
2076 @subsection エングラーバを追加 / 削除する
2077 @translationof Adding and removing engravers
2080 @cindex engravers, adding
2081 @cindex adding engravers
2082 @cindex engravers, removing
2083 @cindex removing engravers
2090 これまでに、コンテキストはそれぞれにいくつかのエングラーバを保持し、それぞれの@c
2091 エングラーバは出力のある特定部分 -- 小節線、譜、音符玉、ステムなど -- の譜刻に@c
2092 責任を持つということを見てきました。あるエングラーバがコンテキストから削除され@c
2093 ると、それはもはや出力を行いません。これは出力を変更するための荒っぽい方法です@c
2096 @subsubheading 単一のコンテキストを変更する
2099 あるコンテキストからあるエングラーバを削除するには、前のセクションで見てたきた@c
2100 のと同様に、コンテキスト作成コマンドの直後に置く @code{@bs{}with} コマンドを使@c
2103 例として、前のセクションで使用した例から譜表線を取り除いてみましょう。譜表線は
2104 @code{Staff_symbol_engraver} によって作り出されるということを思い出してくださ@c
2107 @lilypond[quote,verbatim,ragged-right]
2109 \remove Staff_symbol_engraver
2113 \set fontSize = #-4 % make note heads smaller
2115 \set fontSize = #2.5 % make note heads larger
2117 \unset fontSize % return to default size
2122 @cindex ambitus engraver
2124 さらに、エングラーバは個々のコンテキストに追加されることもあります。エングラー@c
2125 バを追加するコマンドは以下のようなものです:
2127 @code{\consists @var{Engraver_name}},
2130 これを @code{@bs{}with} ブロックの中に置きます。いくつかのボーカル譜は、その譜@c
2131 表の中にある音符の範囲を示すために、譜表の開始点に音域 (ambitus) を置きます --
2132 @rglos{ambitus} を参照してください。音域は @code{Ambitus_engraver} によって作@c
2133 成され、普通は、これはどのコンテキストにも含まれません。これを @code{Voice}
2134 コンテキストに追加した場合、それはそのボイスのみから音域を計算します:
2137 @lilypond[quote,verbatim,ragged-right]
2140 \consists Ambitus_engraver
2155 しかし、音域エングラーバを @code{Staff} コンテキストに追加した場合、そのエング@c
2156 ラーバはその譜表上にあるすべてのボイスの中の音符から音域を計算します:
2158 @lilypond[quote,verbatim,ragged-right]
2160 \consists Ambitus_engraver
2176 @subsubheading 同じタイプのコンテキストをすべて変更する
2177 @c 同じタイプのコンテキストをすべて変更する
2182 上の例では、個々のコンテキストにエングラーバを追加あるいは削除する方法を示しま@c
2183 した。さらに、そのコマンドを @code{@bs{}layout} ブロックの中の適当なコンテキス@c
2184 トの中に置くことによって、ある特定のタイプのコンテキストすべてにエングラーバを@c
2185 追加あるいは削除することもできます。例えば、4 つの譜表を持つ楽譜ですべての譜表@c
2186 に音域を表示する場合、以下のように記述します:
2188 @lilypond[quote,verbatim,ragged-right]
2192 \relative c'' { c a b g }
2195 \relative c' { c a b g }
2199 \relative c' { c a b g }
2203 \relative c { c a b g }
2209 \consists Ambitus_engraver
2216 また、コンテキスト プロパティの値も、上記と同様に @code{@bs{}context} ブロック@c
2217 の中に @code{@bs{}set} を含ませることによって、ある特定のタイプのコンテキスト@c
2218 すべてに対してセットすることができます。
2222 表記リファレンス: @ruser{Modifying context plug-ins},
2223 @ruser{Changing context default settings}
2224 @c コンテキスト プラグインの変更, コンテキストのデフォルト設定の変更
2228 @section テンプレートを拡張する
2229 @translationof Extending the templates
2232 あなたはチュートリアルを読み終えました。あなたはどのように音楽を書くかを知って@c
2233 いて、基礎となるコンセプトを理解しています。しかし、どうやったらあなたはあなた@c
2234 が望む譜表を手に入れられるでしょうか?あなたにとって良いスタート地点となるかも@c
2235 しれない多くのテンプレートがあります (@ref{テンプレート} を参照してください)。し@c
2236 かしながら、あなたの望むものがそこでカバーされていなかったらどうしましょう?続@c
2242 * 4 パート SATB ボーカル譜::
2247 @subsection ソプラノとチェロ
2248 @translationof Soprano and cello
2251 @cindex template, modifying
2252 @cindex modifying templates
2254 あなたが最終的に望むものに最も近いテンプレートから始めてください。ソプラノと@c
2255 チェロのための楽譜を書きたいということにしましょう。ここでは、@q{音符と歌詞}
2256 (ソプラノ パート用) から始めることにします。
2259 \version @w{"@version{}"}
2260 melody = \relative c' @{
2267 text = \lyricmode @{
2273 \new Voice = "one" @{
2277 \new Lyrics \lyricsto "one" \text
2284 これにチェロ パートを追加していきます。@q{音符のみ} のテンプレートを見てみま@c
2288 \version @w{"@version{}"}
2289 melody = \relative c' @{
2303 @code{\version} コマンドは 2 つも必要ありません。@code{melody} セクションは必@c
2304 要です。@code{\score} セクションは 2 つも必要ありません -- @code{\score} が 2
2305 つあると、2 つのパートがばらばらになります。2 つのパートをデュオのように一緒に@c
2306 したいのです。@code{\score} セクションの中に @code{\layout} や @code{\midi} は 2
2309 単に @code{melody} セクションをカット&コピーした場合、@code{melody} 定義が 2
2310 つになります。これはエラーにはなりませんが、2 番目の定義が両方の旋律で使われる@c
2311 ことになります。そのため、2 つの旋律を区別するためにリネームします。ソプラノ用@c
2312 のセクションを @code{sopranoMusic} と呼び、チェロ用のセクションを
2313 @code{celloMusic} と呼ぶことにします。リネームするときに、@code{text} を
2314 @code{sopranoLyrics} とりネームしましょう。これらのインスタンスをリネームする@c
2315 ことも忘れないでください −- 初期定義 (@code{melody = \relative c' @{ } 部分)
2316 とその名前が使われているところ (@code{\score セクションの中}) の両方です。
2318 リネームする際に、チェロ パートの譜表も変更しましょう −- 通常、チェロは低音部@c
2319 を使用します。さらに、チェロの音符を変えてみます。
2322 \version @w{"@version{}"}
2323 sopranoMusic = \relative c' @{
2330 sopranoLyrics = \lyricmode @{
2334 celloMusic = \relative c @{
2343 \new Voice = "one" @{
2347 \new Lyrics \lyricsto "one" \sopranoLyrics
2354 これでうまくいくように見えますが、チェロ パートが楽譜に表示されません −- チェロ
2355 パートを @code{\score} セクションの中で使っていないからです。チェロ パートをソ@c
2356 プラノ パートの下に表示させたいのなら、以下をソプラノの譜の下に追加する必要が@c
2360 \new Staff \celloMusic
2364 さらに、音楽を @code{<<} と @code{>>} で囲む必要もあります −- これは LilyPond
2365 に複数のもの (この場合は 2 つの @code{Stave}) が同時に起こるということを知らせ@c
2366 ます。@code{\score} は以下のようになります:
2368 @c Indentation in this example is deliberately poor
2373 \new Voice = "one" @{
2377 \new Lyrics \lyricsto "one" \sopranoLyrics
2379 \new Staff \celloMusic
2387 これは少し見にくいです。インデントがきちんと入っていません。これは簡単に修正で@c
2388 きます。ここで、完成したソプラノとチェロ用のテンプレートを挙げます。
2390 @lilypond[quote,verbatim,ragged-right,addversion]
2391 sopranoMusic = \relative c' {
2398 sopranoLyrics = \lyricmode {
2402 celloMusic = \relative c {
2412 \new Voice = "one" {
2416 \new Lyrics \lyricsto "one" \sopranoLyrics
2418 \new Staff \celloMusic
2427 開始点となるテンプレートは付録 @q{テンプレート} で見つけることができます。@c
2428 @ref{単一の譜表} を参照してください。
2432 @node 4 パート SATB ボーカル譜
2433 @subsection 4 パート SATB ボーカル譜
2434 @translationof Four-part SATB vocal score
2437 @cindex template, SATB
2438 @cindex SATB template
2440 Mendelssohn の Elijah や Handel の Messiah などのオーケストラ伴奏付きの 4 パー@c
2441 ト聖歌隊のために書かれたボーカル譜の多くは 4 つの譜上に音符と歌詞を持ち、それ@c
2442 ぞれの譜は SATB (ソプラノ、アルト、テナー、バス) のうちの 1 つであり、その下に@c
2443 オーケストラ伴奏のピアノ譜が付きます。ここで、Handel の Messiah から例を挙げま@c
2446 @c The following should appear as music without code
2447 @lilypond[quote,ragged-right]
2448 global = { \key d \major \time 4/4 }
2449 sopranoMusic = \relative c'' {
2451 r4 d2 a4 | d4. d8 a2 | cis4 d cis2 |
2453 sopranoWords = \lyricmode {
2454 Wor -- thy is the lamb that was slain
2456 altoMusic = \relative a' {
2458 r4 a2 a4 | fis4. fis8 a2 | g4 fis e2 |
2460 altoWords = \sopranoWords
2461 tenorMusic = \relative c' {
2463 r4 fis2 e4 | d4. d8 d2 | e4 a, cis2 |
2465 tenorWords = \sopranoWords
2466 bassMusic = \relative c' {
2468 r4 d2 cis4 | b4. b8 fis2 | e4 d a'2 |
2470 bassWords = \sopranoWords
2471 upper = \relative a' {
2474 r4 <a d fis>2 <a e' a>4 |
2475 <d fis d'>4. <d fis d'>8 <a d a'>2 |
2476 <g cis g'>4 <a d fis> <a cis e>2 |
2478 lower = \relative c, {
2481 <d d'>4 <d d'>2 <cis cis'>4 |
2482 <b b'>4. <b' b'>8 <fis fis'>2 |
2483 <e e'>4 <d d'> <a' a'>2 |
2487 << % combine ChoirStaff and PianoStaff in parallel
2489 \new Staff = "sopranos" <<
2490 \set Staff.instrumentName = #"Soprano"
2491 \new Voice = "sopranos" { \global \sopranoMusic }
2493 \new Lyrics \lyricsto "sopranos" { \sopranoWords }
2494 \new Staff = "altos" <<
2495 \set Staff.instrumentName = #"Alto"
2496 \new Voice = "altos" { \global \altoMusic }
2498 \new Lyrics \lyricsto "altos" { \altoWords }
2499 \new Staff = "tenors" <<
2500 \set Staff.instrumentName = #"Tenor"
2501 \new Voice = "tenors" { \global \tenorMusic }
2503 \new Lyrics \lyricsto "tenors" { \tenorWords }
2504 \new Staff = "basses" <<
2505 \set Staff.instrumentName = #"Bass"
2506 \new Voice = "basses" { \global \bassMusic }
2508 \new Lyrics \lyricsto "basses" { \bassWords }
2512 \set PianoStaff.instrumentName = #"Piano"
2513 \new Staff = "upper" \upper
2514 \new Staff = "lower" \lower
2520 このレイアウトをそのまま提供するテンプレートはありません。最も近いのは @q{SATB
2521 ボーカル譜と自動ピアノ伴奏譜} -- @ref{合唱} を参照してください --
2522 ですが、レイアウトを変更して、ボーカル パートから自動的に生成されたものではな@c
2523 いピアノ伴奏譜を付け加える必要があります。ボーカル パートのための音楽と歌詞を@c
2524 保持している変数はそのまま使えますが、ピアノ伴奏譜のための変数を付け加える必要@c
2528 テンプレートの @code{ChoirStaff} の中でコンテキストが出現する順序は上で示した@c
2529 ボーカル譜の順序と一致していません。そのため、コンテキストを再配置して、それぞ@c
2530 れの歌詞が対応する譜表のすぐ下にくるようにします。すべてのボイスは
2531 @code{\voiceOne} -- これがデフォルトです -- になるべきなので、@code{\voiceXXX}
2532 コマンドは削除すべきです。さらに、テノールに対してハ音記号 (中音部記号) を指定@c
2533 する必要があります。テンプレートの中で歌詞を指定する方法はまだ説明していません@c
2534 ので、馴染みのある方法を使用する必要があります。さらに、それぞれの譜に名前を追@c
2537 以上のことを @code{ChoirStaff} に対して行います:
2541 \new Staff = "sopranos" <<
2542 \set Staff.instrumentName = #"Soprano"
2543 \new Voice = "sopranos" @{ \global \sopranoMusic @}
2545 \new Lyrics \lyricsto "sopranos" @{ \sopranoWords @}
2546 \new Staff = "altos" <<
2547 \set Staff.instrumentName = #"Alto"
2548 \new Voice = "altos" @{ \global \altoMusic @}
2550 \new Lyrics \lyricsto "altos" @{ \altoWords @}
2551 \new Staff = "tenors" <<
2552 \set Staff.instrumentName = #"Tenor"
2553 \new Voice = "tenors" @{ \global \tenorMusic @}
2555 \new Lyrics \lyricsto "tenors" @{ \tenorWords @}
2556 \new Staff = "basses" <<
2557 \set Staff.instrumentName = #"Bass"
2558 \new Voice = "basses" @{ \global \bassMusic @}
2560 \new Lyrics \lyricsto "basses" @{ \bassWords @}
2564 次にピアノ パートに取り掛からなければなりません。これは簡単です -- @q{ソロ ピ@c
2565 アノ} テンプレートからピアノ パートを引き抜いてくるだけです:
2569 \set PianoStaff.instrumentName = #"Piano "
2570 \new Staff = "upper" \upper
2571 \new Staff = "lower" \lower
2575 そして、@code{upper} と @code{lower} に変数定義を付け加えます。
2577 @code{ChoirStaff} を @code{PianoStaff} の上に置きたいので、それらを角括弧を@c
2581 << % combine ChoirStaff and PianoStaff one above the other
2583 \new Staff = "sopranos" <<
2584 \new Voice = "sopranos" @{ \global \sopranoMusic @}
2586 \new Lyrics \lyricsto "sopranos" @{ \sopranoWords @}
2587 \new Staff = "altos" <<
2588 \new Voice = "altos" @{ \global \altoMusic @}
2590 \new Lyrics \lyricsto "altos" @{ \altoWords @}
2591 \new Staff = "tenors" <<
2592 \clef "G_8" % tenor clef
2593 \new Voice = "tenors" @{ \global \tenorMusic @}
2595 \new Lyrics \lyricsto "tenors" @{ \tenorWords @}
2596 \new Staff = "basses" <<
2598 \new Voice = "basses" @{ \global \bassMusic @}
2600 \new Lyrics \lyricsto "basses" @{ \bassWords @}
2604 \set PianoStaff.instrumentName = #"Piano"
2605 \new Staff = "upper" \upper
2606 \new Staff = "lower" \lower
2611 これらすべてを組み合わせて、上の例の 3 小節分の音楽を付け加えます:
2613 @lilypond[quote,verbatim,ragged-right,addversion]
2614 global = { \key d \major \time 4/4 }
2615 sopranoMusic = \relative c'' {
2617 r4 d2 a4 | d4. d8 a2 | cis4 d cis2 |
2619 sopranoWords = \lyricmode {
2620 Wor -- thy is the lamb that was slain
2622 altoMusic = \relative a' {
2624 r4 a2 a4 | fis4. fis8 a2 | g4 fis fis2 |
2626 altoWords = \sopranoWords
2627 tenorMusic = \relative c' {
2629 r4 fis2 e4 | d4. d8 d2 | e4 a, cis2 |
2631 tenorWords = \sopranoWords
2632 bassMusic = \relative c' {
2634 r4 d2 cis4 | b4. b8 fis2 | e4 d a'2 |
2636 bassWords = \sopranoWords
2637 upper = \relative a' {
2640 r4 <a d fis>2 <a e' a>4 |
2641 <d fis d'>4. <d fis d'>8 <a d a'>2 |
2642 <g cis g'>4 <a d fis> <a cis e>2 |
2644 lower = \relative c, {
2647 <d d'>4 <d d'>2 <cis cis'>4 |
2648 <b b'>4. <b' b'>8 <fis fis'>2 |
2649 <e e'>4 <d d'> <a' a'>2 |
2653 << % combine ChoirStaff and PianoStaff in parallel
2655 \new Staff = "sopranos" <<
2656 \set Staff.instrumentName = #"Soprano"
2657 \new Voice = "sopranos" { \global \sopranoMusic }
2659 \new Lyrics \lyricsto "sopranos" { \sopranoWords }
2660 \new Staff = "altos" <<
2661 \set Staff.instrumentName = #"Alto"
2662 \new Voice = "altos" { \global \altoMusic }
2664 \new Lyrics \lyricsto "altos" { \altoWords }
2665 \new Staff = "tenors" <<
2666 \set Staff.instrumentName = #"Tenor"
2667 \new Voice = "tenors" { \global \tenorMusic }
2669 \new Lyrics \lyricsto "tenors" { \tenorWords }
2670 \new Staff = "basses" <<
2671 \set Staff.instrumentName = #"Bass"
2672 \new Voice = "basses" { \global \bassMusic }
2674 \new Lyrics \lyricsto "basses" { \bassWords }
2678 \set PianoStaff.instrumentName = #"Piano "
2679 \new Staff = "upper" \upper
2680 \new Staff = "lower" \lower
2688 @subsection ゼロから楽譜を構築する
2689 @translationof Building a score from scratch
2692 @cindex template, writing your own
2693 @cindex example of writing a score
2694 @cindex writing a score, example
2695 @cindex score, example of writing
2697 LilyPond コードを書くことにある程度熟練した後、あなたはテンプレートの 1 つを変@c
2698 更するよりもゼロから楽譜を構築するほうがより容易であることに気づくかもしれませ@c
2699 ん。さらに、あなたはこの方法であなたの好みのタイプの音楽に適したあなた自身のス@c
2700 タイルを開発することもできます。例として、オルガン前奏曲のための楽譜を作成する@c
2703 ヘッダ セクションから始めます。そこでタイトル、作曲者の名前などを記述し、それ@c
2704 から任意の変数を定義し、最後にスコア ブロックに取り掛かります。以上のことを概@c
2705 要から始めて、その後に詳細を詰めていきます。
2707 @emph{Jesu, meine Freude} -- これは 2 つの鍵盤とペダルを持つオルガンのために書@c
2708 かれたものです -- をベースとする Bach の前奏曲の最初の 2 小節を使います。この@c
2709 セクションの最後でこの音楽の最初の 2 小節を見ることができます。上段鍵盤パートは
2710 2 つのボイスを持ち、下段鍵盤とペダルはそれぞれ 1 つのボイスを持ちます。そのた@c
2711 め、4 つの音楽定義と、拍子記号と調号を定義するための 1 つの音楽定義が必要とな@c
2715 \version @w{"@version{}"}
2717 title = "Jesu, meine Freude"
2718 composer = "J S Bach"
2720 TimeKey = @{ \time 4/4 \key c \minor @}
2721 ManualOneVoiceOneMusic = @{s1@}
2722 ManualOneVoiceTwoMusic = @{s1@}
2723 ManualTwoMusic = @{s1@}
2724 PedalOrganMusic = @{s1@}
2730 ここでは、実際の音楽の代わりにスペーサ音符 @code{s1} を使用しました。実際の音@c
2733 次に、スコア ブロックで何をすべきなのかを見ていきましょう。単純に望む譜表構造@c
2734 を反映させます。通常、オルガン音楽は 3 つの譜で書かれます -- 2 つの鍵盤とペダ@c
2735 ルのための譜です。鍵盤の譜はブレース (譜表の左端の中括弧) でまとめられているべ@c
2736 きなので、それらに対して @code{PianoStaff} を使用する必要があります。1 番目の@c
2737 鍵盤パートは 2 つのボイスを必要とし、2 番目の鍵盤パートは 1 つだけボイスを必要@c
2742 \new Staff = "ManualOne" <<
2743 \new Voice @{ \ManualOneVoiceOneMusic @}
2744 \new Voice @{ \ManualOneVoiceTwoMusic @}
2745 >> % end ManualOne Staff context
2746 \new Staff = "ManualTwo" <<
2747 \new Voice @{ \ManualTwoMusic @}
2748 >> % end ManualTwo Staff context
2749 >> % end PianoStaff context
2752 次にペダル オルガンのための譜表を付け加える必要があります。これは
2753 @code{PianoStaff} の下にきますが、@code{PianoStaff} と同時進行でなければなりま@c
2754 せんので、ペダル オルガンのための譜表と @code{PianoStaff} を角括弧で囲む必要が@c
2755 あります。これを忘れるとエラーがログ ファイルに生成されます。このエラーはあな@c
2756 たが早かれ遅かれ遭遇する一般的なミスです!生成されるエラーを確認するために、こ@c
2757 のセクションの最後にある例をコピーし、この角括弧を削除し、コンパイルしてみてく@c
2761 << % PianoStaff and Pedal Staff must be simultaneous
2763 \new Staff = "ManualOne" <<
2764 \new Voice @{ \ManualOneVoiceOneMusic @}
2765 \new Voice @{ \ManualOneVoiceTwoMusic @}
2766 >> % end ManualOne Staff context
2767 \new Staff = "ManualTwo" <<
2768 \new Voice @{ \ManualTwoMusic @}
2769 >> % end ManualTwo Staff context
2770 >> % end PianoStaff context
2771 \new Staff = "PedalOrgan" <<
2772 \new Voice @{ \PedalOrganMusic @}
2777 2 番目の鍵盤パートとペダル オルガンの譜表は 1 つだけしか音楽表記を保持しないた@c
2778 め、それらに対して同時進行構造 @code{<< .. >>} を使う必要は必ずしもありませ@c
2779 ん。しかしながら、そうしても害はありませんし、@code{\new Staff} の後に常に角括@c
2780 弧を置くというのは複数のボイスがある場合では推奨される良い習慣です。Voice はこ@c
2781 れとは対照的に、あなたの音楽を連続して演奏すべきいくつかの変数に分けてコード化@c
2782 する場合に Voice の後に中括弧 @code{@{ .. @}} を常に置くべきです。
2784 この構造をスコア ブロックに付け加えて、インデントを調整しましょう。さらに、適@c
2785 切な音部記号を付け加え、@code{\voiceOne} と @code{\voiceTwo} を使って上部譜の@c
2786 各ボイスでステム、タイ、スラーの向きが正しくなるようにし、あらかじめ定義してお@c
2787 いた変数 @code{\TimeKey} を使って拍子記号と調号を各譜に挿入します。
2791 << % PianoStaff and Pedal Staff must be simultaneous
2793 \new Staff = "ManualOne" <<
2794 \TimeKey % set time signature and key
2796 \new Voice @{ \voiceOne \ManualOneVoiceOneMusic @}
2797 \new Voice @{ \voiceTwo \ManualOneVoiceTwoMusic @}
2798 >> % end ManualOne Staff context
2799 \new Staff = "ManualTwo" <<
2802 \new Voice @{ \ManualTwoMusic @}
2803 >> % end ManualTwo Staff context
2804 >> % end PianoStaff context
2805 \new Staff = "PedalOrgan" <<
2808 \new Voice @{ \PedalOrganMusic @}
2809 >> % end PedalOrgan Staff
2811 @} % end Score context
2814 これでこの構造は完成です。3 つの譜表を持つオルガン音楽はいずれも同様の構造を持@c
2815 ちますが、ボイスの数はさまざまになるかもしれません。この後に行うべきことは、音@c
2816 楽を付け加え、各パートを一緒にすることです。
2818 @lilypond[quote,verbatim,ragged-right,addversion]
2820 title = "Jesu, meine Freude"
2821 composer = "J S Bach"
2823 TimeKey = { \time 4/4 \key c \minor }
2824 ManualOneVoiceOneMusic = \relative g' {
2825 g4 g f ees | d2 c2 |
2827 ManualOneVoiceTwoMusic = \relative c' {
2828 ees16 d ees8~ ees16 f ees d c8 d~ d c~ |
2829 c c4 b8 c8. g16 c b c d |
2831 ManualTwoMusic = \relative c' {
2832 c16 b c8~ c16 b c g a8 g~ g16 g aes ees |
2833 f ees f d g aes g f ees d e8~ ees16 f ees d |
2835 PedalOrganMusic = \relative c {
2836 r8 c16 d ees d ees8~ ees16 a, b g c b c8 |
2837 r16 g ees f g f g8 c,2 |
2841 << % PianoStaff and Pedal Staff must be simultaneous
2843 \new Staff = "ManualOne" <<
2844 \TimeKey % set time signature and key
2846 \new Voice { \voiceOne \ManualOneVoiceOneMusic }
2847 \new Voice { \voiceTwo \ManualOneVoiceTwoMusic }
2848 >> % end ManualOne Staff context
2849 \new Staff = "ManualTwo" <<
2852 \new Voice { \ManualTwoMusic }
2853 >> % end ManualTwo Staff context
2854 >> % end PianoStaff context
2855 \new Staff = "PedalOrgan" <<
2858 \new Voice { \PedalOrganMusic }
2859 >> % end PedalOrgan Staff context
2861 } % end Score context