]> git.donarmstrong.com Git - lilypond.git/blob - Documentation/ja/learning/tweaks.itely
New upstream version 2.19.80
[lilypond.git] / Documentation / ja / learning / tweaks.itely
1 @c -*- coding: utf-8; mode: texinfo; documentlanguage: ja -*-
2
3 @ignore
4     Translation of GIT committish: 9bb7fa99aa8bc7c14a45a42224545c726bb6c592
5
6     When revising a translation, copy the HEAD committish of the
7     version that you are working on.  For details, see the Contributors'
8     Guide, node Updating translation committishes..
9 @end ignore
10
11 @c \version "2.19.22"
12
13 @c Translators: Tomohiro Tatejima, Yoshiki Sawada
14 @c Translation status: post-GDP
15
16
17 @node 出力を調整する
18 @chapter 出力を調整する
19 @translationof Tweaking output
20
21 この章では出力を変更する方法について議論します。@c
22 LilyPond は本当にさまざまな設定が可能です。@c
23 もしかすると出力のすべての部分が変更されるかもしれません。
24
25 @menu
26 * 調整の基本::
27 * 内部リファレンス マニュアル::
28 * オブジェクトの見た目::
29 * オブジェクトの配置::
30 * 垂直方向のスペース::
31 * オブジェクトの衝突::
32 * 更なる調整::
33 @end menu
34
35 @node 調整の基本
36 @section 調整の基本
37 @translationof Tweaking basics
38
39 @menu
40 * 調整の紹介::
41 * オブジェクトとインタフェイス::
42 * オブジェクトとプロパティの命名規則::
43 * 調整手段::
44 @end menu
45
46
47 @node 調整の紹介
48 @subsection 調整の紹介
49 @translationof Introduction to tweaks
50
51 @q{調整} は入力ファイルの解釈中にとられるアクションを変更し、@c
52 譜刻される楽譜の見た目を変更するためにユーザが利用可能なさまざまな手段を指す
53 LilyPond の用語です。@c
54 いくつかの調整はとても簡単に使うことができます。@c
55 他の調整はもっと複雑です。@c
56 しかしながら、調整のために利用可能な手段を組み合わせることによって、@c
57 ほとんどいかなる望みの見た目を持った楽譜でも譜刻することが可能になります。
58
59 このセクションでは、調整を理解するのに必要な基礎となるコンセプトを@c
60 カバーします。@c
61 その後、コピーするだけで効果が得られる作成準備が完了している@c
62 さまざまなコマンドについての情報を提供し、@c
63 同時に、あなたがあなた自身の調整を開発する方法を学べるように@c
64 それらのコマンドがどのように構築されるのかを示します。
65
66 この章を読み始める前に、あなたは @ref{コンテキストとエングラーバ} を@c
67 再読することを望むかもしれません。@c
68 なぜなら、コンテキスト、エングラーバとそれらの中に含まれるプロパティは@c
69 調整について理解し、調整を構成するための基礎だからです。
70
71
72 @node オブジェクトとインタフェイス
73 @subsection オブジェクトとインタフェイス
74 @translationof Objects and interfaces
75
76 @cindex object (オブジェクト)
77 @cindex grob (グラフィカル オブジェクト)
78 @cindex spanner (スパナ)
79 @cindex interface (インタフェイス)
80 @cindex properties, object (オブジェクト プロパティ)
81 @cindex object properties (オブジェクト プロパティ)
82 @cindex layout object (レイアウト プロパティ)
83 @cindex object, layout (レイアウト プロパティ)
84
85 調整には LilyPond プログラムの内部オペレーションと構造体への変更も含まれます。@c
86 そのため、我々はまずそれらの内部オペレーションと構造体を記述するために@c
87 使用されるいくつかの用語を導入しなければなりません。
88
89 @q{オブジェクト} という用語は入力ファイルを処理している最中に LilyPond に@c
90 よってビルドされる多くの内部構造体を参照するために使われる汎用的な用語です。@c
91 LilyPond が @code{\new Staff} のようなコマンドに遭遇した場合、@c
92 タイプ @code{Staff} の新しいオブジェクトを構築します。@c
93 その @code{Staff} オブジェクトは、その譜のコンテキスト内部で機能するために@c
94 割り当てられているエングラーバの詳細とともに、その譜に関連付けられている@c
95 すべてのプロパティ -- 例えば、その譜の名前、調号 -- を保持します。@c
96 同様に、@code{Voice} オブジェクト、@code{Score} オブジェクト、@c
97 @code{Lyrics} オブジェクトなどの他のすべてのコンテキストのプロパティを@c
98 保持するためのオブジェクトが存在し、さらに、小節線、符頭、タイ、強弱記号などの@c
99 すべての記譜要素を表すためのオブジェクトも存在します。@c
100 各オブジェクトはそれ自体のプロパティ値のセットを持ちます。
101
102 いくつかのタイプのオブジェクトには特別な名前が与えられています。@c
103 符頭、符幹、スラー、タイ、運指記号、音部記号などの譜刻される出力上の記譜要素を@c
104 表すオブジェクトは @q{レイアウト オブジェクト} と呼ばれ、@c
105 しばしば @q{グラフィカル オブジェクト}
106 あるいは短くして @q{グロッブ (Grob: GRaphical OBject)} と呼ばれます。@c
107 これらのオブジェクトも上記の汎用的な観点から見るとオブジェクトであり、@c
108 それゆえ、それらもまたそれらのオブジェクトに関連付けされたプロパティ --
109 そのオブジェクトの位置、サイズ、色など -- を持ちます。
110
111 いくつかのレイアウト オブジェクトも特別です。@c
112 フレージング スラー、クレッシェンド、オッターバ記号、@c
113 他の多くのグラフィカル オブジェクトが置かれる場所は一点ではありません
114  -- それらは開始点、終了点、そしておそらくそれらの形に関係する@c
115 他のプロパティを持ちます。@c
116 これらのオブジェクトのように形が伸長されるオブジェクトは
117 @q{スパナ (Spanners)} と呼ばれます。
118
119 スパナは生成された後に調整を行うことができません。楽譜全体にわたって続く
120 @code{StaffSymbol} や @code{LedgerLineSpanner} も同様です。ただし、
121 @code{\stopStaff} コマンドによって終了し、@code{\startStaff} コマンドで新たに@c
122 生成された場合を除きます。
123
124 また、@q{抽象 (abstract)} グラフィカル オブジェクトというものも存在します。@c
125 これはオブジェクト自身は出力に何も書き出しませんが、他のグラフィカル
126 オブジェクトを収集し、配置や管理をする役割を担います。
127 @code{DynamicLineSpanner}, @code{BreakAlignment},
128 @code{NoteColumn}, @code{VerticalAxisGroup},
129 @code{NonMusicalPaperColumn} などが例です。後で、これらがどのように@c
130 使われるかを見ていきましょう。
131
132 @q{インタフェイス} とは何なのかという説明が残っています。@c
133 多くのオブジェクト -- たとえそれらが非常に異なっていたとしても --
134 は同じ方法で処理される必要がある共通特徴を共有します。@c
135 例えば、すべてのグラフィカル オブジェクトは色、サイズ、位置などを持ち、@c
136 これらのプロパティはすべて LilyPond が入力ファイルを構文解釈する最中に@c
137 同じ方法で処理されます。@c
138 これらの内部オペレーションを簡潔にするために、これらの共通アクションと@c
139 プロパティは 1 つのグループとして
140 @code{grob-interface} と呼ばれるオブジェクトにまとめられています。@c
141 これと同じような共有プロパティのグループ化が他にも多くあり、@c
142 それぞれに対して最後に @code{interface} が付く名前が与えられています。@c
143 そのようなインタフェイスの総数は 100 を越えます。@c
144 我々は後でなぜこれがユーザにとって利益となり、役に立つのかを見ていきます。
145
146 これらは、我々がこの章で使用するオブジェクトと関係する主要な用語です。
147
148
149 @node オブジェクトとプロパティの命名規則
150 @subsection オブジェクトとプロパティの命名規則
151 @translationof Naming conventions of objects and properties
152
153 @cindex naming conventions for objects (オブジェクトの命名規則)
154 @cindex naming conventions for properties (プロパティの命名規則)
155 @cindex objects, naming conventions (オブジェクトの命名規則)
156 @cindex properties, naming conventions (プロパティの命名規則)
157
158 我々は以前にも @ref{コンテキストとエングラーバ} で@c
159 いくつかのオブジェクト命名規則を見てきました。@c
160 ここで参照のために、最も一般的なオブジェクトとプロパティをリストアップし、@c
161 それに加えてそれらの命名規則と実際の名前の例を挙げます。@c
162 何らかの大文字のアルファベットを表すために @q{A} を使用し、@c
163 いくつかの小文字のアルファベットを表すために @q{aaa} を使用しています。@c
164 他の文字は実際の命名でもそのまま使用されます。
165
166 @multitable @columnfractions .33 .33 .33
167 @headitem オブジェクト/プロパティのタイプ
168   @tab 命名規則
169   @tab 例
170 @item コンテキスト
171   @tab Aaaa や AaaaAaaaAaaa
172   @tab Staff, GrandStaff
173 @item レイアウト オブジェクト
174   @tab Aaaa や AaaaAaaaAaaa
175   @tab Slur, NoteHead
176 @item エングラーバ
177   @tab Aaaa_aaa_engraver
178   @tab Clef_engraver, Note_heads_engraver
179 @item インタフェイス
180   @tab aaa-aaa-interface
181   @tab grob-interface, break-aligned-interface
182 @item コンテキスト プロパティ
183   @tab aaa や aaaAaaaAaaa
184   @tab alignAboveContext, skipBars
185 @item レイアウト オブジェクト プロパティ
186   @tab aaa や aaa-aaa-aaa
187   @tab direction, beam-thickness
188 @end multitable
189
190 これから見ていくのですが、タイプが異なるオブジェクトのプロパティは@c
191 異なるコマンドによって変更されます。@c
192 そのため、名前からオブジェクトやプロパティのタイプを識別できるように@c
193 なると役に立ちます。
194
195 @seealso
196 記譜法リファレンス:
197 @ruser{プロパティを変更する}
198
199
200 @node 調整手段
201 @subsection 調整手段
202 @translationof Tweaking methods
203
204 @cindex tweaking methods (調整手段)
205
206 @menu
207 * override コマンド::
208 * revert コマンド::
209 * once 接頭辞::
210 * overrideProperty コマンド::
211 * tweak コマンド::
212 * single 接頭辞::
213 @end menu
214
215 @node override コマンド
216 @unnumberedsubsubsec @code{@bs{}override} コマンド
217 @translationof The override command
218
219 @cindex override command (override コマンド)
220 @cindex override syntax (override 構文)
221
222 @funindex \override
223
224 我々はすでに @ref{コンテキスト プロパティを変更する} と
225 @ref{エングラーバを追加 / 削除する} で @strong{コンテキスト} のプロパティを@c
226 変更したり、@strong{エングラーバ} を追加/削除したりするために使用するコマンド
227 @code{\set} と @code{\with} を見てきました。@c
228 ここでは更に重要ないくつかのコマンドについて見ていきます。
229
230 @strong{レイアウト オブジェクト} のプロパティを変更するためのコマンドは
231 @code{\override} です。@c
232 このコマンドは LilyPond の奥深くにある内部プロパティを@c
233 変更しなければならないため、@c
234 これまで見てきたコマンドのように単純な構文ではありません。@c
235 どのコンテキストの中にあるどのオブジェクトのどのプロパティを@c
236 変更しなければならないのか、そこにセットする新しい値を何にするのかを@c
237 正確に知っている必要があります。@c
238 どのようにこれを行うのかを見ていきましょう。
239
240 このコマンドの一般的な構文は以下のようなものです:
241
242 @example
243 \override @var{Context}.@var{LayoutObject}.@var{layout-property} = #@var{value}
244 @end example
245
246 @noindent
247 これは @var{Context} コンテキストのメンバである
248 @var{LayoutObject} という名前のレイアウトの
249 @var{layout-property} という名前のプロパティに値 @var{value} をセットします。
250
251 必要とされているコンテキストが明白であり、それが最下位レベルのコンテキストである
252 -- つまり、@code{Voice}, @code{ChordNames} や @code{Lyrics} である
253 -- 場合、その @var{Context} は省略可能であり (そして通常は省略されます)、@c
254 この後の例の多くでも省略します。@c
255 後ほど、コンテキストを指定しなければならない場合について見ていきます。
256
257 これから後のセクションでは広範囲に亘るプロパティとそれらの値を扱います
258 -- @ref{Types of properties} を参照してください。@c
259 しかしながら、このセクションではそれらのフォーマットとコマンドの使い方を示す@c
260 ために、容易に理解できる簡単なプロパティと値をいくつか使用してみるだけです。
261
262 LilyPond の基本的な表記は音符、演奏時間、それにマークアップなどの音楽要素@c
263 です。@c
264 数字、文字列、それにリストなどのもっと基本的な表記は @q{Scheme モード}
265 で処理されます -- 表記の先頭に @samp{#} を記述することでこのモードが@c
266 呼び出されます。@c
267 これらの表記は LilyPond の音楽モードでも有効な表現である場合もありますが、@c
268 このマニュアルでは一貫性を保つために常に @samp{#} を付けて記述します。@c
269 Scheme モードについての更なる情報は @rextend{LilyPond Scheme syntax}
270 を参照してください。
271
272 @code{\override} は調整で用いられる最も一般的なコマンドであり、@c
273 本章の残りの大半を使ってこのコマンドの使用例を示します。@c
274 まずは符頭の色を変更する簡単な例を挙げます:
275
276 @cindex color property, example (color プロパティの例)
277 @cindex NoteHead, example of overriding (NoteHead をオーバライドする例)
278
279 @lilypond[quote,ragged-right,verbatim]
280 \relative {
281   c'4 d
282   \override NoteHead.color = #red
283   e4 f |
284   \override NoteHead.color = #green
285   g4 a b c |
286 }
287 @end lilypond
288
289
290 @node revert コマンド
291 @unnumberedsubsubsec @code{@bs{}revert} コマンド
292 @translationof The revert command
293
294 @cindex revert command (revert コマンド)
295
296 @funindex \revert
297
298 一旦オーバライドされると、そのプロパティは再度オーバライドされるか
299 @code{\revert} コマンドに遭遇するまで新しい値のままでいます。@c
300 @code{\revert} コマンドは以下の構文を持ち、@c
301 プロパティの値をオリジナルのデフォルト値に戻します。@c
302 何度か @code{\override} コマンドが発行されている場合は、@c
303 前の値に戻すわけではないということに注意してください。
304
305
306 @example
307 \revert @var{Context}.@var{LayoutObject}.@var{layout-property}
308 @end example
309
310 繰り返しますが、@code{\override} コマンドでの @var{Context} と同様に、@c
311 多くの場合で @var{Context} を記述する必要はありません。@c
312 以下の例の多くで、@var{Context} は省略されます。@c
313 ここでは、最後の 2 つの音符の符頭の色をデフォルトに戻します:
314
315 @cindex color property, example (color プロパティの例)
316 @cindex NoteHead, example of overriding (NoteHead をオーバライドする例)
317
318 @lilypond[quote,ragged-right,verbatim]
319 \relative {
320   c'4 d
321   \override NoteHead.color = #red
322   e4 f |
323   \override NoteHead.color = #green
324   g4 a
325   \revert NoteHead.color
326   b4 c |
327 }
328 @end lilypond
329
330
331 @node once 接頭辞
332 @unnumberedsubsubsec @code{@bs{}once} 接頭辞
333 @translationof The once prefix
334
335 @funindex \once
336
337 @code{\override}, @code{\revert}, @code{\set}, @code{\unset} コマンドには@c
338 接頭辞 @code{\once} が付く可能性があります。@c
339 これはこのようなコマンドを@c
340 その場一回限り有効にし、その後にそのプロパティの値をデフォルト値に戻します。@c
341 上と同じ例を使って、以下のように 1 つだけの音符の色を変更することができます:
342
343 @cindex color property, example (color プロパティの例)
344 @cindex NoteHead, example of overriding (NoteHead をオーバライドする例)
345
346 @lilypond[quote,verbatim]
347 \relative {
348   c'4 d
349   \override NoteHead.color = #red
350   e4 f |
351   \once \override NoteHead.color = #green
352   g4 a
353   \once \revert NoteHead.color
354   b c |
355   \revert NoteHead.color
356   f2 c |
357 }
358 @end lilypond
359
360 @code{\once} 接頭辞をさまざまな定義済みコマンドの前に置くことで、@c
361 コマンドの効果を次の音楽タイミングに限定することもできます:
362
363 @lilypond[quote,verbatim]
364 \relative {
365   c'4( d)
366   \once \slurDashed
367   e4( f) |
368   g4( a)
369   \once \hideNotes
370   b( c) |
371 }
372 @end lilypond
373
374 @node overrideProperty コマンド
375 @unnumberedsubsubsec @code{@bs{}overrideProperty} コマンド
376 @translationof The overrideProperty command
377
378 @cindex overrideProperty command (overrideProperty コマンド)
379
380 @funindex \overrideProperty
381
382 オーバライド コマンドには @code{\overrideProperty} という@c
383 もう 1 つのフォーマットがあり、時々必要となります。@c
384 完璧を期すためにここでこれに言及しましたが、@c
385 詳細は @rextend{Difficult tweaks} を参照してください。
386 @c Maybe explain in a later iteration  -td
387
388 @node tweak コマンド
389 @unnumberedsubsubsec @code{@bs{}tweak} コマンド
390 @translationof The tweak command
391
392 @cindex tweak command (tweak コマンド)
393
394 @funindex \tweak
395
396 利用可能な最後の調整コマンドは @code{\tweak} です。@c
397 これは同じ音楽タイミングで発生するいくつかのオブジェクトのうち、@c
398 1 つのオブジェクトだけを選択してプロパティを変更したい場合に@c
399 使用します
400 -- 例えば、和音の中にある 1 つの音符のプロパティを変更する場合です。@c
401 @code{\override} コマンドを使用すると和音の中にあるすべての音符に@c
402 影響を与えます。@c
403 一方、@code{\tweak} は入力ストリームの中でその @code{\tweak} の@c
404 すぐ後にある要素 1 つだけに影響を与えます。
405
406 ここで例を挙げます。@c
407 C メジャー コードの中にある真ん中の音符 (ミドル E) の符頭のサイズを@c
408 変更したいとします。@c
409 まず最初に、@code{\once \override} だとどうなるか見てみましょう:
410
411 @cindex font-size property, example (font-size プロパティの例)
412 @cindex NoteHead, example of overriding (NoteHead をオーバライドする例)
413
414 @lilypond[quote,ragged-right,verbatim]
415 \relative {
416   <c' e g>4
417   \once \override NoteHead.font-size = #-3
418   <c e g>4
419   <c e g>4
420 }
421 @end lilypond
422
423 このオーバライドは和音の中にある@emph{すべて}の符頭に影響を与えています。@c
424 これは和音の中にあるすべての音符が同じ @emph{タイミング} で起こるためであり、@c
425 @code{\once} のアクションは @code{\override} と同様に同じタイミングで起こる、@c
426 指定されたタイプすべてのレイアウト オブジェクトへのオーバライドに適用されます。
427
428 @code{\tweak} コマンドはこれとは異なるやり方で処理されます。@c
429 これは入力ストリームの中ですぐ後に続く要素にだけ作用します。@c
430 最もシンプルな形式の @code{\tweak} コマンドは、@c
431 コマンドの直後にある要素から直接作成されるオブジェクト
432 -- 本質的に符頭とアーティキュレーション -- にだけ効果を持ちます。@c
433
434 それでは例に戻り、この方法で和音の真ん中の音符のサイズを変更します:
435
436 @cindex font-size property, example (font-size プロパティの例)
437 @cindex @code{\tweak}, example (@code{\tweak} の例)
438
439 @lilypond[quote,ragged-right,verbatim]
440 \relative {
441   <c' e g>4
442   <c \tweak font-size #-3 e g>4
443 }
444 @end lilypond
445
446 @code{\tweak} の構文は @code{\override} コマンドの構文とは@c
447 異なるということに注意してください。@c
448 コンテキストを指定しません -- 実際、指定するとエラーになります。@c
449 コンテキストとレイアウト オブジェクトはどちらも入力ストリームの中で@c
450 後に続く要素によって示されます。@c
451 さらに、イコール記号を使うべきではないということに注意してください。@c
452 そのため、簡単な形式の @code{\tweak} コマンドは以下のようになります:
453
454 @example
455 \tweak @var{layout-property} #@var{value}
456 @end example
457
458 さらに、@code{\tweak} コマンドは一連のアーティキュレーションの中にある@c
459 ただ 1 つのアーティキュレーションを変更されるためにも使用できます。@c
460 ここに例を挙げます:
461
462 @cindex color property, example (color プロパティの例)
463 @cindex @code{\tweak}, example (@code{\tweak} の例)
464
465 @lilypond[quote,fragment,ragged-right,verbatim]
466 a'4^"Black"
467   -\tweak color #red ^"Red"
468   -\tweak color #green _"Green"
469 @end lilypond
470
471 @noindent
472 @code{\tweak} コマンドはアーティキュレーション マークの前に配置する@c
473 必要があることに注意してください。@c
474 なぜなら、調整された表記がアーティキュレーションとして適用される必要がある@c
475 ためです。@c
476 複数の向き記号 (@code{^} または @code{_}) で上書きした場合、@c
477 最後に適用される左端の記号が勝ち残ります。
478
479 @cindex @code{\tweak}, Accidental (臨時記号に @code{\tweak} を用いる)
480 @cindex @code{\tweak}, specific layout object (レイアウト オブジェクトを指定して @code{\tweak} を用いる)
481
482 符幹や臨時記号などのオブジェクトは後になってから作成されるもので、@c
483 @code{\tweak} コマンドの後に続くイベントから直接作成されません。@c
484 そのような直接作成されないオブジェクトの場合、明示的にレイアウト
485 オブジェクト名を指定して LilyPond がそれらのオブジェクトの起源を@c
486 追跡できるようにすることで、@code{\tweak} で調整することができます:
487
488 @lilypond[quote,fragment,ragged-right,verbatim]
489 <\tweak Accidental.color #red   cis''4
490  \tweak Accidental.color #green es''
491  g''>
492 @end lilypond
493
494 この長い形式の @code{\tweak} コマンドは以下のように記述することができます:
495
496 @example
497 \tweak @var{LayoutObject}.@var{layout-property} #@var{value}
498 @end example
499
500 @cindex tuplets, nested (ネストされた連符)
501 @cindex triplets, nested (ネストされた 3 連符)
502 @cindex bracket, tuplet (連符の囲み)
503 @cindex bracket, triplet (3 連符の囲み)
504 @cindex tuplet bracket (連符の囲み)
505 @cindex triplet bracket (3 連符の囲み)
506
507 @funindex TupletBracket
508
509 さらに、@code{\tweak} コマンドは、同時に起こるネストされた@c
510 連符記号のセットのうちの 1 つの見た目を変更するためにも使用されます。@c
511 以下の例では、長い連符記号と 3 つの短い連符記号のうちの最初の連符記号が@c
512 同時に起こります。@c
513 そのため、@code{\override} コマンドだと両方の連符記号に@c
514 適用されてしまいます。@c
515 この例では、@code{\tweak} は 2 つの連符記号を区別するために@c
516 使用されています。@c
517 最初の @code{\tweak} コマンドは長い連符記号を音符の上に置くことを@c
518 指定していて、2 番目の @code{\tweak} コマンドは最初の短い連符記号の数字を@c
519 赤で描くことを指定しています。
520
521 @cindex @code{\tweak}, example (@code{\tweak} の例)
522 @cindex direction property, example (direction プロパティの例)
523 @cindex color property, example (color プロパティの例)
524
525 @lilypond[quote,ragged-right,verbatim]
526 \relative c'' {
527   \tweak direction #up
528   \tuplet 3/4 {
529     \tweak color #red
530     \tuplet 3/2 { c8[ c c] }
531     \tuplet 3/2 { c8[ c c] }
532     \tuplet 3/2 { c8[ c c] }
533   }
534 }
535 @end lilypond
536
537 ネストされた連符が同時に起こらない場合、それらの見た目は @code{\override}
538 コマンドを用いた通常通りの方法で変更されるかもしれません:
539
540 @cindex text property, example (text プロパティの例)
541 @cindex tuplet-number function, example (tuplet-number 関数の例)
542 @cindex transparent property, example (transparent プロパティの例)
543 @cindex TupletNumber, example of overriding (TupletNumber をオーバライドする例)
544
545 @lilypond[quote,ragged-right,verbatim]
546 \relative {
547   \tuplet 3/2 { c'8[ c c] }
548   \once \override TupletNumber.text = #tuplet-number::calc-fraction-text
549   \tuplet 3/2 {
550     c8[ c]
551     c8[ c]
552     \once \override TupletNumber.transparent = ##t
553     \tuplet 3/2 { c8[ c c] }
554     \tuplet 3/2 { c8[ c c] }
555   }
556 }
557 @end lilypond
558
559
560 @seealso
561 記譜法リファレンス:
562 @ruser{The tweak command}
563
564 @node single 接頭辞
565 @unnumberedsubsubsec @code{@bs{}single} 接頭辞
566 @translationof The single prefix
567
568 @funindex \single
569 @cindex tweak, generated from override (override から生成される tweak)
570
571 特定の符頭を赤色にしてサイズを大きくすることによって、強調を行いたいと@c
572 しましょう。また、それを簡単にするためにこのような関数を定義したとしましょう:
573
574 @lilypond[quote,verbatim]
575 emphNoteHead = {
576   \override NoteHead.color = #red
577   \override NoteHead.font-size = 2
578 }
579 \relative {
580   c''4 a \once \emphNoteHead f d |
581 }
582 @end lilypond
583
584 @code{\once} 接頭辞は単音や和音全体には動作しますが、和音@emph{内}の@c
585 一つの音符に対しては使うことができません。さっき、@code{\tweak} は@c
586 このような場面で使うということを学びました。
587 @ref{tweak コマンド,,@code{@bs{}tweak} コマンド} を参照してください。@c
588 しかし、@code{\tweak} は関数と一緒に使うことができません。そこで
589 @code{\single} の登場です:
590
591 @lilypond[quote,verbatim]
592 emphNoteHead = {
593   \override NoteHead.color = #red
594   \override NoteHead.font-size = 2
595 }
596 \relative {
597    <c'' a \single \emphNoteHead f d>4
598 }
599 @end lilypond
600
601 要約すると、@code{\single} は @code{\override} を @code{\tweak} に変換します。@c
602 よって、(和音内の音符のように) 同じタイミングにいくつかのオブジェクトが@c
603 存在する場合、@code{\once} はその全てに影響を与えるのに対し、
604 @code{\single} はその内の 1 つに -- すぐ後に続く音楽表記のみに -- 作用します。
605
606 @code{\single} をこのように使用することで、@code{\override} のみから成る@c
607 簡略化のために定義された関数を、和音内の各音符に対して適用することができます。@c
608 しかし、@code{\single} は @code{\revert}, @code{\set}, @code{\unset} を
609 @code{\tweak} に変換することはできません。
610
611 @seealso
612 学習マニュアル:
613 @ref{tweak コマンド,,@code{@bs{}tweak} コマンド},
614 @ref{レイアウトの調整のために変数を使用する}
615
616
617 @node 内部リファレンス マニュアル
618 @section 内部リファレンス マニュアル
619 @translationof The Internals Reference manual
620
621 @cindex Internals Reference (内部リファレンス)
622
623 @menu
624 * レイアウト オブジェクトのプロパティ::
625 * インタフェイスの中で見つかるプロパティ::
626 * プロパティのタイプ::
627 @end menu
628
629 @node レイアウト オブジェクトのプロパティ
630 @subsection レイアウト オブジェクトのプロパティ
631 @translationof Properties of layout objects
632
633 @cindex properties of layout objects (レイアウト オブジェクトのプロパティ)
634 @cindex properties of grobs (グラフィカル オブジェクトのプロパティ)
635 @cindex grobs, properties of (グラフィカル オブジェクトのプロパティ)
636 @cindex layout objects, properties of (レイアウト オブジェクトのプロパティ)
637 @cindex Internals Reference manual (内部リファレンス マニュアル)
638
639 あなたがスラーを楽譜に描き、@c
640 そのスラーが細すぎるためにもう少し太くしたいと思ったとします。@c
641 どうやってスラーを太くしますか?@c
642 以前に LilyPond の自由度の高さについて述べたので、@c
643 そのようなことが可能であることは知っています。@c
644 あなたはおそらく @code{\override} コマンドが必要であると推測するでしょう。@c
645 しかしながら、スラーの太さプロパティは存在するのでしょうか?@c
646 そして、それが存在するならどうやって変更するのでしょうか?@c
647 このようなことに内部リファレンス マニュアルは触れています。@c
648 内部リファレンス マニュアルには、あなたがスラーを太くするために必要な情報、@c
649 他のすべての @code{\override} コマンドを構築するために必要な情報が@c
650 含まれています。
651
652 内部リファレンスを見ていく前に一言警告です。@c
653 これは @strong{リファレンス} ドキュメントであり、@c
654 説明はほんの少しかまったく含まれていません:
655 リファレンスの目的は情報を正確に、かつ簡潔に提供することです。@c
656 そのため、内部リファレンスを一見してひるんでしまうかもしれません。@c
657 しかし、心配しないでください!@c
658 ここにあるガイダンスと説明を読めば、少し練習するだけで、@c
659 内部リファレンスから必要な情報を取り出せるようになります。
660
661 @cindex override example (オーバライドの例)
662 @cindex Internals Reference, example of using (内部リファレンスの使用例)
663 @cindex @code{\addlyrics} example (@code{\addlyrics} の例)
664
665 実際の音楽からの簡単な断片を持つ具体例を使用していきましょう:
666
667 @c Mozart, Die Zauberflöte Nr.7 Duett
668
669 @lilypond[quote,verbatim]
670 {
671   \key es \major
672   \time 6/8
673   \relative {
674     r4 bes'8 bes[( g]) g |
675     g8[( es]) es d[( f]) as |
676     as8 g
677   }
678   \addlyrics {
679     The man who | feels love's sweet e -- | mo -- tion
680   }
681 }
682 @end lilypond
683
684 ここで、スラーをもう少し太くしようと決めたことにします。@c
685 それは可能でしょうか?@c
686 スラーは確かにレイアウト オブジェクトです。@c
687 そのため、その疑問は
688 @q{スラーに属していて、太さを制御するプロパティは存在するのか?}
689 ということになります。@c
690 その答えを得るために内部リファレンス -- 縮めて IR -- を見なければなりません。
691
692 あなたが使用しているバージョンの LilyPond のための内部リファレンスは
693 LilyPond ウェブサイト @uref{http://lilypond.org} で見つかるでしょう。@c
694 ドキュメント ページに行き、内部リファレンスへのリンクをクリックしてください。@c
695 学習目的のためには標準の HTML バージョンを使うべきであり、@c
696 @q{1 つの大きなページ} や PDF を使うべきではありません。@c
697 次の数段落を読めば、あなたが内部リファレンスを読むときに@c
698 実際にすべきことがわかるでしょう。
699
700 内部リファレンスの @strong{トップ ページ} 下には 5 つのリンクがあります。@c
701 @emph{Backend} へのリンクを選択してください。@c
702 そこにはレイアウト オブジェクトについての情報があります。@c
703 @strong{Backend} 下にある @emph{All layout objects} へのリンクを@c
704 選択してください。@c
705 そのページには、あなたが使用しているバージョンの LilyPond で使用される@c
706 すべてのレイアウト オブジェクトがアルファベット順で@c
707 リストアップされています。@c
708 Slur へのリンクを選択すると、Slur のプロパティがリスト アップされます。
709
710 記譜法リファレンスからこのページを見つける方法もあります。@c
711 スラーについて扱っているページで、内部リファレンスへのリンクが@c
712 見つかるかもしれません。@c
713 このリンクでこのページに直接行くことができます。@c
714 しかしながら、あなたが調整するレイアウト オブジェクトの名前を@c
715 想像できる場合は、すぐに内部リファレンスに行ってそこで探す方が簡単です。
716
717 内部リファレンスの Slur ページでは、まず Slur オブジェクトは
718 @code{Slur_engraver} によって作成されるということが述べられています。@c
719 それから、標準設定がリストアップされています。@c
720 スラーの太さを制御していそうなプロパティを探してブラウザをスクロール ダウン@c
721 させていくと、以下が見つかります:
722
723 @example
724 thickness (number)
725      1.2
726      Line thickness, generally measured in line-thickness
727 @end example
728
729 これが太さを変更するプロパティのようです。@c
730 @code{thickness} の値は @emph{数} であり、デフォルト値は 1.2、@c
731 この値は他のプロパティでは @code{line-thickness} と@c
732 呼ばれるということがわかります。
733
734 前にも言ったように、内部リファレンスには説明がほとんど、@c
735 あるいはまったくありません。@c
736 しかしながら、すでにスラーの太さを変えるための十分な情報を持っています。@c
737 レイアウト オブジェクトの名前は @code{Slur} であり、@c
738 変更するプロパティの名前は @code{thickness} であり、@c
739 スラーをもっと太くするには新しい値を 1.2 よりも大きくすべきであることが@c
740 わかります。
741
742 今度は、レイアウト オブジェクト名で見つけた値を置き換えることによって
743 @code{\override} コマンドを構築することができます。@c
744 コンテキストは省略します。@c
745 最初は太さに非常に大きな値を割り当ててみます。@c
746 それによって、そのコマンドが確かに機能していることを確かめることができます。@c
747 実行するコマンドは以下のようになります:
748
749 @example
750 \override Slur.thickness = #5.0
751 @end example
752
753 新しい値の前に @code{#} を付けることを忘れないでください!
754
755 最後の疑問は @q{このコマンドをどこに置くべきか?} ということです。@c
756 そのことについて不確かであり、学んでいる最中であるのならば、@c
757 ベストな答えはこうです @q{音楽表記の内部で、最初のスラーの直前}。@c
758 ではやってみましょう:
759
760 @cindex Slur example of overriding (Slur をオーバライドする例)
761 @cindex thickness property, example (thickness プロパティの例)
762
763 @c KEEP LY
764 @lilypond[quote,verbatim]
765 {
766   \key es \major
767   \time 6/8
768   \relative {
769     % これ以降にある全てのスラーの太さを 1.2 から 5.0 にします
770     \override Slur.thickness = #5.0
771     r4 bes'8 bes[( g]) g |
772     g8[( es]) es d[( f]) as |
773     as8 g
774   }
775   \addlyrics {
776     The man who | feels love's sweet e -- | mo -- tion
777   }
778 }
779 @end lilypond
780
781 @noindent
782 確かにスラーが太くなっています。
783
784 これが @code{\override} コマンドを構築する基本的な方法です。@c
785 これより後のセクションで遭遇するものはもう少し複雑ですが、@c
786 必要な要点はすべて知っています
787 -- しかしながら、まだ練習が必要でしょう。@c
788 これは以下の例で提供されます。
789
790 @subsubsubheading コンテキストを見つけ出す
791
792 @cindex context, finding (コンテキストを見つけ出す)
793 @cindex context, identifying correct (正しいコンテキストを特定する)
794
795 しかしながら、まず最初にコンテキストを指定しなければならないとしたら@c
796 どうでしょうか?@c
797 指定すべきコンテキストは何でしょうか?@c
798 スラーとボイスは音楽表記の各行で明らかに関係が深いので、@c
799 スラーは @code{Voice} コンテキストの中にあると推測できるかもしれません。@c
800 しかし、それは確かでしょうか?@c
801 この問題を解決するには、Slur について記述している内部リファレンス ページの@c
802 先頭に戻ります。@c
803 そこには @q{Slur オブジェクトは Slur エングラーバによって作成される} と@c
804 書かれています。@c
805 そのため、スラーは @code{Slur_engraver} が存在しているコンテキストの@c
806 どれかで作成されるということになります。@c
807 @code{Slur_engraver} へのリンクを辿ります。@c
808 そのページの最後の方で @code{Slur_engraver} は 7 つのボイス コンテキスト
809 -- 標準のボイス コンテキストである @code{Voice} を含む
810 -- の一部であることが述べられています。@c
811 ですから、推測は正しかったのです。@c
812 そして、@code{Voice} は最下位のコンテキストの 1 つである
813 -- このことは、そこに音符を入力するという事実によって明らかに示されています
814 -- ため、ここではそのコンテキストを省略することができるのです。
815
816 @subsubsubheading 1 回だけオーバライドする
817
818 @cindex overriding once only (一度だけオーバライドする)
819 @cindex once override (一度だけオーバライドする)
820
821 @funindex \once
822
823 上記の最後の例では @emph{すべて} のスラーが太くなっています。@c
824 しかし、最初のスラーだけを太くしたい場合はどうでしょうか?@c
825 これは @code{\once} コマンドを使うことによって達成されます。@c
826 @code{\override} コマンドの直前に @code{\once} コマンドを@c
827 置くことによって、@code{\override} コマンドは @strong{直後にある} 音符から@c
828 始まるスラーだけを変更するようになります。@c
829 直後にある音符がスラーの開始点ではない場合、そのコマンドはまったく機能しません
830 -- それがスラーに遭遇するまで保持されるということはなく、@c
831 ただ切り捨てられるだけです。@c
832 そのため、@code{\once} コマンド付きの @code{\override} コマンドは@c
833 以下のように上記の例とは異なる場所に置かなくてはなりません:
834
835 @cindex Slur, example of overriding (Slur をオーバライドする例)
836 @cindex thickness property, example (thickness プロパティの例)
837
838 @c KEEP LY
839 @lilypond[quote,verbatim]
840 {
841   \key es \major
842   \time 6/8
843   \relative {
844     r4 bes'8
845     % 直後にあるスラーのみを太くします
846     \once \override Slur.thickness = #5.0
847     bes8[( g]) g |
848     g8[( es]) es d[( f]) as |
849     as8 g
850   }
851   \addlyrics {
852     The man who | feels love's sweet e -- | mo -- tion
853   }
854 }
855 @end lilypond
856
857 @noindent
858 今度は、最初のスラーだけが太くなりました。
859
860 @code{\once} コマンドは @code{\set} コマンドの前でも使用される可能性があります。
861
862 @subsubsubheading 元に戻す
863
864 @cindex revert (元に戻す)
865 @cindex default properties, reverting to (デフォルトのプロパティに戻す)
866
867 @funindex \revert
868
869 最後に、最初の 2 つだけのスラーを太くしたい場合はどうでしょうか?@c
870 その場合、2 つのコマンド -- それぞれの前に @code{\once} を付けた --
871 をスラーが始まる音符の直前に置きます:
872
873 @cindex Slur, example of overriding (Slur をオーバライドする例)
874 @cindex thickness property, example (thickness プロパティの例)
875
876 @c KEEP LY
877 @lilypond[quote,verbatim]
878 {
879   \key es \major
880   \time 6/8
881   \relative {
882     r4 bes'8
883     % 直後にあるスラーのみを太くします
884     \once \override Slur.thickness = #5.0
885     bes[( g]) g |
886     % 直後にあるスラーのみを太くします
887     \once \override Slur.thickness = #5.0
888     g8[( es]) es d[( f]) as |
889     as8 g
890   }
891   \addlyrics {
892     The man who | feels love's sweet e -- | mo -- tion
893   }
894 }
895 @end lilypond
896
897 @noindent
898 あるいは、@code{\once} コマンドを省略して、2 番目のスラーの後に
899 @code{thickness} プロパティをデフォルト値に戻すために
900 @code{\revert} コマンドを使うこともできます:
901
902 @cindex Slur, example of overriding (Slur をオーバライドする例)
903 @cindex thickness property, example (thickness プロパティの例)
904
905 @c KEEP LY
906 @lilypond[quote,verbatim]
907 {
908   \key es \major
909   \time 6/8
910   \relative {
911     r4 bes'8
912     % 以後のスラーの太さを 1.2 から 5.0 に増やします
913     \override Slur.thickness = #5.0
914     bes[( g]) g |
915     g8[( es]) es
916     % 以後のスラーの太さをデフォルトの 1.2 に戻します
917     \revert Slur.thickness
918     d8[( f]) as |
919     as8 g
920   }
921   \addlyrics {
922     The man who | feels love's sweet e -- | mo -- tion
923   }
924 }
925 @end lilypond
926
927 @noindent
928 @code{\revert} コマンドは @code{\override} コマンドで@c
929 変更されたどのプロパティでもデフォルト値に戻すことができます。@c
930 状況に相応しい方を使用してください。
931
932 これで内部リファレンスと調整の基本的な方法についての紹介を終わりにします。@c
933 この章で後に続くセクションの中にあるいくつのかの例でも一部では、@c
934 内部リファレンスの特徴についての追加の紹介や、そこから情報を取り出すための@c
935 更なる練習を提供します。@c
936 それらの例ではガイダンスや説明のための言葉はずっと少ないでしょう。
937
938
939 @node インタフェイスの中で見つかるプロパティ
940 @subsection インタフェイスの中で見つかるプロパティ
941 @translationof Properties found in interfaces
942
943 @cindex interface (インタフェイス)
944 @cindex interface properties (インタフェイス プロパティ)
945 @cindex properties in interfaces (インタフェイス内のプロパティ)
946
947 今度は歌詞をイタリック体で譜刻したいということにします。@c
948 そうするには @code{\override} コマンドをどのように使う必要があるのでしょうか?@c
949 以前と同様に、まず @q{すべてのレイアウト オブジェクト} をリストアップしている@c
950 内部リファレンス ページを開き、歌詞をコントロールしていそうなオブジェクトを@c
951 探します。@c
952 @code{LyricText} がそれであるようです。@c
953 これをクリックすると、歌詞のテキストに対してセットすることができる@c
954 プロパティが表示されます。@c
955 そこには @code{font-series} と @code{font-size} が含まれますが、@c
956 歌詞をイタリック体にするためのプロパティらしきものはありません。@c
957 これは、形に関するプロパティはすべてのフォント オブジェクトに共通なもの@c
958 であり、そのため、各レイアウト オブジェクトに含まれているのではなく、@c
959 他の同様な共通プロパティと一緒にグループ化されていて、@c
960 @strong{インタフェイス} の 1 つ @code{font-interface} の中に@c
961 置かれているからです。
962
963 そのため、インタフェイスのプロパティを見つける方法と、どのオブジェクトが@c
964 これらのインタフェイス プロパティを使うのかを調べる方法を学ぶ必要があります。
965
966 @code{LyricText} について記述している内部リファレンスのページを@c
967 再び開いてください。@c
968 そのページの最後に @code{LyricText} がサポートするインタフェイスへのリンクが@c
969 リスト アップされています。@c
970 そのリストには @code{font-interface} を含むいくつかの要素があります。@c
971 このリンクをクリックすると、このインタフェイスに@c
972 関連付けされているプロパティのところに行きます。@c
973 これらのプロパティは @code{LyricText} を含む @code{font-interface} を@c
974 サポートするすべてのオブジェクトのプロパティでもあります。
975
976 @code{font-shape(symbol)} を含むフォントを制御するユーザが@c
977 設定可能なプロパティをすべて見つけました。@c
978 @code{font-shape(symbol)} では @code{symbol} を @code{upright},
979 @code{italics}, あるいは @code{caps} にセットすることができます。
980
981 そこには、@code{font-series} と @code{font-size} もリスト アップされている@c
982 ことに気づくでしょう。@c
983 そこで次のような疑問が湧いてきます:
984 共通フォントプロパティ @code{font-series} と @code{font-size} は
985 @code{LyricText} とインタフェイス @code{font-interface} の両方で@c
986 リスト アップされているのに、なぜ @code{font-shape} はそうでないのか?@c
987 その答えは、@code{font-series} と @code{font-size} は、@c
988 @code{LyricText} オブジェクトが作成されるときに、@c
989 それらのグローバルなデフォルト値から変更されるのに対して、@c
990 @code{font-shape} はそうではないからです。@c
991 @code{LyricText} の中にあるエントリから @code{LyricText} に適用される@c
992 それら 2 つのプロパティの値がわかります。@c
993 @code{font-interface} をサポートする他のオブジェクトは、@c
994 それらのオブジェクトが作成されるときに、@c
995 それらのプロパティを異なる値にセットします。
996
997 今度は歌詞をイタリック体に変更するように @code{\override} コマンドを@c
998 構築できるかどうかを見ていきましょう。@c
999 オブジェクトは @code{LyricText} であり、@c
1000 プロパティは @code{font-shape} であり、セットする値は @code{italic} です。@c
1001 前と同様に、コンテキストを省略します。
1002
1003 話は逸れますが重要なことを 1 つ挙げます。@c
1004 プロパティには値としてシンボル (例えば @code{italic}) を取るものがあります。@c
1005 シンボルの前にはアポストロフィ @code{'} を置く必要があり、そうすることで内部的に
1006 LilyPond に読み込まれます。@c
1007 任意のテキスト文字列との違い -- 任意のテキスト文字列は @code{"a text string"}
1008 のような形で表記されます -- に注意してください。@c
1009 シンボルと文字列についてのより詳細な説明は@rextend{Scheme tutorial}
1010 を参照してください。
1011
1012 さて、それでは歌詞をイタリック体で譜刻するために必要となる
1013 @code{\override} コマンドは以下のようになります:
1014
1015 @example
1016 \override LyricText.font-shape = #'italic
1017 @end example
1018
1019 @noindent
1020 そして、これは以下のように影響を与える歌詞の前に、そして近くに置くべきです:
1021
1022 @cindex font-shape property, example (font-shape プロパティの例)
1023 @cindex italic, example (italic の例)
1024 @cindex LyricText, example of overriding (Lyric をオーバライドする例)
1025 @cindex @code{\addlyrics}, example (@code{\addlyrics} の例)
1026
1027 @lilypond[quote,ragged-right,verbatim]
1028 {
1029   \key es \major
1030   \time 6/8
1031   \relative {
1032     r4 bes'8 bes[( g]) g |
1033     g8[( es]) es d[( f]) as |
1034     as8 g
1035   }
1036   \addlyrics {
1037     \override LyricText.font-shape = #'italic
1038     The man who | feels love's sweet e -- | mo -- tion
1039   }
1040 }
1041 @end lilypond
1042
1043 @noindent
1044 これで歌詞がすべてイタリック体で譜刻されました。
1045
1046 @warning{歌詞の中では、最後の音節と終端の波括弧の間に常にスペースを@c
1047 置いてください。}
1048
1049
1050 @seealso
1051 拡張: @rextend{Scheme tutorial}
1052
1053
1054 @node プロパティのタイプ
1055 @subsection プロパティのタイプ
1056 @translationof Types of properties
1057
1058 @cindex property types (プロパティ タイプ)
1059
1060 これまでにプロパティのタイプを 2 つ見てきました:
1061 @code{number} と @code{symbol} です。@c
1062 プロパティに与える値が有効であるためには、その値は正しいタイプであり、@c
1063 そのタイプのルールに従っていなければなりません。@c
1064 プロパティのタイプは内部リファレンスの中で常にプロパティ名の後の括弧の中に@c
1065 表示されています。@c
1066 ここに、あなたが必要になるであろうプロパティのタイプを、@c
1067 そのタイプのルールといくつかの例と共にリスト アップします。@c
1068 @code{\override} コマンドの中でプロパティの値を入力する時は、@c
1069 当然、常にそれらの値の前にハッシュ記号 @code{#} を付け加える必要があります
1070 -- 例え、その値自体が @code{#} で始まっていたとしても付け加える必要があり@c
1071 ます。@c
1072 ここでは定数の例だけを示します: Scheme を用いて値の計算をしたいのであれば、@c
1073 @rextend{Calculations in Scheme} を参照してください。
1074
1075 @multitable @columnfractions .2 .45 .35
1076 @headitem プロパティ タイプ
1077   @tab 規則
1078   @tab 例
1079 @item Boolean
1080   @tab 真か偽のどちらかで、それぞれ #t と #f で表されます
1081   @tab @code{#t}, @code{#f}
1082 @item Dimension (譜スペース)
1083   @tab 小数 (譜スペース単位)
1084   @tab @code{2.5}, @code{0.34}
1085 @item Direction
1086   @tab 向きを表す有効な定数またはそれと等価な数値 (-1 から 1 までの小数が@c
1087 許可されます)
1088   @tab @code{LEFT}, @code{CENTER}, @code{UP},
1089        @code{1}, @w{@code{-1}}
1090 @item Integer
1091   @tab 整数
1092   @tab @code{3}, @code{-1}
1093 @item List
1094   @tab 一連の定数またはシンボル。@c
1095   スペースで区切られ、前にアポストロフィが付いた括弧で囲まれます
1096   @tab @code{'(left-edge staff-bar)}, @code{'(1)}, @code{'()},
1097        @code{'(1.0 0.25 0.5)}
1098 @item Markup
1099   @tab 有効なマークアップ
1100   @tab @code{\markup @{ \italic "cresc." @}}
1101 @item Moment
1102   @tab make-moment 関数で構築される全音符の分数
1103   @tab @code{(ly:make-moment 1/4)},
1104        @code{(ly:make-moment 3/8)}
1105 @item Number
1106   @tab 正または負の小数
1107   @tab @code{3.5}, @w{@code{-2.45}}
1108 @item (数の) Pair
1109   @tab @q{スペース . スペース} で区切られ、前にアポストロフィが付いた括弧で@c
1110 囲まれた 2 つの数値
1111   @tab @code{'(2 . 3.5)}, @code{'(0.1 . -3.2)}
1112 @item Symbol
1113   @tab プロパティに許可されているシンボルのセットのいずれかであり、@c
1114 前にアポロストロフィを付けます
1115   @tab @code{'italic}, @code{'inside}
1116 @item Unknown
1117   @tab 手続き。何のアクションも起こさない場合は @code{#f}
1118   @tab @code{bend::print}, @code{ly:text-interface::print},
1119        @code{#f}
1120 @item Vector
1121   @tab @code{#(}@dots{}@code{)} で囲まれたいくつかの定数
1122   @tab @code{#(#t #t #f)}
1123 @end multitable
1124
1125
1126 @seealso
1127 拡張: @rextend{Scheme tutorial}
1128
1129
1130 @node オブジェクトの見た目
1131 @section オブジェクトの見た目
1132 @translationof Appearance of objects
1133
1134 いくつかの例を使ってこれまでに学んだことを練習して、譜刻される楽譜の見た目を@c
1135 変更するためにどのように調整が使われるのかを見ていきましょう。
1136
1137 @menu
1138 * オブジェクトの可視性と色::
1139 * オブジェクトのサイズ::
1140 * オブジェクトの長さと太さ::
1141 @end menu
1142
1143
1144 @node オブジェクトの可視性と色
1145 @subsection オブジェクトの可視性と色
1146 @translationof Visibility and color of objects
1147
1148 教育目的の楽譜では、ある要素を省略した楽譜を譜刻して、@c
1149 学生にそれを付け足させるという訓練にしたいと思うかもしれません。@c
1150 簡単な例として、その訓練とは小節線の無い楽譜だと仮定してみましょう。@c
1151 しかしながら、通常、小節線は自動的に挿入されます。@c
1152 どうやって小節線が譜刻されることを防ぐのでしょうか?
1153
1154 このことに挑戦する前に、オブジェクト プロパティは @emph{インタフェイス} と@c
1155 呼ばれるものにグループ化されているということを思い出してください
1156 -- @ref{インタフェイスの中で見つかるプロパティ} を参照してください。@c
1157 これはあるグラフィカル オブジェクトを調整するために一緒に@c
1158 使用されるかもしれないプロパティをグループ化したものです
1159 -- あるオブジェクトに対してインタフェイス内のプロパティの 1 つを使うことが@c
1160 許可されるのなら、他のプロパティも許可されます。@c
1161 あるオブジェクトはいくつかのインタフェイス内にあるプロパティを使用し、@c
1162 別のオブジェクトはそれとは別のインタフェイス内にあるプロパティを使用します。@c
1163 ある特定のグラフィカルオブジェクトによって使用されるプロパティを保持している@c
1164 インタフェイスは、そのグラフィカル オブジェクトについて記述している@c
1165 内部リファレンス ページの最後にリスト アップされていて、@c
1166 それらのプロパティはそれらのインタフェイスを参照することによって閲覧できます。
1167
1168 グラフィカル オブジェクトについての情報を見つけ出す方法を
1169 @ref{レイアウト オブジェクトのプロパティ} で説明しました。@c
1170 同じアプローチを使って、内部リファレンスで小節線を@c
1171 譜刻するレイアウト オブジェクトを見つけ出します。@c
1172 @emph{Backend} を経由して @emph{All layout objects} に行くと、@c
1173 そこに @code{BarLine} と呼ばれる@c
1174 レイアウト オブジェクトがあることがわかります。@c
1175 そのレイアウト オブジェクトのプロパティには小節線の可視性をコントロールする
1176 2 つのプロパティが含まれています: @c
1177 @code{break-visibility} と @code{stencil} です。@c
1178 さらに、@code{BarLine} はインタフェイスのいくつかをサポートしています。@c
1179 @code{grob-interface} もサポートされていて、@c
1180 そこには @code{transparent} プロパティと @code{color} プロパティが@c
1181 含まれています。@c
1182 これらすべてが小節線の可視性に影響を与えます (そしてもちろん、@c
1183 拡大解釈すれば他の多くのレイアウト オブジェクトにも影響を与えます)。@c
1184 次はこれらのプロパティをそれぞれ見ていきましょう。
1185
1186 @menu
1187 * stencil プロパティ::
1188 * break-visibility プロパティ::
1189 * transparent プロパティ::
1190 * color プロパティ::
1191 @end menu
1192
1193
1194 @node stencil プロパティ
1195 @unnumberedsubsubsec @code{stencil} プロパティ
1196 @translationof The stencil property
1197
1198 @cindex stencil property (stencil プロパティ)
1199
1200 このプロパティは譜刻すべきシンボル (図柄) を指定することによって@c
1201 小節線の見た目を制御します。@c
1202 他の多くのプロパティでも共通に言えますが、このプロパティの値に
1203 @code{#f} をセットすることによって何も譜刻させなくすることができます。@c
1204 ではやってみましょう。@c
1205 以前と同様に、暗黙のコンテキスト @code{Voice} は省略します:
1206
1207 @cindex BarLine, example of overriding (BarLine をオーバライドする例)
1208 @cindex stencil property, example (stencil プロパティの例)
1209
1210 @lilypond[quote,ragged-right,verbatim]
1211 \relative {
1212   \time 12/16
1213   \override BarLine.stencil = ##f
1214   c''4 b8 c d16 c d8 |
1215   g,8 a16 b8 c d4 e16 |
1216   e8
1217 }
1218 @end lilypond
1219
1220 小節線はまだ譜刻されています。@c
1221 何が間違っているのでしょうか?@c
1222 内部リファレンスに戻って、@code{BarLine} のプロパティを記述しているページを@c
1223 読み返してください。@c
1224 そのページの先頭に
1225 @qq{BarLine オブジェクトは Bar_engraver によって作成されます} と@c
1226 記述されています。@c
1227 @code{Bar_engraver} ページに行ってください。@c
1228 そのページの最後で、@code{Bar_engraver} を保持するコンテキストが@c
1229 リスト アップされています。@c
1230 それらのコンテキストのタイプはすべて @code{Staff} です。@c
1231 ですから、@code{\override} コマンドが予期したように機能しなかったのは、@c
1232 @code{BarLine} はデフォルトの @code{Voice} コンテキストの中には@c
1233 いなかったからなのです。@c
1234 コンテキストが間違って指定された場合、そのコマンドは機能しません。@c
1235 エラー メッセージは生成されず、ログ ファイルには何もログが残りません。@c
1236 正しいコンテキストを付け加えることによってコマンドを修正してみましょう:
1237
1238 @cindex BarLine, example of overriding (BarLine をオーバライドする例)
1239 @cindex stencil property, example (stencil プロパティの例)
1240
1241 @lilypond[quote,ragged-right,verbatim]
1242 \relative {
1243   \time 12/16
1244   \override Staff.BarLine.stencil = ##f
1245   c''4 b8 c d16 c d8 |
1246   g,8 a16 b8 c d4 e16 |
1247   e8
1248 }
1249 @end lilypond
1250
1251 今度は小節線が消えました。@c
1252 @code{stencil} プロパティに @code{#f} をセットする操作は頻繁に行うので、@c
1253 短くしたコマンド @code{\omit} が用意されています:
1254 @funindex \omit
1255
1256 @lilypond[quote,ragged-right,verbatim]
1257 \relative {
1258   \time 12/16
1259   \omit Staff.BarLine
1260   c''4 b8 c d16 c d8 |
1261   g,8 a16 b8 c d4 e16 |
1262   e8
1263 }
1264 @end lilypond
1265
1266 しかしながら、@code{stencil} プロパティを @code{#f} にセットするのではなく、@c
1267 オブジェクトの大きさを修正する必要があるオブジェクトも存在するということに@c
1268 注意してください。@c
1269 そのようなオブジェクトの @code{stencil} プロパティを @code{#f} にセットすると@c
1270 エラーになります。
1271 例えば、@code{NoteHead} オブジェクトの @code{stencil} プロパティを
1272 @code{#f} にセットするとエラーになります。@c
1273 この場合、@code{point-stencil} を使ってサイズが 0 のステンシル (型、型紙) を@c
1274 オブジェクトにセットします:
1275
1276 @lilypond[quote,verbatim]
1277 \relative {
1278   c''4 c
1279   \once \override NoteHead.stencil = #point-stencil
1280   c4 c
1281 }
1282 @end lilypond
1283
1284
1285 @node break-visibility プロパティ
1286 @unnumberedsubsubsec @code{break-visibility} property
1287 @translationof The break-visibility property
1288
1289 @cindex break-visibility property (break-visibility プロパティ)
1290
1291 内部リファレンスの @code{BarLine} のプロパティから
1292 @code{break-visibility} プロパティには 3 つのブール値からなるベクトルが@c
1293 必要であることがわかります。@c
1294 これらはそれぞれ、小節線が行の最後、行の途中、行の最初に譜刻されるかどうかを@c
1295 制御します。@c
1296 以下の例ではすべての小節線を消したいので、必要となる値は
1297 @code{#(#f #f #f)} です
1298 (同じ結果を @code{all-invisible} でも得ることができます)。@c
1299 それではやってみましょう。@c
1300 @code{Staff} コンテキストを含めることを忘れないでください。@c
1301 また、この値を書くときに括弧を始める前に @code{##} を@c
1302 付ける必要があることにも注意してください。@c
1303 @code{#} の 1 つはベクトルを導入するときに値の一部として必要とされ、@c
1304 先頭の @code{#} は @code{\override} コマンドの中で常に値の前に@c
1305 置くことが必要とされます。
1306
1307 @cindex BarLine, example of overriding (BarLine をオーバライドする例)
1308 @cindex break-visibility property, example (break-visibility プロパティの例)
1309
1310 @lilypond[quote,ragged-right,verbatim]
1311 \relative {
1312   \time 12/16
1313   \override Staff.BarLine.break-visibility = ##(#f #f #f)
1314   c''4 b8 c d16 c d8 |
1315   g,8 a16 b8 c d4 e16 |
1316   e8
1317 }
1318 @end lilypond
1319
1320 今度もすべての小節線が消えました。
1321
1322
1323 @node transparent プロパティ
1324 @unnumberedsubsubsec @code{transparent} プロパティ
1325 @translationof The transparent property
1326
1327 @cindex transparent property (transparent プロパティ)
1328 @cindex transparency (透明性)
1329
1330 内部リファレンスの @code{grob-interface} ページにあるプロパティから
1331 @code{transparent} プロパティはブール値であることがわかります。@c
1332 これはグラフィカル オブジェクトを透明にする場合には @code{#t} に@c
1333 セットします。@c
1334 次の例では、小節線ではなく拍子記号を不可視にしてみましょう。@c
1335 そうするには、まず、拍子記号のグラフィカル オブジェクト名を@c
1336 見つける必要があります。@c
1337 @code{TimeSignature} レイアウト オブジェクトのプロパティを見つけるために@c
1338 内部リファレンスの @q{すべてのレイアウト オブジェクト} ページに@c
1339 戻ってください。@c
1340 @code{TimeSigunature} は @code{Time_signature_engraver} によって作り出され、@c
1341 さらに、@code{Time_signature_engraver} は @code{Staff} コンテキストに含まれ、@c
1342 さらに、@code{Staff} コンテキストは @code{grob-interface} を@c
1343 サポートしているということがわかります。@c
1344 そのため、拍子記号を透明にするためのコマンドは以下のようになります:
1345
1346 @cindex TimeSignature, example of overriding (TimeSignature をオーバライドする例)
1347 @cindex transparent property, example (transparent プロパティの例)
1348
1349 @lilypond[quote,ragged-right,verbatim]
1350 \relative {
1351   \time 12/16
1352   \override Staff.TimeSignature.transparent = ##t
1353   c''4 b8 c d16 c d8 |
1354   g,8 a16 b8 c d4 e16 |
1355   e8
1356 }
1357 @end lilypond
1358
1359 @noindent
1360 @code{transparent} プロパティに @code{#t} をセットする操作も頻繁に行うので、@c
1361 短くしたコマンド @code{\hide} が用意されています:
1362 @funindex \hide
1363
1364 @lilypond[quote,ragged-right,verbatim]
1365 \relative {
1366   \time 12/16
1367   \hide Staff.TimeSignature
1368   c''4 b8 c d16 c d8 |
1369   g,8 a16 b8 c d4 e16 |
1370   e8
1371 }
1372 @end lilypond
1373
1374 @noindent
1375 どちらの場合でも拍子記号は消えました。@c
1376 しかしながら、このコマンドは拍子記号があるべき場所に隙間を残しています。@c
1377 たぶん、これは学生がその部分を埋めるための練習としては望ましいでしょうが、@c
1378 他の状況ではこの隙間は望ましくありません。@c
1379 この隙間を取り除くには、拍子記号の @code{transparent} の代わりに@c
1380 ステンシル (型、型紙) を @code{#f} にセットします:
1381
1382 @cindex TimeSignature, example of overriding (TimeSignature をオーバライドする例)
1383 @cindex stencil property, example (stencil プロパティの例)
1384
1385 @lilypond[quote,ragged-right,verbatim]
1386 \relative {
1387   \time 12/16
1388   \omit Staff.TimeSignature
1389   c''4 b8 c d16 c d8 |
1390   g,8 a16 b8 c d4 e16 |
1391   e8
1392 }
1393 @end lilypond
1394
1395 @noindent
1396 違いは明白です: ステンシルを @code{#f} にセットする
1397 (@code{\omit} を用いることもできます) と、オブジェクト自体が削除されます。@c
1398 一方、オブジェクトを @code{transparent} (透明) にする
1399 (@code{\hide} を用いることもできます)とそのオブジェクトは消えますが、@c
1400 オブジェクトは不可視になっただけです。
1401
1402 @subheading 色 (color)
1403
1404 @node color プロパティ
1405 @unnumberedsubsubsec @code{color} プロパティ
1406 @translationof The color property
1407
1408 最後に、小節線の色を白にすることによって小節線を不可視にしてみましょう。@c
1409 (これには白い小節線が譜線と交差したところで@c
1410 譜線を見えたり見えなくしてしまうかもしれないという問題があります。@c
1411 以下のいくつかの例で、このことを予測することはできないと思うかもしれません。@c
1412 そうなる理由と、それを制御する方法についての詳細は、@c
1413 @ruser{Painting objects white} でカバーされています。@c
1414 しかしここでは色について学んでいるところなので、@c
1415 オブジェクトを白で描くことの限界を受け入れるだけにしてください。)
1416
1417 @code{grob-interface} はカラー プロパティの値はリストであると指定しています。@c
1418 しかしながら、そのリストが何であるべきなのかの説明はありません。@c
1419 カラー プロパティで必要とされるリストは実際のところ内部ユニットの中にある@c
1420 値のリストです。@c
1421 しかし、内部ユニットの中にある値を知らなくても済むように、@c
1422 カラーを指定するための手段がいくつか用意されています。@c
1423 最初の方法は @ruser{List of colors} にある最初の表でリスト アップされている
1424 @q{標準} のカラーの 1 つを使用する方法です。@c
1425 小節線を白にするには以下のように記述します:
1426
1427 @cindex BarLine, example of overriding (BarLine をオーバライドする例)
1428 @cindex color property, example (color プロパティの例)
1429
1430 @lilypond[quote,ragged-right,verbatim]
1431 \relative {
1432   \time 12/16
1433   \override Staff.BarLine.color = #white
1434   c''4 b8 c d16 c d8 |
1435   g,8 a16 b8 c d4 e16 |
1436   e8
1437 }
1438 @end lilypond
1439
1440 @noindent
1441 今度も再び小節線は見えなくなりました。@c
1442 @emph{white} の前にアポストロフィは付かないということに注意してください
1443 -- これはシンボルではなく@emph{変数}です。@c
1444 この変数は評価される時、小節線の色を白にセットするのに必要な内部的な値の@c
1445 リストを提供します。@c
1446 標準カラー リストにある他のカラーもまた変数です。@c
1447 小節線の色をこのリストの中にある他の変数に変更することで、@c
1448 これが機能することをあなた自身で納得できます。
1449
1450 @cindex color, X11 (X11 カラー)
1451 @cindex X11 colors (X11 カラー)
1452
1453 @funindex x11-color
1454
1455 カラーを変えるための 2 つ目の方法は、@ruser{List of colors} の
1456 2 番目のリストの中にある X11 カラー名のリストを使用する方法です。@c
1457 しかしながら、X11 カラー名は関数 @code{x11-color} によって実際の値に@c
1458 マッピングされます。@c
1459 @code{x11-color} は以下のように X11 カラー シンボルを内部値のリストに@c
1460 変換します:
1461
1462 @cindex BarLine, example of overriding (BarLine をオーバライドする例)
1463 @cindex color property, example (color プロパティの例)
1464
1465 @lilypond[quote,ragged-right,verbatim]
1466 \relative {
1467   \time 12/16
1468   \override Staff.BarLine.color = #(x11-color 'white)
1469   c''4 b8 c d16 c d8 |
1470   g,8 a16 b8 c d4 e16 |
1471   e8
1472 }
1473 @end lilypond
1474
1475 @noindent
1476 この場合、関数 @code{x11-color} はシンボルを引数として扱うので、@c
1477 変数として評価されないようシンボルの前にアポストロフィを付ける必要があり、@c
1478 関数呼び出し全体を括弧で囲む必要があるということに注意してください。
1479
1480 @cindex rgb colors (RGB カラー)
1481 @cindex color, rgb (RGB カラー)
1482
1483 @funindex rgb-color
1484
1485 もう 1 つ関数があります。@c
1486 RGB 値を内部カラーに変換する @code{rgb-color} 関数です。@c
1487 この関数は赤、緑、青の輝度を表す 3 つの引数をとります。@c
1488 これらの引数は 0 から 1 までの値をとります。@c
1489 ですから、カラーを赤にセットする場合の値は @code{(rgb-color 1 0 0)} となり、@c
1490 白の場合は @code{(rgb-color 1 1 1)} となります:
1491
1492 @cindex BarLine, example of overriding (BarLine をオーバライドする例)
1493 @cindex color property, example (color プロパティの例)
1494
1495 @lilypond[quote,ragged-right,verbatim]
1496 \relative {
1497   \time 12/16
1498   \override Staff.BarLine.color = #(rgb-color 1 1 1)
1499   c''4 b8 c d16 c d8 |
1500   g,8 a16 b8 c d4 e16 |
1501   e8
1502 }
1503 @end lilypond
1504
1505 最後に、X11 カラー セットの一部であるグレー スケールを用いる方法もあります。@c
1506 グレー スケールの範囲は黒 @code{'grey0} から白 @code{'grey100} まで
1507 1 段階ずつあります。@c
1508 グレー スケールの使用方法を示すために、@c
1509 例の中にあるすべてのレイアウト オブジェクトのカラーをさまざまな濃度の@c
1510 グレーにセットしてみましょう:
1511
1512 @cindex StaffSymbol, example of overriding (StaffSymbol をオーバライドする例)
1513 @cindex TimeSignature, example of overriding (TimeSignature をオーバライドする例)
1514 @cindex Clef, example of overriding (Clef をオーバライドする例)
1515 @cindex NoteHead, example of overriding (NoteHead をオーバライドする例)
1516 @cindex Stem, example of overriding (Stem をオーバライドする例)
1517 @cindex BarLine, example of overriding (BarLine をオーバライドする例)
1518 @cindex color property, example (color プロパティの例)
1519 @cindex x11-color, example of using (x11-color の使用例)
1520
1521 @lilypond[quote,ragged-right,verbatim]
1522 \relative {
1523   \time 12/16
1524   \override Staff.StaffSymbol.color = #(x11-color 'grey30)
1525   \override Staff.TimeSignature.color = #(x11-color 'grey60)
1526   \override Staff.Clef.color = #(x11-color 'grey60)
1527   \override Voice.NoteHead.color = #(x11-color 'grey85)
1528   \override Voice.Stem.color = #(x11-color 'grey85)
1529   \override Staff.BarLine.color = #(x11-color 'grey10)
1530   c''4 b8 c d16 c d8 |
1531   g,8 a16 b8 c d4 e16 |
1532   e8
1533 }
1534 @end lilypond
1535
1536 @noindent
1537 各レイアウト オブジェクトに関連付けされているコンテキストに注意してください。@c
1538 これらのコンテキストを正しく取得することが重要であり、@c
1539 そうしなければコマンドは機能しません!@c
1540 コンテキストの中には特定のエングラーバが置かれているということを@c
1541 忘れないでください。@c
1542 エングラーバに対するデフォルト コンテキストを見つけ出すには、@c
1543 内部リファレンスのレイアウト オブジェクトからスタートして、@c
1544 そこからそれを作り出すエングラーバのページに行きます。@c
1545 エングラーバのページには、@c
1546 通常はどのコンテキストにそのエングラーバが含まれているのかが記述されています。
1547
1548
1549 @node オブジェクトのサイズ
1550 @subsection オブジェクトのサイズ
1551 @translationof Size of objects
1552
1553 @cindex changing size of objects (オブジェクトのサイズを変更する)
1554 @cindex size of objects (オブジェクトのサイズ)
1555 @cindex objects, size of (オブジェクトのサイズ)
1556 @cindex objects, changing size of (オブジェクトのサイズを変更する)
1557
1558 以前の例を見直すことから始めてみましょう
1559 (@ref{Nesting music expressions} を参照してください)。@c
1560 そこでは @rglos{ossia} として新たに一時的な譜を導入する方法が示されています。
1561
1562 @cindex alignAboveContext property, example (alignAboveContext プロパティの例)
1563 @cindex @code{\with}, example (@code{\with} の例)
1564
1565 @lilypond[quote,ragged-right,verbatim]
1566 \new Staff ="main" {
1567   \relative {
1568     r4 g'8 g c4 c8 d |
1569     e4 r8
1570     <<
1571       { f8 c c }
1572       \new Staff \with {
1573         alignAboveContext = #"main" }
1574       { f8 f c }
1575     >>
1576     r4 |
1577   }
1578 }
1579 @end lilypond
1580
1581 通常、オッシアは音部記号と拍子記号無しで記述され、@c
1582 メインの譜よりもわずかに小さく譜刻されます。@c
1583 今度は、すでに音部記号と拍子記号を削除する方法を知っています
1584 -- 以下のようにそれぞれのステンシルを @code{#f} にセットするだけです:
1585
1586 @cindex alignAboveContext property, example (alignAboveContext プロパティの例)
1587 @cindex @code{\with}, example (@code{\with} の例)
1588 @funindex \omit
1589 @cindex Clef, example of overriding (Clef をオーバライドする例)
1590 @cindex TimeSignature, example of overriding (TimeSignature をオーバライドする例)
1591
1592 @lilypond[quote,ragged-right,verbatim]
1593 \new Staff ="main" {
1594   \relative {
1595     r4 g'8 g c4 c8 d |
1596     e4 r8
1597     <<
1598       { f8 c c }
1599       \new Staff \with {
1600         alignAboveContext = #"main"
1601       }
1602       {
1603         \omit Staff.Clef
1604         \omit Staff.TimeSignature
1605         { f8 f c }
1606       }
1607     >>
1608     r4 |
1609   }
1610 }
1611 @end lilypond
1612
1613 @noindent
1614 ここで、@code{\with} 節の後にある追加の括弧のペアが、@c
1615 その括弧に囲まれているオーバライドと音楽がオッシア譜に適用されることを@c
1616 保証するために、必要となります。
1617
1618 しかし、@code{\with} を用いた譜コンテキストの変更と @code{\override}
1619 を用いた音部記号と拍子記号のステンシルの変更 (あるいはこのケースでは
1620 @code{\omit} を用いています) との違いは何なのでしょうか?@c
1621 主な違いは、@code{\with} 節の中で行われた変更はそのコンテキストが@c
1622 作成されるときに行われ、@c
1623 そのコンテキストでは @strong{デフォルト} 値として残ります。@c
1624 一方、音楽の中に埋め込まれた @code{\set} コマンドや
1625 @code{\override} コマンドは動的です
1626 -- それらは音楽のある特定のポイントに同期して変更を行います。@c
1627 変更が @code{\unset} や @code{\revert} を使ってセットを解除されたり@c
1628 元に戻された場合、デフォルト値
1629 -- これは @code{\with} 節でセットされていた場合はその値、@c
1630 そうでない場合は通常のデフォルト値 -- に戻ります。
1631
1632 いくつかのコンテキスト プロパティは @code{\with} 節でのみ変更可能です。@c
1633 これらは、コンテキストが作成された後では、変更されることのないプロパティです。@c
1634 @code{alignAboveContext} とそのパートナー @code{alignBelowContext} が@c
1635 そのようなプロパティです -- いったん譜が作成されると、@c
1636 譜のアラインメントは決定され、@c
1637 それを後で変更しようとすることには意味がありません。
1638
1639 レイアウト オブジェクトのデフォルト値は @code{\with} 節で@c
1640 セットすることもできます。@c
1641 通常の @code{\override} コマンドをコンテキスト名を省いて@c
1642 使用するだけです。@c
1643 コンテキスト名を省略するのは、そのコンテキストは明らかに
1644 @code{\with} 節が変更しようとしているコンテキストだからです。@c
1645 実際、@code{\with} 節の中でコンテキストを指定するとエラーが発生します。
1646
1647 それでは上記の例を以下のように書き換えます:
1648
1649 @cindex alignAboveContext property, example (alignAboveContext プロパティの例)
1650 @cindex @code{\with}, example (@code{\with} の例)
1651 @cindex Clef, example of overriding (Clef をオーバライドする例)
1652 @cindex TimeSignature, example of overriding (TimeSignature をオーバライドする例)
1653
1654 @c KEEP LY
1655 @lilypond[quote,ragged-right,verbatim]
1656 \new Staff ="main" {
1657   \relative {
1658     r4 g'8 g c4 c8 d |
1659     e4 r8
1660     <<
1661       { f8 c c }
1662       \new Staff \with {
1663         alignAboveContext = #"main"
1664         % この譜には音部記号を譜刻しません
1665         \override Clef.stencil = ##f
1666         % この譜には拍子記号を譜刻しません
1667         \override TimeSignature.stencil = ##f
1668       }
1669       { f8 f c }
1670     >>
1671     r4 |
1672   }
1673 }
1674 @end lilypond
1675
1676 @code{transparent} プロパティを設定したり @code{stencil} を消すために@c
1677 短縮形 @code{\hide} と @code{\omit} を使うことができ、結果として@c
1678 以下のようになります:
1679
1680 @c KEEP LY
1681 @lilypond[quote,ragged-right,verbatim]
1682 \new Staff ="main" {
1683   \relative {
1684     r4 g'8 g c4 c8 d |
1685     e4 r8
1686     <<
1687       { f8 c c }
1688       \new Staff \with {
1689         alignAboveContext = #"main"
1690         % この譜には音部記号を譜刻しません
1691         \omit Clef
1692         % この譜には拍子記号を譜刻しません
1693         \omit TimeSignature
1694       }
1695       { f8 f c }
1696     >>
1697     r4 |
1698   }
1699 }
1700 @end lilypond
1701
1702 最後に、レイアウト オブジェクトのサイズを変更してみます。
1703
1704 いくつかのレイアウト オブジェクトはある書体から選択された図柄として@c
1705 作成されます。@c
1706 これには符頭、臨時記号、マークアップ、音部記号、拍子記号、強弱記号、@c
1707 歌詞が含まれます。@c
1708 それらのサイズは、これから見ていくように、@code{font-size} プロパティを@c
1709 変更することによって変更されます。@c
1710 スラーやタイのような他のレイアウト オブジェクト
1711 -- 一般には、スパナ オブジェクト (spanner objects)
1712 -- は個々に描かれるため、@c
1713 @code{font-size} プロパティとは関係がありません。@c
1714 一般に、それらのオブジェクトはそれらを取り付けられるオブジェクトからサイズを@c
1715 決定する (訳者: 例えば、スラーはそのスラーが付着する音符から@c
1716 そのスラーのサイズを決定する) ので、@c
1717 通常はサイズを手動で変更する必要はありません。@c
1718 さらに、符幹や小節線の長さ、連桁や他の線の太さ、譜線の間隔などといった@c
1719 他のプロパティはすべて特別な方法で変更する必要があります。
1720
1721 オッシアの例に戻って、まず @code{font-size} を変更してみましょう。@c
1722 これを行うには 2 通りの方法があります。@c
1723 以下のようなコマンドで @code{NoteHead} のような各オブジェクト タイプの@c
1724 フォント サイズを変更する:
1725
1726 @example
1727 \override NoteHead.font-size = #-2
1728 @end example
1729
1730 あるいは、@code{\set} を使って特別なプロパティ @code{fontSize} を設定するか、@c
1731 それを @code{\with} 節に含める
1732 (ただし、@code{\set} は含めません) ことによって@c
1733 すべてのフォントのサイズを変更します:
1734
1735 @example
1736 \set fontSize = #-2
1737 @end example
1738
1739 これらの命令文は両方ともフォント サイズを前の値から 2 段階減らします。@c
1740 各段階でサイズはおよそ 12% 増減します。
1741
1742 それではオッシアの例でフォント サイズを変更してみましょう:
1743
1744 @cindex alignAboveContext property, example (alignAboveContext プロパティの例)
1745 @cindex @code{\with}, example (@code{\with} の例)
1746 @cindex Clef, example of overriding (Clef をオーバライドする例)
1747 @cindex TimeSignature, example of overriding (TimeSignature をオーバライドする例)
1748 @cindex fontSize property, example (fontSize プロパティの例)
1749
1750 @c KEEP LY
1751 @lilypond[quote,ragged-right,verbatim]
1752 \new Staff ="main" {
1753   \relative {
1754     r4 g'8 g c4 c8 d |
1755     e4 r8
1756     <<
1757       { f8 c c }
1758       \new Staff \with {
1759         alignAboveContext = #"main"
1760         \omit Clef
1761         \omit TimeSignature
1762         % すべてのフォント サイズを約 24% 減らします
1763         fontSize = #-2
1764       }
1765       { f8 f c }
1766     >>
1767     r4 |
1768   }
1769 }
1770 @end lilypond
1771
1772 これでもまだ完璧ではありません。@c
1773 符頭とフラグは小さくなりましたが、符幹はそれに対して長すぎ、@c
1774 譜線は離れすぎています。@c
1775 これらをフォント サイズの減少に比例してスケール ダウンさせる必要があります。@c
1776 次のサブ セクションでそれを行う方法について議論します。
1777
1778
1779 @node オブジェクトの長さと太さ
1780 @subsection オブジェクトの長さと太さ
1781 @translationof Length and thickness of objects
1782
1783 @cindex distances (距離)
1784 @cindex thickness (太さ)
1785 @cindex length (長さ)
1786 @cindex magstep
1787 @cindex size, changing (サイズを変更する)
1788 @cindex stem length, changing (符幹の長さを変更する)
1789 @cindex staff line spacing, changing (譜線の間隔を変更する)
1790
1791 LilyPond では距離と長さは一般に譜スペース -- 譜の中の隣り合う線の間隔 --
1792 で測ります (特別な場合では、譜スペースの半分で測ることもあります)。@c
1793 一方、たいていの @code{thickness} プロパティは @code{line-thickness} と@c
1794 呼ばれる内部プロパティを単位として測ります。@c
1795 例えば、デフォルトでは、ヘアピン (訳者: 強弱記号) の線の太さは
1796 1 単位の @code{line-thickness} であり、@c
1797 音符の符幹の @code{thickness} は 1.3 です。@c
1798 けれども、それとは単位の異なる太さプロパティがあるということにも@c
1799 注意してください。@c
1800 例えば、連桁の太さプロパティは譜スペースで測ります。
1801
1802 それでは、どうやって長さをフォント サイズに比例させるのでしょうか?@c
1803 これは、まさにこの目的のために提供されている @code{magstep} と呼ばれる@c
1804 特別な関数の助けを借りることによって達成できます。@c
1805 この関数は引数を 1 つ -- フォント サイズの変化 (前の例では #-2) --
1806 をとり、他のオブジェクトの縮小に比例したスケーリング ファクタを返します。@c
1807 以下のように使用します:
1808
1809 @cindex alignAboveContext property, example (alignAboveContext プロパティの例)
1810 @cindex @code{\with}, example (@code{\with} の例)
1811 @cindex Clef, example of overriding (Clef をオーバライドする例)
1812 @cindex TimeSignature, example of overriding (TimeSignature をオーバライドする例)
1813 @cindex fontSize property, example (fontSize プロパティの例)
1814 @cindex StaffSymbol, example of overriding (StaffSymbol をオーバライドする例)
1815 @cindex magstep function, example of using (magstep 関数の使用例)
1816 @cindex staff-space property, example (staff-space プロパティの例)
1817 @cindex stencil property, example (stencil プロパティの例)
1818
1819 @c KEEP LY
1820 @lilypond[quote,ragged-right,verbatim]
1821 \new Staff ="main" {
1822   \relative {
1823     r4 g'8 g c4 c8 d |
1824     e4 r8
1825     <<
1826       { f8 c c }
1827       \new Staff \with {
1828         alignAboveContext = #"main"
1829         \omit Clef
1830         \omit TimeSignature
1831         fontSize = #-2
1832         % 符幹の長さと譜線の間隔を減らします
1833         \override StaffSymbol.staff-space = #(magstep -2)
1834       }
1835       { f8 f c }
1836     >>
1837     r4 |
1838   }
1839 }
1840 @end lilypond
1841
1842 @noindent
1843 符幹の長さと他の多くの長さに関係するプロパティは常に
1844 @code{staff-space} プロパティの値と比例関係になるよう算出されるため、@c
1845 それらの長さも自動的にスケール ダウンされます。@c
1846 これはオッシアの垂直方向のスケールだけに効果を及ぼすということに@c
1847 注意してください -- 水平方向のスケールは、メインの音楽と同期するよう、@c
1848 メインの音楽のレイアウトによって決定されるため、水平方向のスケールは
1849 @code{staff-space} の変更によっていかなる影響も受けません。@c
1850 もちろん、メインの音楽のすべてのスケールがこの方法で変更された場合、@c
1851 水平方向のスペースも影響を受けます。@c
1852 このことについては、後のレイアウト セクションで議論します。
1853
1854 そして、これでオッシアの作成は完了です。@c
1855 他のすべてのオブジェクトのサイズと長さが類似の方法で変更されるかもしれません。
1856
1857 上記の例のようなスケールのちょっとした変更に対して、小節線、連桁、ヘアピン、@c
1858 スラーなどのさまざまな描画線の太さは通常はグローバルな調節を必要としません。@c
1859 ある特定のレイアウト オブジェクトの太さを調節する必要がある場合、@c
1860 それを達成する最良の方法はそのオブジェクトの @code{thickness} プロパティを@c
1861 オーバライドすることです。@c
1862 スラーの太さを変更する例は @ref{レイアウト オブジェクトのプロパティ} で@c
1863 示されています。@c
1864 すべての描画オブジェクト (つまり、フォントから作り出される@c
1865 オブジェクトではないもの) の太さが同様の方法で変更されるかもしれません。
1866
1867
1868 @node オブジェクトの配置
1869 @section オブジェクトの配置
1870 @translationof Placement of objects
1871
1872 @menu
1873 * 自動配置::
1874 * 譜内部オブジェクト::
1875 * 譜外部オブジェクト::
1876 @end menu
1877
1878
1879 @node 自動配置
1880 @subsection 自動配置
1881 @translationof Automatic behavior
1882
1883 @cindex within-staff objects (譜内部オブジェクト)
1884 @cindex outside-staff objects (譜内部オブジェクト)
1885 @cindex objects, within-staff (譜内部オブジェクト)
1886 @cindex objects, outside-staff (譜外部オブジェクト)
1887
1888 音楽記譜法には譜に属するオブジェクトがいくつかあり、@c
1889 他のオブジェクトは譜の外側に置かれるべきです。@c
1890 それらはそれぞれ譜内部オブジェクトと譜外部オブジェクトと呼ばれます。
1891
1892 譜内部オブジェクトは譜上に置かれます
1893 -- 符頭、符幹、臨時記号などです。@c
1894 通常、それらの位置は音楽自体によって決定されます
1895 -- 譜内部オブジェクトは譜のある特定の線と同じ垂直位置に置かれたり、@c
1896 そこに置かれるべき他のオブジェクトにくっつけられたりします。@c
1897 近接する和音の中にある符頭、符幹、臨時記号の衝突は普通は自動的に回避されます。@c
1898 これから見ていくように、この自動配置を変更することができるコマンドと@c
1899 オーバライドがあります。
1900
1901 譜の外部にあるオブジェクトには、リハーサル記号、テキスト、@c
1902 強弱記号などがあります。@c
1903 LilyPond が持つ譜外部オブジェクトの垂直位置のルールは、@c
1904 譜外部オブジェクトをできるだけ譜の近くに、しかし他のオブジェクトと@c
1905 衝突しない程度の近さに置くというものです。@c
1906 以下で示すように、LilyPond はオブジェクトを配置する順番を決定するために
1907 @code{outside-staff-priority} プロパティを使用します。
1908
1909 最初に、LilyPond はすべての譜内部オブジェクトを配置します。@c
1910 それから、@code{outside-staff-priority} に従って譜外部オブジェクトを@c
1911 並べます。@c
1912 譜外部オブジェクトは最小の @code{outside-staff-priority} を@c
1913 持つオブジェクトから順番に 1 つずつ並べられ、すでに配置されたオブジェクトと@c
1914 衝突しないように配置されます。@c
1915 つまり、2 つの譜外部オブジェクトが同じスペースを巡って競合する場合、@c
1916 より小さな @code{outside-staff-priority} を持つオブジェクトが@c
1917 譜の近くに配置されます。@c
1918 2 つのオブジェクトが同じ @code{outside-staff-priority} を持つ場合、@c
1919 先に発生するオブジェクトが譜の近くに配置されます。
1920
1921 以下の例では、すべてのマークアップ テキストが同じ優先度を持っています
1922 (なぜなら、優先度が明示的にセットされていないからです)。@c
1923 @q{Text3} が自動的に譜の近く、@q{Text2} の@c
1924 すぐ下に納まるよう配置されていることに注意してください。
1925
1926 @cindex markup example (マークアップの例)
1927
1928 @lilypond[quote,fragment,ragged-right,verbatim]
1929 c''2^"Text1"
1930 c''2^"Text2" |
1931 c''2^"Text3"
1932 c''2^"Text4" |
1933 @end lilypond
1934
1935 デフォルトでは、譜も互いにできるだけ近くなるよう配置されます
1936 (最小間隔に従います)。@c
1937 音符が隣接する譜に向かって長く突き出てている場合、譜を離さないと@c
1938 記譜したものが重なり合ってしまう場合にのみ譜は離されます。@c
1939 以下の例は譜の調整によって音符が @q{ぴったりと納まる} 様子を示しています:
1940
1941 @lilypond[quote,ragged-right,verbatim]
1942 <<
1943   \new Staff {
1944     \relative { c'4 a, }
1945   }
1946   \new Staff {
1947     \relative { c''''4 a, }
1948   }
1949 >>
1950 @end lilypond
1951
1952
1953 @node 譜内部オブジェクト
1954 @subsection 譜内部オブジェクト
1955 @translationof Within-staff objects
1956
1957 これまでにコマンド @code{\voiceXXX} がスラー、タイ、運指法記号、@c
1958 符幹の向きに依存する他のすべてに対してどのように影響を与えるかを見てきました
1959 -- @ref{Explicitly instantiating voices} を参照してください。
1960 これらのコマンドは、多声部音楽を記述しているときに上下する旋律を@c
1961 見分けられるようにすることを可能にするために不可欠なものです。@c
1962 しかしながら、この自動機能をオーバライドする必要がある場合もあります。@c
1963 このオーバライドは音楽全体に対しても、個々の音符に対してもできます。@c
1964 この自動機能を制御しているプロパティは各レイアウト オブジェクトの
1965 @code{direction} プロパティです。@c
1966 まず、これは何をするのかを説明し、それから、作成済みのコマンドを@c
1967 いくつか紹介します。@c
1968 それらのコマンドを使うと、一般的な変更のための明示的なオーバライドを@c
1969 コードしなくて済みます。
1970
1971 スラーやタイのようなレイアウト オブジェクトはカーブを描き、曲がり、@c
1972 上下します。@c
1973 符幹やフラグのような他のオブジェクトも上下の向きによって位置が左右します。@c
1974 @code{direction} がセットされているときは、これは自動的に制御されます。
1975
1976 @menu
1977 * direction プロパティ::
1978 * 運指::
1979 @end menu
1980
1981 @node direction プロパティ
1982 @unnumberedsubsubsec @code{direction} プロパティ
1983 @translationof The direction property
1984
1985 @cindex down (下)
1986 @cindex up (上)
1987 @cindex center (中央)
1988 @cindex neutral (ニュートラル)
1989
1990 以下の例は、最初の小節でスラーのデフォルトの振る舞いを示しています。@c
1991 高い位置にある音符のスラーは音符の上にあり、@c
1992 低い位置にある音符のスターは音符の下にあります。@c
1993 次の小節では両方のスラーをすべて強制的に下向きにし、
1994 さらに次の小節では両方のスラーをすべて強制的に上向きにし、
1995 最後の小節ではスラーの向きをデフォルトに戻します。
1996
1997 @cindex Slur, example of overriding (Slur をオーバライドする例)
1998 @cindex direction property, example (direction プロパティの例)
1999
2000 @lilypond[quote,fragment,verbatim]
2001 a'4( g') c''( a') |
2002 \override Slur.direction = #DOWN
2003 a'4( g') c''( a') |
2004 \override Slur.direction = #UP
2005 a'4( g') c''( a') |
2006 \revert Slur.direction
2007 a'4( g') c''( a') |
2008 @end lilypond
2009
2010 ここで定数 @code{DOWN} と @code{UP} を使っています。@c
2011 これらはそれぞれ値 @w{@code{-1}} と @code{+1} を持ち、定数の代わりに@c
2012 それらの数値を使うこともできまはす。@c
2013 さらに値 @code{0} を使う場合もあります。@c
2014 この値はスラーでは @code{UP} を意味するものとして扱われますが、@c
2015 いくつかのオブジェクトでは @q{center} という意味になります。@c
2016 値 @code{0} を持つ定数に @code{CENTER} があります。
2017
2018 しかしながら、これらの明示的なオーバライドは普通は使われません。@c
2019 もっと簡単で定義済みのコマンドが利用可能だからです。@c
2020 ここに一般的なコマンドの表を挙げます。@c
2021 それぞれのコマンドの意味が明白でない場合は、そのコマンドの意味を述べています。
2022
2023 @multitable @columnfractions .2 .2 .25 .35
2024 @headitem 下/左
2025   @tab 上/右
2026   @tab 元に戻す
2027   @tab 効果
2028 @item @code{\arpeggioArrowDown}
2029   @tab @code{\arpeggioArrowUp}
2030   @tab @code{\arpeggioNormal}
2031   @tab 矢印が下に付く、上に付く、付かない
2032 @item @code{\dotsDown}
2033   @tab @code{\dotsUp}
2034   @tab @code{\dotsNeutral}
2035   @tab 譜線を避けるための移動方向
2036 @item @code{\dynamicDown}
2037   @tab @code{\dynamicUp}
2038   @tab @code{\dynamicNeutral}
2039   @tab
2040 @item @code{\phrasingSlurDown}
2041   @tab @code{\phrasingSlurUp}
2042   @tab @code{\phrasingSlurNeutral}
2043   @tab Note: スラー コマンドとは別になります
2044 @item @code{\slurDown}
2045   @tab @code{\slurUp}
2046   @tab @code{\slurNeutral}
2047   @tab
2048 @item @code{\stemDown}
2049   @tab @code{\stemUp}
2050   @tab @code{\stemNeutral}
2051   @tab
2052 @item @code{\textSpannerDown}
2053   @tab @code{\textSpannerUp}
2054   @tab @code{\textSpannerNeutral}
2055   @tab スパナとして挿入されるテキストが譜の下/上にくる
2056 @item @code{\tieDown}
2057   @tab @code{\tieUp}
2058   @tab @code{\tieNeutral}
2059   @tab
2060 @item @code{\tupletDown}
2061   @tab @code{\tupletUp}
2062   @tab @code{\tupletNeutral}
2063   @tab 連符記号が音符の下/上にくる
2064 @end multitable
2065
2066 これらのコマンドで中立/通常の位置に戻すコマンドは @code{\revert} を@c
2067 用いることで実装されていて、これらは前に @code{\once} が付いて @strong{いない}
2068 かもしれません。@c
2069 @code{\override} を用いて実装されているコマンドの効果を単一のタイミング@c
2070 に限定したいのであれば、明示的なオーバライドの場合と同様に、@c
2071 コマンドの前に @code{\once} を配置します。
2072
2073 あるいは、単に 1 つのレイアウト オブジェクトを上向きか下向きにしたいなら、@c
2074 方向指示子の @code{^} か @code{_} を使うことができます:
2075
2076 @lilypond[quote,fragment,verbatim]
2077 a'4( g') c''( a') |
2078 a'4^( g') c''_( a') |
2079 @end lilypond
2080
2081 @node 運指
2082 @unnumberedsubsubsec 運指
2083 @translationof Fingering
2084
2085 @cindex fingering, placement (運指法記号の配置)
2086 @cindex fingering, chords (和音の運指法記号)
2087
2088 単一の音符に対する運指法記号の配置も @code{direction} プロパティによって@c
2089 制御できますが、@code{direction} を変更しても和音の運指法記号は影響を@c
2090 受けません。@c
2091 これから見ていくように、和音の中の個々の音符の運指法記号を制御するための@c
2092 特別なコマンドがあります。@c
2093 このコマンドを使うことで運指法記号を各音符の上、下、左、右に@c
2094 配置することができます。
2095
2096 まず、単一の音符の運指法記号に対する @code{direction} を効果を示します。@c
2097 最初の小節はデフォルト状態で、その後で @code{DOWN} と @code{UP} を@c
2098 指定したときの効果を示します:
2099
2100 @cindex Fingering, example of overriding (Fingering をオーバライドする例)
2101 @cindex direction property, example (direction プロパティの例)
2102
2103 @lilypond[quote,verbatim]
2104 \relative {
2105   c''4-5 a-3 f-1 c'-5 |
2106   \override Fingering.direction = #DOWN
2107   c4-5 a-3 f-1 c'-5 |
2108   \override Fingering.direction = #UP
2109   c4-5 a-3 f-1 c'-5 |
2110 }
2111 @end lilypond
2112
2113 しかしながら、@code{direction} プロパティをオーバライドすることは、@c
2114 手動で運指法記号を音符の上または下に配置するもっとも簡単な方法ではありません。@c
2115 運指法番号の前に @code{-} の代わりに @code{_} または @code{^} を使う方が@c
2116 普通は適切です。@c
2117 ここで、上記の例にこの方法を用いた例を挙げます:
2118
2119 @cindex fingering example (運指法記号の例)
2120
2121 @lilypond[quote,verbatim]
2122 \relative {
2123   c''4-5 a-3 f-1 c'-5 |
2124   c4_5 a_3 f_1 c'_5 |
2125   c4^5 a^3 f^1 c'^5 |
2126 }
2127 @end lilypond
2128
2129 @code{direction} プロパティは和音では無視されますが、@c
2130 方向を示す接頭辞 @code{_} と @code{^} は機能します。@c
2131 以下で示すように、デフォルトでは、運指法記号は和音の音符の@c
2132 上と下の両方に自動的に配置されます:
2133
2134 @cindex fingering example (運指法記号の例)
2135
2136 @lilypond[quote,verbatim]
2137 \relative {
2138   <c''-5 g-3>4
2139   <c-5 g-3 e-2>4
2140   <c-5 g-3 e-2 c-1>4
2141 }
2142 @end lilypond
2143
2144 @noindent
2145 しかし、以下で示すように、運指法番号のすべてまたはいずれかを手動で強制的に@c
2146 和音の上または下に配置するために、これはオーバライドされるかもしれません:
2147
2148 @cindex fingering example (運指法記号の例)
2149
2150 @lilypond[quote,verbatim]
2151 \relative {
2152   <c''-5 g-3 e-2 c-1>4
2153   <c^5 g_3 e_2 c_1>4
2154   <c^5 g^3 e^2 c_1>4
2155 }
2156 @end lilypond
2157
2158 @code{\set fingeringOrientations} コマンドを使うことによって和音の中に@c
2159 ある個々の音符の運指法記号の配置をより細かく制御することさえできます。@c
2160 このコマンドのフォーマットは以下のようなものです:
2161
2162 @example
2163 \set fingeringOrientations = #'([up] [left/right] [down])
2164 @end example
2165
2166 @noindent
2167 @code{fingeringOrientations} は @code{Voice} コンテキストのプロパティであり、@c
2168 @code{New_fingering_engraver} によって作成、使用されるため、@c
2169 @code{\set} が使用されます。
2170
2171 このプロパティには 1 つから 3 つまでの値のリストがセットされるかもしれません。@c
2172 このプロパティは運指法記号を上 (リストに @code{up} がある場合)、@c
2173 下 (リストに @code{down} がある場合)、@c
2174 左 (リストに @code{left} がある場合。リストに @code{right} がある場合は右)
2175 に配置します。@c
2176 逆に配置位置がリストされていない場合、その位置に運指法記号は配置されません。@c
2177 LilyPond はこれらの制約を受け取り、
2178 後に続く和音の音符への運指法記号をうまく配置します。@c
2179 @code{left} と @code{right} は相互排他的であるということに注意してください --
2180 運指法記号は左右のどちらかにしか配置されないか、どちらにも配置されません。
2181
2182 @warning{このコマンドを使って単一の音符への運指法記号の配置を@c
2183 コントロールするには、その音符を山括弧で囲んで単一音符の和音として@c
2184 記述する必要があります。}
2185
2186 いくつか例を挙げます:
2187
2188 @cindex fingering example (運指法記号の例)
2189 @cindex @code{\set}, example of using (@code{\set} の使用例)
2190 @cindex fingeringOrientations property, example (fingeringOrientations プロパティの例)
2191
2192 @lilypond[quote,ragged-right,verbatim]
2193 \relative {
2194   \set fingeringOrientations = #'(left)
2195   <f'-2>4
2196   <c-1 e-2 g-3 b-5>4
2197   \set fingeringOrientations = #'(left)
2198   <f-2>4
2199   <c-1 e-2 g-3 b-5>4 |
2200   \set fingeringOrientations = #'(up left down)
2201   <f-2>4
2202   <c-1 e-2 g-3 b-5>4
2203   \set fingeringOrientations = #'(up left)
2204   <f-2>4
2205   <c-1 e-2 g-3 b-5>4 |
2206   \set fingeringOrientations = #'(right)
2207   <f-2>4
2208   <c-1 e-2 g-3 b-5>4
2209 }
2210 @end lilypond
2211
2212 @noindent
2213 運指法記号が少し込み合っているように見える場合は、@c
2214 @code{font-size} でサイズを下げることができます。@c
2215 デフォルト値は内部リファレンスの @code{Fingering} オブジェクトのページから
2216 @w{@code{-5}} であることがわかるので、@w{@code{-7}} にセットしてみましょう:
2217
2218 @lilypond[quote,ragged-right,verbatim]
2219 \relative {
2220   \override Fingering.font-size = #-7
2221   \set fingeringOrientations = #'(left)
2222   <f'-2>4
2223   <c-1 e-2 g-3 b-5>4
2224   \set fingeringOrientations = #'(left)
2225   <f-2>4
2226   <c-1 e-2 g-3 b-5>4 |
2227   \set fingeringOrientations = #'(up left down)
2228   <f-2>4
2229   <c-1 e-2 g-3 b-5>4
2230   \set fingeringOrientations = #'(up left)
2231   <f-2>4
2232   <c-1 e-2 g-3 b-5>4 |
2233   \set fingeringOrientations = #'(right)
2234   <f-2>4
2235   <c-1 e-2 g-3 b-5>4
2236 }
2237 @end lilypond
2238
2239
2240 @node 譜外部オブジェクト
2241 @subsection 譜外部オブジェクト
2242 @translationof Outside-staff objects
2243
2244 譜外部オブジェクトは自動的に衝突を回避するよう配置されます。@c
2245 配置が最適でない場合に自動配置をオーバライドする方法がいくつかあります。
2246
2247 @menu
2248 * outside-staff-priority プロパティ::
2249 * textLengthOn コマンド::
2250 * 強弱記号の配置::
2251 * グラフィカル オブジェクトのサイズ::
2252 @end menu
2253
2254
2255 @node outside-staff-priority プロパティ
2256 @unnumberedsubsubsec @code{outside-staff-priority} プロパティ
2257 @translationof The outside-staff-priority property
2258
2259 小さな値の @code{outside-staff-priority} プロパティを持つオブジェクトは@c
2260 譜の近くに配置され、他の譜外部オブジェクトは衝突を避けるのに必要な分だけ@c
2261 離されます。@c
2262 @code{outside-staff-priority} は @code{grob-interface} の中で@c
2263 定義されているため、すべてのレイアウト  オブジェクトのプロパティです。@c
2264 デフォルトでは、すべての譜内部オブジェクトの @code{outside-staff-priority} は
2265 @code{#f} にセットされていて、譜外部オブジェクトが作成されたときに@c
2266 その譜外部オブジェクトの @code{outside-staff-priority} に適当な数値が@c
2267 セットされます。@c
2268 以下の表はいくつかの一般的な譜外部オブジェクトのデフォルトの
2269 @code{outside-staff-priority} 値を示しています。
2270
2271 @multitable @columnfractions .3 .15 .45
2272 @headitem レイアウト オブジェクト
2273   @tab 優先度
2274   @tab 以下のオブジェクトの配置を制御する:
2275 @item @code{RehearsalMark}
2276   @tab @code{1500}
2277   @tab リハーサル記号
2278 @item @code{MetronomeMark}
2279   @tab @code{1000}
2280   @tab メトロノーム記号
2281 @item @code{SostenutoPedalLineSpanner}
2282   @tab @code{1000}
2283   @tab ペダル記号
2284 @item @code{SustainPedalLineSpanner}
2285   @tab @code{1000}
2286   @tab
2287 @item @code{UnaCordaPedalLineSpanner}
2288   @tab @code{1000}
2289   @tab
2290 @item @code{MeasureCounter}
2291   @tab @code{750}
2292   @tab 小節番号
2293 @item @code{VoltaBracketSpanner}
2294   @tab @code{600}
2295   @tab Volta (番号付きのリピート) の囲み
2296 @item @code{InstrumentSwitch}
2297   @tab @code{500}
2298   @tab 楽器を変更するテキスト
2299 @item @code{TextScript}
2300   @tab @code{450}
2301   @tab マークアップ テキスト
2302 @item @code{MultiMeasureRestText}
2303   @tab @code{450}
2304   @tab 複数小節にわたる休符上のテキスト
2305 @item @code{CombineTextScript}
2306   @tab @code{450}
2307   @tab パート結合のテキスト
2308 @item @code{OttavaBracket}
2309   @tab @code{400}
2310   @tab オッターバ (オクターブを上下させる記号) の囲み
2311 @item @code{TextSpanner}
2312   @tab @code{350}
2313   @tab テキスト スパナ
2314 @item @code{DynamicLineSpanner}
2315   @tab @code{250}
2316   @tab すべての強弱記号
2317 @item @code{BarNumber}
2318   @tab @code{100}
2319   @tab 小節番号
2320 @item @code{TrillSpanner}
2321   @tab @code{50}
2322   @tab トリル記号
2323 @item @code{AccidentalSuggestion}
2324   @tab @code{0}
2325   @tab 注釈的な臨時記号 (音符の上に付く臨時記号、ムジカ・フィクタ)
2326 @end multitable
2327
2328 これらのうちのいくつかのデフォルトでの配置を示している例を挙げます。
2329
2330 @cindex text spanner (テキスト スパナ)
2331 @cindex ottava bracket (オッターバ囲み)
2332
2333 @funindex \startTextSpan
2334 @funindex \stopTextSpan
2335
2336 @cindex TextSpanner, example of overriding (TextSpanner をオーバライドする例)
2337 @cindex bound-details property, example (bound-details プロパティの例)
2338
2339 @c KEEP LY
2340 @lilypond[quote,fragment,ragged-right,verbatim]
2341 % 以降のテキスト スパナの詳細を設定します
2342 \override TextSpanner.bound-details.left.text
2343     = \markup { \small \bold Slower }
2344 % 強弱記号を譜の上に配置します
2345 \dynamicUp
2346 % オッターバ囲みの開始
2347 \ottava #1
2348 c''4 \startTextSpan
2349 % 強弱テキストとヘアピンを付け加えます
2350 c''4\pp\<
2351 c''4
2352 % テキスト スクリプトを付け加えます
2353 c''4^Text |
2354 c''4 c''
2355 % 強弱テキストを付け加え、強弱ヘアピンを終わらせます
2356 c''4\ff c'' \stopTextSpan |
2357 % オッターバ囲みを終わらせます
2358 \ottava #0
2359 c'4 c' c' c' |
2360 @end lilypond
2361
2362 この例はテキスト スパナ -- 音楽の上に置かれる延長線付きのテキスト -- の@c
2363 作成方法についても示しています。@c
2364 スパナは @code{\startTextSpan} コマンドから
2365 @code{\stopTextSpan} コマンドまで延び、テキストのフォーマットは
2366 @code{\override TextSpanner} コマンドによって定義されます。@c
2367 詳細は @ruser{テキスト スパナ} を参照してください。
2368
2369 この例はさらにオッターバ囲みを作成する方法についても示しています。
2370
2371 @cindex tweaking bar number placement (小節番号の配置を調節する)
2372 @cindex bar numbers, tweaking placement (小節番号の配置を調節する)
2373 @cindex tweaking metronome mark placement (メトロノーム記号の配置を調節する)
2374 @cindex metronome mark, tweaking placement (メトロノーム記号の配置を調節する)
2375 @cindex tweaking rehearsal mark placement (リハーサル記号の配置を調節する)
2376 @cindex rehearsal marks, tweaking placement (リハーサル記号の配置を調節する)
2377
2378 @code{outside-staff-priority} のデフォルト値による配置が@c
2379 あなたの望みに合わない場合、いずれかのオブジェクトの優先度を@c
2380 オーバライドすることになるかもしれません。@c
2381 上記の例で、オッターバ囲みをテキスト スパナの下に配置したいとします。@c
2382 すべきことは、@code{OttavaBracket} は @code{Staff} コンテキストの中に@c
2383 作成されるということを思い出し、@code{OttavaBracket} の優先度を@c
2384 内部リファレンスか上記の表で調べて、それを @code{TextSpanner} の値よりも@c
2385 小さくすることです:
2386
2387 @cindex TextSpanner, example of overriding (TextSpanner をオーバライドする例)
2388 @cindex bound-details property, example (bound-details プロパティの例)
2389
2390 @c KEEP LY
2391 @lilypond[quote,fragment,ragged-right,verbatim]
2392 % 以降のテキスト スパナの詳細を設定します
2393 \override TextSpanner.bound-details.left.text
2394     = \markup { \small \bold Slower }
2395 % 強弱記号を譜の上に配置します
2396 \dynamicUp
2397 % 以降のオッターバ囲みをテキスト スパナの下に配置します
2398 \once \override Staff.OttavaBracket.outside-staff-priority = #340
2399 % オッターバ囲みの開始
2400 \ottava #1
2401 c''4 \startTextSpan
2402 % 強弱テキストを付け加えます
2403 c''4\pp
2404 % 強弱の線スパナを付け加えます
2405 c''4\<
2406 % テキスト スクリプトを付け加えます
2407 c''4^Text |
2408 c''4 c''
2409 % 強弱テキストを付け加えます
2410 c''4\ff c'' \stopTextSpan |
2411 % オッターバ囲みを終わらせます
2412 \ottava #0
2413 c'4 c' c' c' |
2414 @end lilypond
2415
2416 これらのオブジェクトのいくつか
2417 -- 特に、小節番号、メトロノーム記号、それにリハーサル記号 --
2418 はデフォルトでは @code{Score} コンテキストの中にあるため、@c
2419 それらのプロパティをオーバライドする場合は適切なコンテキストを@c
2420 指定する必要があることに注意してください。
2421
2422 @cindex slurs and outside-staff-priority (スラーと outside-staff-priority)
2423 @cindex slurs and articulations (スラーとアーティキュレーション)
2424 @cindex articulations and slurs (アーティキュレーションとスラー)
2425
2426 スラーはデフォルトでは譜内部オブジェクトに分類されています。@c
2427 しかしながら、譜の上部に配置された音符に付くスラーは@c
2428 しばしば譜の上に表示されます。@c
2429 このことは、スラーがまず最初に配置されるため、アーティキュレーションなどの@c
2430 譜外部オブジェクトをあまりにも高い位置に押し上げる可能性があります。@c
2431 アーティキュレーションの @code{avoid-slur} プロパティに
2432 @code{'inside} をセットすることでアーティキュレーションを@c
2433 スラーよりも内側に配置することができます。@c
2434 しかし、@code{avoid-slur} プロパティはアーティキュレーションの
2435 @code{outside-staff-priority} が @code{#f} にセットされている場合にのみ@c
2436 効果を持ちます。@c
2437 代替手段として、スラーの @code{outside-staff-priority} に数値を@c
2438 セットすることによって、スラーを他の譜外部オブジェクトとともに
2439 @code{outside-staff-priority} 値に従って配置することができます。@c
2440 ここで、2 つの方法の効果を示す例を挙げます:
2441
2442 @lilypond[quote,verbatim]
2443 \relative c'' {
2444   c4( c^\markup { \tiny \sharp } d4.) c8 |
2445   c4(
2446     \once \override TextScript.avoid-slur = #'inside
2447     \once \override TextScript.outside-staff-priority = ##f
2448     c4^\markup { \tiny \sharp } d4.) c8 |
2449   \once \override Slur.outside-staff-priority = #500
2450     c4( c^\markup { \tiny \sharp } d4.) c8 |
2451 }
2452 @end lilypond
2453
2454 @code{outside-staff-priority} は、個々のオブジェクトの垂直方向の配置を@c
2455 制御するために使用することもできます。@c
2456 しかしながら、その結果は常に望み通りになるわけではありません。@c
2457 @ref{自動配置} にある例で @qq{Text3} を @qq{Text4} の上に@c
2458 配置したいとします。@c
2459 すべきことは @code{TextScript} の優先度を内部リファレンスか上記の表で調べて、@c
2460 @qq{Text3} の優先度を大きくすることです:
2461
2462 @cindex TextScript, example of overriding (TextScript をオーバライドする例)
2463 @cindex outside-staff-priority property, example (outside-staff-priority プロパティの例)
2464
2465 @lilypond[quote,fragment,ragged-right,verbatim]
2466 c''2^"Text1"
2467 c''2^"Text2" |
2468 \once \override TextScript.outside-staff-priority = #500
2469 c''2^"Text3"
2470 c''2^"Text4" |
2471 @end lilypond
2472
2473 これはたしかに @qq{Text3} を @qq{Text4} の上に配置しています。@c
2474 しかし、@qq{Text3}を @qq{Text2} の上に配置して、@c
2475 @qq{Text4} を押し下げてもいます。@c
2476 おそらく、これはそれほど望ましい結果ではないでしょう。@c
2477 本当に望んでいることは、すべての注釈を@c
2478 譜の上に譜から同じ距離だけ離して配置することです。@c
2479 そうするには明らかに、テキストのためにもっと広いスペースを確保するために、@c
2480 音符を水平方向に広げる必要があります。@c
2481 これは @code{\textLengthOn} コマンドを用いることで達成できます。
2482
2483 @node textLengthOn コマンド
2484 @unnumberedsubsubsec @code{@bs{}textLengthOn} コマンド
2485 @translationof The textLengthOn command
2486
2487 @cindex notes, spreading out with text (テキストに合わせて音符の間隔を広げる)
2488
2489 @funindex \textLengthOn
2490 @funindex \textLengthOff
2491
2492 デフォルトでは、音楽のレイアウトが考慮されている限り、@c
2493 マークアップによって作り出されるテキストは水平方向のスペースと関係しません。@c
2494 @code{\textLengthOn} コマンドはこの動作を逆にして、@c
2495 テキストの配置に便宜をはかる必要がある限り、音符の間隔を広げます:
2496
2497 @c KEEP LY
2498 @lilypond[quote,fragment,ragged-right,verbatim]
2499 \textLengthOn  % 音符の間隔を広げてテキストに揃えます
2500 c''2^"Text1"
2501 c''2^"Text2" |
2502 c''2^"Text3"
2503 c''2^"Text4" |
2504 @end lilypond
2505
2506 デフォルトの動作に戻すためのコマンドは @code{\textLengthOff} です。@c
2507 効果を与えるのが単一の音楽タイミングであれば、@code{\textLengthOn}
2508 に @code{\once} を付ける方法もあります。@c
2509 リハーサルマークやテンポ記号の水平方向のスペースを調整するには、
2510 @code{\markLengthOn} と @code{\markLengthOff} を使います。
2511
2512 @cindex markup text, allowing collisions (マークアップ テキストの衝突を許可する)
2513
2514 マークアップ テキストは譜の上に突き出している音符を避けます。@c
2515 このことが望ましくない場合、優先度を @code{#f} にセットすることによって@c
2516 上方向への自動再配置を Off にすることになるかもしれません。@c
2517 ここで、マークアップ テキストがそのような音符とどのように相互作用するかを@c
2518 示す例を挙げます。
2519
2520 @cindex TextScript, example of overriding (TextScript をオーバライドする例)
2521 @cindex outside-staff-priority property, example (outside-staff-priority プロパティの例)
2522
2523 @c KEEP LY
2524 @lilypond[quote,ragged-right,verbatim]
2525 \relative {
2526   % このマークアップは短いため衝突は起きません
2527   c''2^"Tex" c'' |
2528   R1 |
2529
2530   % このマークアップは長くて納まりきらないため、上に押し上げられます
2531   c,,2^"Text" c'' |
2532   R1 |
2533
2534   % 衝突回避を OFF にします
2535   \once \override TextScript.outside-staff-priority = ##f
2536   c,,2^"Long Text   " c'' |
2537   R1 |
2538
2539   % 衝突回避を OFF にします
2540   \once \override TextScript.outside-staff-priority = ##f
2541   \textLengthOn        % そして textLengthOn を ON にします
2542   c,,2^"Long Text   "  % 後ろにスペースが付け加えられます
2543   c''2 |
2544 }
2545 @end lilypond
2546
2547
2548 @node 強弱記号の配置
2549 @unnumberedsubsubsec 強弱記号の配置
2550 @translationof Dynamics placement
2551
2552 @cindex tweaking dynamics placement (強弱記号の配置を調整する)
2553 @cindex dynamics, tweaking placement (強弱記号の配置を調整する)
2554
2555 通常、強弱記号は譜の下に配置されます。@c
2556 しかしながら、@code{\dynamicUp} コマンドを使うことで上に配置される@c
2557 かもしれません。@c
2558 強弱記号は、その記号が付いている音符と垂直方向の関係で配置され、@c
2559 フレージング スラーや小節番号などの譜内部オブジェクトのすべてよりも@c
2560 下 (あるいは上) に配置されます。@c
2561 このことは、以下の例のように、@c
2562 到底受け入れられない結果を生み出す可能性があります:
2563
2564 @lilypond[quote,ragged-right,verbatim]
2565 \relative {
2566   \clef "bass"
2567   \key aes \major
2568   \time 9/8
2569   \dynamicUp
2570   bes4.~\f\< \( bes4 bes8 des4\ff\> c16 bes\! |
2571   ees,2.~\)\mf ees4 r8 |
2572 }
2573 @end lilypond
2574
2575 しかしながら、音符とそれに付けられた強弱記号が互いに近い場合、@c
2576 自動配置は後の方にある強弱記号を譜から離すことによって衝突を避けます。@c
2577 しかし、以下のかなり不自然な例が示すように、@c
2578 それは最適な配置ではないかもしれません:
2579
2580 @lilypond[quote,ragged-right,verbatim,fragment]
2581 \dynamicUp
2582 \relative { a'4\f b\mf a\mp b\p }
2583 @end lilypond
2584
2585 @noindent
2586 @q{実際} の音楽で同じような状況があった場合、音符の間隔をもう少し広げて、@c
2587 すべての強弱記号が譜から垂直方向に同じだけ離れるようにする方が@c
2588 望ましいかもしれません。@c
2589 マークアップ テキストの場合は @code{\textLengthOn} コマンドを@c
2590 用いることによってそうすることができますが、@c
2591 強弱記号には等価のコマンドがありません。@c
2592 そのため、@code{\override} コマンドを用いてそれを達成する方法を@c
2593 見出す必要があります。
2594
2595 @node グラフィカル オブジェクトのサイズ
2596 @unnumberedsubsubsec グラフィカル オブジェクトのサイズ
2597 @translationof Grob sizing
2598
2599 @cindex grob sizing (グラフィカル オブジェクトのサイズを決定する)
2600 @cindex sizing grobs (グラフィカル オブジェクトのサイズを決定する)
2601
2602 まず最初に、グラフィカル オブジェクトのサイズがどのように決定されるかを@c
2603 学ばなくてはなりません。@c
2604 すべてのグラフィカル オブジェクトの内部では参照ポイントが定義され、@c
2605 それはそれらの親オブジェクトとの相対位置を決定するために使用されます。@c
2606 このポイントは親オブジェクトから垂直方向に @code{X-offset}、@c
2607 垂直方向に @code{Y-offset} 離れた位置になります。@c
2608 オブジェクトの水平方向の広がりは数値のペア @code{X-extent} で与えられ、@c
2609 そのペアはオブジェクトの左端と右端の参照ポイントとの相対関係について@c
2610 述べています。@c
2611 垂直方向の広がりも同様に数値のペア @code{Y-extent} によって与えられます。@c
2612 これらは @code{grob-interface} をサポートする@c
2613 すべてのグラフィカル オブジェクトが持つプロパティです。
2614
2615 @cindex @code{extra-spacing-width}
2616
2617 デフォルトでは、譜外部オブジェクトには 0 の幅が与えられているため、@c
2618 水平方向で重なる可能性があります。@c
2619 これは @code{extra-spacing-width} に @code{'(+inf.0 . -inf.0)} を@c
2620 セットすることによって、左端の広がりをプラス無限大に、右端の広がりを@c
2621 マイナス無限大にするというトリックによって達成されています。@c
2622 譜外部オブジェクトが水平方向で重ならないことを保証するには、@c
2623 @code{extra-spacing-width} の値をオーバライドし、余分なスペースを少しだけ@c
2624 作る必要があります。単位は 2 つの譜線の間隔なので、左端を 0.5 単位左に、@c
2625 右端を 0.5 単位右に動かすことで実現できます:
2626
2627 @example
2628 \override DynamicText.extra-spacing-width = #'(-0.5 . 0.5)
2629 @end example
2630
2631 @noindent
2632 これが前の例で機能するかどうかを見てみましょう:
2633
2634 @cindex DynamicText, example of overriding (DynamicText をオーバライドする例)
2635 @cindex extra-spacing-width property, example (extra-spacing-width プロパティの例)
2636
2637 @lilypond[quote,ragged-right,verbatim,fragment]
2638 \dynamicUp
2639 % Extend width by 1 staff space
2640 \override DynamicText.extra-spacing-width = #'(-0.5 . 0.5)
2641 \relative { a'4\f b\mf a\mp b\p }
2642 @end lilypond
2643
2644 @noindent
2645 これで前よりも良くなりました。@c
2646 しかし、強弱記号が音符に合わせて上下するよりも、@c
2647 同じベースラインで揃っている方が望ましいでしょう。@c
2648 それを行うためのプロパティは @code{staff-padding} であり、@c
2649 衝突に関するセクションでカバーされています
2650 (@ref{オブジェクトの衝突} を参照してください)。
2651
2652
2653 @node 垂直方向のスペース
2654 @section 垂直方向のスペース
2655 @translationof Vertical spacing
2656
2657 基本的に、LilyPond のオブジェクトにおける垂直方向のスペーシングは非常に@c
2658 良いです。2 声とピアノ伴奏からなる単純な曲でどのようになるかを見てみましょう:
2659
2660 @lilypond[quote,fragment,ragged-right]
2661 <<
2662   \new ChoirStaff
2663   <<
2664     \new Staff {
2665       \new Voice = "music" {
2666         b'2 c' c' c'
2667       }
2668     }
2669     \new Lyrics
2670     \lyricsto "music" {
2671       Here are some lyrics
2672     }
2673     \new Staff {
2674       \clef bass e'2 f e c
2675     }
2676   >>
2677   \new PianoStaff
2678   <<
2679     \new Staff {
2680       g''2 c'' c'' a''
2681     }
2682     \new Staff {
2683       \clef bass e2 f c e
2684     }
2685   >>
2686 >>
2687 @end lilypond
2688
2689 垂直方向のスペースについて、何もおかしな所はありません。しかし、あなたが@c
2690 出版社と共に作業していて、譜と歌詞の垂直方向のスペースについてある要求が@c
2691 ある場合を想像してください: 歌詞が音符から離れて配置されるように、@c
2692 ピアノ伴奏が歌のパートから離れて配置されるように、ピアノ伴奏の 2 つの譜が@c
2693 近づけて配置されるように要求されたとします。まず歌詞から取り組み始めましょう。
2694
2695 歌詞はシステム (訳注: 1 行分の譜のまとまり) 内に配置されています。@c
2696 そのため、歌詞のスペースを調整するコマンドは@c
2697 @ruser{システム内部の可変な垂直方向のスペース} にあります。@c
2698 これによると、歌詞は @code{non-staff lines} (譜ではない行) であるため、@c
2699 このスペースを変更するコマンドは @code{nonstaff} プロパティと関連する@c
2700 ということが分かります。歌詞と関連している (上の段の) 譜とのスペースを@c
2701 広げるには @code{relatedstaff} プロパティ、下の段とのスペースを広げるには
2702 @code{unrelatedstaff} プロパティを使います。@c
2703 歌のパートは @code{VerticalAxisGroup} の一部であるため、そのプロパティを@c
2704 調整する必要があります。試してみて、効果があるか見てみましょう:
2705
2706 @lilypond[quote,fragment,ragged-right,verbatim]
2707 <<
2708   \new ChoirStaff
2709   <<
2710     \new Staff {
2711       \new Voice = "music" {
2712         b'2 c' c' c'
2713       }
2714     }
2715     \new Lyrics \with {
2716       \override VerticalAxisGroup.
2717         nonstaff-relatedstaff-spacing.padding = #5
2718       \override VerticalAxisGroup.
2719         nonstaff-unrelatedstaff-spacing.padding = #5
2720     }
2721     \lyricsto "music" {
2722       Here are some lyrics
2723     }
2724     \new Staff {
2725       \clef bass e'2 f e c
2726     }
2727   >>
2728   \new PianoStaff
2729   <<
2730     \new Staff {
2731       g''2 c'' c'' a''
2732     }
2733     \new Staff {
2734       \clef bass e2 f c e
2735     }
2736   >>
2737 >>
2738 @end lilypond
2739
2740 確かに反映されました。しかしやり過ぎかもしれません。@code{padding}
2741 プロパティを 5 に設定すると、LilyPond は 5 譜スペースをオブジェクト間の@c
2742 距離に追加します。これは今回は大きすぎるので、2 を使用しましょう。
2743
2744 次に、ピアノ伴奏を歌のパートから離しましょう。歌は @code{ChoirStaff}
2745 であるため、この譜のグループと下にあるピアノ譜とのスペースを増やす必要が@c
2746 あります。@code{StaffGrouper} の @code{staffgroup-staff-spacing} にある
2747 @code{basic-distance} を変更することで行います。
2748
2749 @lilypond[quote,fragment,ragged-right,verbatim]
2750 <<
2751   \new ChoirStaff \with {
2752     \override StaffGrouper.
2753       staffgroup-staff-spacing.basic-distance = #15
2754   }
2755   <<
2756     \new Staff {
2757       \new Voice = "music" {
2758         b'2 c' c' c'
2759       }
2760     }
2761     \new Lyrics \with {
2762       \override VerticalAxisGroup.
2763         nonstaff-relatedstaff-spacing.padding = #2
2764       \override VerticalAxisGroup.
2765         nonstaff-unrelatedstaff-spacing.padding = #2
2766     }
2767     \lyricsto "music" {
2768       Here are some lyrics
2769     }
2770     \new Staff {
2771       \clef bass e'2 f e c
2772     }
2773   >>
2774   \new PianoStaff
2775   <<
2776     \new Staff {
2777       g''2 c'' c'' a''
2778     }
2779     \new Staff {
2780       \clef bass e2 f c e
2781     }
2782   >>
2783 >>
2784 @end lilypond
2785
2786 完璧です。さて、ピアノ譜をお互いに近づける最後の要求に応えましょう。@c
2787 そのためには、また @code{StaffGrouper} のプロパティを変更しますが、今回は@c
2788 @code{basic-distance} と @code{padding} の両方の値を減らします。@c
2789 このようにして行います。
2790
2791 @lilypond[quote,fragment,ragged-right,verbatim]
2792 <<
2793   \new ChoirStaff \with {
2794     \override StaffGrouper.
2795       staffgroup-staff-spacing.basic-distance = #15
2796   }
2797   <<
2798     \new Staff {
2799       \new Voice = "music" {
2800         b'2 c' c' c'
2801       }
2802     }
2803     \new Lyrics \with {
2804       \override VerticalAxisGroup.
2805         nonstaff-relatedstaff-spacing.padding = #2
2806       \override VerticalAxisGroup.
2807         nonstaff-unrelatedstaff-spacing.padding = #2
2808     }
2809     \lyricsto "music" {
2810       Here are some lyrics
2811     }
2812     \new Staff {
2813       \clef bass e'2 f e c
2814     }
2815   >>
2816   \new PianoStaff \with {
2817     \override StaffGrouper.staff-staff-spacing = #'(
2818                             (basic-distance . 0)
2819                             (padding . 0))
2820   }
2821   <<
2822     \new Staff {
2823       g''2 c'' c'' a''
2824     }
2825     \new Staff {
2826       \clef bass e2 f c e
2827     }
2828   >>
2829 >>
2830 @end lilypond
2831
2832 非常に近くなりました。しかしこれが出版社の望むものでした。@c
2833 必要であれば、@code{padding} と @code{basic-distance} を変更することで@c
2834 間隔を広げることができます。
2835
2836 垂直方向のスペースを変更する方法はたくさんあります。覚えておくべき@c
2837 キーポイントはこれです: @code{StaffGroup} にあるオブジェクト
2838 (例えば @code{GrandStaff} や @code{PianoStaff} のグループ) のスペースは、
2839 @code{StaffGrouper} の変数によって操作されること、@c
2840 グループ化されていない譜 (例えば @code{Lyrics} や @code{Staff})
2841 のスペースは、@code{VerticalAxisGroup} の変数によって操作されることです。@c
2842 詳しくは、@ruser{Flexible vertical spacing paper variables} と
2843 @ruser{Flexible vertical spacing within systems} を参照してください。
2844
2845 @node オブジェクトの衝突
2846 @section オブジェクトの衝突
2847 @translationof Collisions of objects
2848
2849 @menu
2850 * オブジェクトを移動させる::
2851 * 表記の重なりを修正する::
2852 * 実際の音楽からの例::
2853 @end menu
2854
2855
2856 @node オブジェクトを移動させる
2857 @subsection オブジェクトを移動させる
2858 @translationof Moving objects
2859
2860 @cindex moving overlapping objects (重なり合っているオブジェクトを移動させる)
2861 @cindex moving colliding objects (衝突しているオブジェクトを移動させる)
2862 @cindex moving colliding grobs (衝突しているグラフィカル オブジェクトを移動させる)
2863 @cindex objects, moving colliding (衝突しているオブジェクトを移動させる)
2864 @cindex grobs, moving colliding (衝突しているグラフィカル オブジェクトを移動させる)
2865
2866 これを聞いて驚くかもしれませんが、LilyPond は完璧ではありません。@c
2867 いくつかの記譜要素が重なりある可能性があります。@c
2868 これは遺憾なことですが、実際にはごく稀です。@c
2869 通常、オブジェクトを移動させる必要性は読みやすさや美しさのためです
2870 -- オブジェクトの周りにもう少しスペースを多く/少なくとった方が@c
2871 より良くなるといった場合です。
2872
2873 記譜要素の重なりを解決する主要なアプローチが 3 つあります。@c
2874 それらは以下の順番で考慮されるべきです:
2875
2876 @enumerate
2877 @item
2878 重なり合っているオブジェクトの 1 つの @strong{direction} を
2879 @ref{譜内部オブジェクト} でリストアップした内部オブジェクトのための@c
2880 定義済みコマンドを用いて変更することになるかもしれません。@c
2881 符幹、スラー、連桁、タイ、強弱記号、テキスト、@c
2882 連符はこの方法で容易に再配置できるかもしれません。@c
2883 この方法の限界は配置の仕方の選択肢が 2 つしかないことであり、@c
2884 どちらも適当でないかもしれません。
2885
2886 @item
2887 LilyPond がレイアウト オブジェクトを配置するときに使用する@c
2888 @strong{オブジェクト プロパティ}を @code{\override} を用いて@c
2889 変更することになるかもしれません。@c
2890 オブジェクト プロパティに変更を加えることの利点は、@c
2891 (a) スペースをとる必要がある場合に他のいくつかのオブジェクトは@c
2892 自動的に移動させられます、@c
2893 (b) 1 回のオーバライドを同じオブジェクト タイプの@c
2894 インスタンスすべてに適用することができます。@c
2895 変更するプロパティには以下のものが含まれます:
2896
2897 @itemize
2898
2899 @item
2900 @code{direction}
2901
2902 これはすでに詳しくカバーされています --
2903 @ref{譜内部オブジェクト} を参照してください。
2904
2905 @item
2906 @code{padding}, @code{left-padding},
2907 @code{right-padding}, @code{staff-padding}
2908
2909 @cindex padding (パディング)
2910 @cindex left-padding property (left-padding プロパティ)
2911 @cindex padding property (padding プロパティ)
2912 @cindex right-padding property (right-padding プロパティ)
2913 @cindex staff-padding property (staff-padding プロパティ)
2914
2915 あるオブジェクトが配置されるとき、そのオブジェクトの
2916 @code{padding} プロパティが、そのオブジェクトとそのオブジェクトに@c
2917 最も隣接するオブジェクトの端との間に置かれる間隔を指定します。@c
2918 @strong{配置される最中}のオブジェクトの @code{padding} 値が@c
2919 使用されるということに注意してください。@c
2920 すでに配置されたオブジェクトの @code{padding} 値は無視されます。@c
2921 @code{padding} によって指定された間隔は @code{side-position-interface} を@c
2922 サポートするオブジェクトすべてに適用することができます。
2923
2924 臨時記号のグループの配置は、@code{padding} の代わりに、@code{left-padding} と
2925 @code{right-padding} によって制御されます。@c
2926 これらのプロパティは @code{AccidentalPlacement} オブジェクトの中にあり、@c
2927 注意すべきことに、そのオブジェクトは
2928 @strong{Staff} コンテキストの中にあります。@c
2929 譜刻プロセスでは、符頭が最初に譜刻され、臨時記号 (がある場合は) が@c
2930 次に符頭の左側に付け加えられます。@c
2931 このとき、臨時記号と符頭の間隔は
2932 @code{right-padding} プロパティによって指定されます。@c
2933 そのため、@code{AccidentalPlacement} オブジェクトの
2934 @code{right-padding} プロパティだけが臨時記号の配置に影響を与えます。
2935
2936 @code{staff-padding} プロパティは @code{padding} プロパティと@c
2937 深い関わりがあります:
2938 @code{padding} プロパティは、@code{side-position-interface} を@c
2939 サポートするオブジェクトとそれに最隣接する他のオブジェクト
2940 (一般には音符や譜線) との間のスペースの最小量を制御します。@c
2941 一方、@code{staff-padding} は常に譜の外側に配置される@c
2942 レイアウト オブジェクトにのみ適用されます --
2943 これは譜の外側に配置されるオブジェクトと譜の間に挿入されるべき@c
2944 スペースの最小量を制御します。@c
2945 @code{staff-paddin} は譜ではなく音符との相対関係で配置されるオブジェクトには@c
2946 影響を与えないということに注意してください。@c
2947 そのようなオブジェクトに対して @code{staff-padding} のオーバライドを@c
2948 行ったとしてもエラーは起きないかもしれませんが、無視されます。
2949
2950 あなたが再配置しようとしているオブジェクトに対して求められる
2951 @code{padding} プロパティはどれなのかを見つけるには、内部リファレンスに@c
2952 戻ってそのオブジェクトのプロパティを調べる必要があります。@c
2953 @code{padding} プロパティはあなたが再配置しようとしているオブジェクトの中には@c
2954 無いかもしれないということに注意してください。@c
2955 その場合は、そのオブジェクトに関係があるオブジェクトを調べてください。
2956
2957 すべての @code{padding} 値は譜スペースで測られます。@c
2958 たいていのオブジェクトでは、この値はデフォルトで約 1.0 か@c
2959 それ以下にセットされています (それぞれのオブジェクトで値はさまざまです)。@c
2960 間隔を大きく (あるいは小さく) する必要がある場合、@c
2961 その値はオーバライドされるかもしれません。
2962
2963 @item
2964 @code{self-alignment-X}
2965
2966 @cindex self-alignment-X property (self-alignment-X プロパティ)
2967
2968 このプロパティを使うことで、親オブジェクトの参照ポイントに従って、@c
2969 オブジェクトを左、右、中央に揃えることができます。@c
2970 このプロパティは @code{self-alignment-interface} をサポートする@c
2971 オブジェクトすべてに対して使用することができます。@c
2972 一般に、テキストを保持するオブジェクトです。@c
2973 値は @code{Left}, @code{RIGHT}, @code{CENTER} です。@c
2974 代替手段として、@w{@code{-1}} から @code{+1} までの数値を@c
2975 指定することもできます。@c
2976 @code{-1} は左揃えであり、@code{+1} は右揃え、@c
2977 その間の数値は左揃えから右揃えへのテキストを移動させます
2978 (訳者: @code{-0.5} であれば、左揃えと中央揃えの中間ということ)。@c
2979 @code{1} よりも大きな数値を指定することでテキストをさらに左へ、@c
2980 @w{@code{-1}} よりも小さな数値を指定することでテキストを@c
2981 さらに右へ移動させることができます。@c
2982 この値を @code{1} 増減することによる移動量はそのテキストの長さの半分です。
2983
2984 @item
2985 @code{extra-spacing-width}
2986
2987 @cindex extra-spacing-width property (extra-spacing-width プロパティ)
2988
2989 このプロパティは @code{item-interface} をサポートするオブジェクトすべてで@c
2990 利用可能です。@c
2991 このプロパティは 2 つの数値をとり、最初の数値はオブジェクトの左側に@c
2992 余白を追加し、2 番目の数値はオブジェクトの右側に余白を追加します。@c
2993 負値はオブジェクトの端を左に移動させ、正値は右に移動させます。@c
2994 そのため、オブジェクトを広くするには、最初の数値を負値にして、@c
2995 2 番目の数値を正値にする必要があります。@c
2996 すべてのオブジェクトが両方の数値を遵守するわけではないということに@c
2997 注意してください。@c
2998 例えば、@code{Accidental} オブジェクトは最初の数値 (左端) にしか@c
2999 注意を払いません。
3000
3001 @item
3002 @code{staff-position}
3003
3004 @cindex staff-position property (staff-position プロパティ)
3005
3006 @code{staff-position} は @code{staff-symbol-referencer-interface} の@c
3007 プロパティです。@c
3008 これは、譜との相対関係で配置されるオブジェクトによってサポートされます。@c
3009 このプロパティはオブジェクトの垂直方向の位置を、譜の中央にある譜線から@c
3010 譜スペースの半分を単位として、指定します。@c
3011 このプロパティは複数小節に亘る休符、タイ、異なるボイスの中にある音符といった@c
3012 レイアウト オブジェクトの衝突を解決する場合に有用です。
3013
3014 @item
3015 @code{horizontal-shift}
3016
3017 @cindex horizontal-shift property (horizontal-shift プロパティ)
3018 @cindex note column (音符列)
3019 @cindex note collisions (音符の衝突)
3020 @cindex collisions, notes (音符の衝突)
3021 @cindex shift commands (シフト コマンド)
3022 @funindex \shiftOff
3023 @funindex \shiftOn
3024 @funindex \shiftOnn
3025 @funindex \shiftOnnn
3026
3027 ボイスの中で、同じタイミングにある全ての音符は 1 つの音符列にグループ化され、@c
3028 @code{NoteColumn} オブジェクトがその音符のグループの水平位置をコントロールする@c
3029 ために作成されます (@ref{Explicitly instantiating voices} の
3030 @qq{Note columns} を参照してください)。
3031 もし 1 つの Staff コンテキストにある 2 つ以上の音符列が、同じタイミングで@c
3032 出現し同じ向きの符幹を持つ場合@emph{に限り}、それらの @code{horizontal-shift}
3033 プロパティの値が順位を付けるために使用され、高い順位にあるものが優先的に@c
3034 符頭の衝突を避けるために移動します。このプロパティは @code{\voiceXXX}
3035 コマンドによってセットされ、@code{\override} コマンドで直接上書きすることが@c
3036 できますが、通常は @code{\shiftOn} コマンドによって上書きします。@c
3037 注意しなければならないことは、このプロパティは移動の @emph{順位} を@c
3038 決定するだけだけであり、移動の大きさを決定するものではないということです。
3039 移動の大きさは、順位ごとに符頭の幅を基にして 1 つずつ大きくなっていきます。@c
3040 1 つ分の幅は通常符頭の幅の半分ですが、それで近い場合には符頭 1 つ分の幅に@c
3041 なります。
3042
3043 @item
3044 @code{force-hshift}
3045
3046 @cindex force-hshift property (force-hshift プロパティ)
3047
3048 @code{force-hshift} プロパティは @code{NoteColumn} のプロパティです
3049 (実際には @code{note-column-interface} のプロパティです)。@c
3050 このプロパティを変更することで、音符列が重なってしまう場合において@c
3051 音符列を移動させることができます。重ならない音符列には効果が無いということに@c
3052 注意してください。移動の量は音符列特有の単位、すなわち最初のボイスの@c
3053 中にある音符の符頭の幅で指定されます。
3054 このプロパティは、通常の
3055 @code{\shiftOn} コマンド
3056 (@ref{ボイスを明示的にインスタンス化する} を参照してください)
3057 が音符の衝突を十分に解決できないような複雑な状況で使用されるべきです。@c
3058 この目的のためには、@code{extra-offset} プロパティを用いるよりも
3059 @code{force-hshift} プロパティを用いる方が好ましいです。@c
3060 なぜなら、譜スペースを単位とした距離を算出する必要が無く、@c
3061 @code{NoteColumn} の内外に音符を移動させることは符頭のマージといった@c
3062 他のアクションに影響を与えるからです。
3063
3064 @end itemize
3065
3066 @item
3067 最後に、他の方法がすべて失敗した場合、オブジェクトを手動で譜の中央線からの@c
3068 垂直方向の相対位置に従って、あるいは新たに設定した位置との距離に従って、@c
3069 再配置することになるかもしれません。@c
3070 この方法の欠点は、再配置のための正確な値を算出する必要がある --
3071 しばしば、その算出はそれぞれのオブジェクトに対して個々に、トライ&エラーで@c
3072 行われます -- 必要があるということ、さらに、この方法による移動は
3073 LilyPond が他のオブジェクトをすべて配置した後に行われるため、@c
3074 ユーザはその結果として起こるかもしれない衝突を@c
3075 すべて回避する責任があるということです。@c
3076 しかし、この方法の最大の問題点は、音楽が後で変更された場合に、@c
3077 再配置用の値を再び算出する必要があるということです。@c
3078 このタイプの手動再配置のために使用されるプロパティは以下のようなものです:
3079
3080 @table @code
3081 @item extra-offset
3082
3083 @cindex extra-offset property (extra-offset プロパティ)
3084
3085 このプロパティは @code{grob-interface} をサポートするレイアウト オブジェクトの@c
3086 いずれかに適用されます。@c
3087 このプロパティはペアになった数値をとり、それぞれの数値は@c
3088 水平方向と垂直方向の移動を指定します。@c
3089 負値はオブジェクトを左または下へ移動させます。@c
3090 単位は譜スペースです。@c
3091 この移動はオブジェクトの譜刻が完了した後に行われるため、あるオブジェクトを@c
3092 任意の位置へ、他のオブジェクトに影響を与えることなく、再配置することができます。
3093
3094 @item positions
3095
3096 @cindex positions property (positions プロパティ)
3097
3098 このプロパティは、連桁、スラー、連符の傾きと高さを手動で調節するために@c
3099 最も有用なプロパティです。@c
3100 このプロパティはペアになった数値をとり、それぞれの数値は連桁、@c
3101 スラーなどの左端と右端の位置を譜の中央線との距離で指定します。@c
3102 単位は譜スペースです。@c
3103 けれども、スラーとフレージング スラーを任意の値で@c
3104 再配置することはできないということに注意してください。@c
3105 LilyPond はまずスラーが取り得る位置のリストを生成し、それからデフォルトでは
3106 @qq{最良に見える} スラーを探します。@c
3107 @code{positions} がオーバライドされていた場合、@c
3108 そのリストの中からリクエストされた位置に最も近いスラーが選択されます。
3109 @end table
3110
3111 @end enumerate
3112
3113 あるオブジェクトがこれらのプロパティすべてを持っているわけではありません。@c
3114 内部リファレンスに行き、そのオブジェクトではどのプロパティが@c
3115 利用可能なのかを調べる必要があります。
3116
3117 ここで、衝突に関係しそうなオブジェクトをリスト アップします。@c
3118 内部リファレンスを調べるためのオブジェクト名を付けるので、@c
3119 それらのオブジェクトを移動させるのに使うプロパティを見つけ出すのに@c
3120 使ってください。
3121
3122 @multitable @columnfractions .5 .5
3123 @headitem オブジェクト タイプ                    @tab オブジェクト名
3124 @item アーティキュレーション (Articulation)      @tab @code{Script}
3125 @item 連桁 (Beam)                                @tab @code{Beam}
3126 @item 強弱記号 (Dynamic) (垂直方向)              @tab @code{DynamicLineSpanner}
3127 @item 強弱記号 (Dynamic) (水平方向)              @tab @code{DynamicText}
3128 @item 運指法記号 (Fingering)                     @tab @code{Fingering}
3129 @item リハーサル / テキスト記号 (Rehearsal / Text mark) @tab @code{RehearsalMark}
3130 @item スラー (Slur)                                @tab @code{Slur}
3131 @item テキスト -- つまり、@code{^"text"} (Text)  @tab @code{TextScript}
3132 @item タイ (Tie)                                 @tab @code{Tie}
3133 @item 連符 (Tuplet)                              @tab @code{TupletBracket}
3134 @end multitable
3135
3136
3137 @node 表記の重なりを修正する
3138 @subsection 表記の重なりを修正する
3139 @translationof Fixing overlapping notation
3140
3141 今度は、前のセクションで扱ったプロパティが記譜の重なりを解決する手助けを@c
3142 どのようにできるかを見ていきましょう。
3143
3144 @menu
3145 * padding プロパティ::
3146 * right-padding プロパティ::
3147 * staff-padding プロパティ::
3148 * self-alignment-X プロパティ::
3149 * staff-position プロパティ::
3150 * extra-offset プロパティ::
3151 * positions プロパティ::
3152 * force-hshift プロパティ::
3153 @end menu
3154
3155
3156 @node padding プロパティ
3157 @unnumberedsubsubsec @code{padding} プロパティ
3158 @translationof The padding property
3159
3160 @cindex padding (パディング)
3161 @cindex fixing overlapping notation (記譜要素の重なりを修正する)
3162 @cindex overlapping notation (重なり合っている記譜要素)
3163
3164 @code{padding} プロパティに値をセットすることによって、音符とその上または下に@c
3165 譜刻される記号との間の距離を増減することができます。
3166
3167 @cindex Script, example of overriding (Script をオーバライドする例)
3168 @cindex padding property, example (padding プロパティの例)
3169
3170 @lilypond[quote,fragment,verbatim]
3171 c'2\fermata
3172 \override Script.padding = #3
3173 b2\fermata
3174 @end lilypond
3175
3176 @cindex MetronomeMark, example of overriding (MetronomeMark をオーバライドする例)
3177 @cindex padding property, example (padding プロパティの例)
3178
3179 @c KEEP LY
3180 @lilypond[quote,fragment,verbatim]
3181 % これは機能しません。この下を見てください
3182 \override MetronomeMark.padding = #3
3183 \tempo 4 = 120
3184 c'1 |
3185 % これは機能します
3186 \override Score.MetronomeMark.padding = #3
3187 \tempo 4 = 80
3188 d'1 |
3189 @end lilypond
3190
3191 2 番目の例では、ある特定のオブジェクトを扱うのはどのコンテキストなのかを@c
3192 突き止めることが重要であるということに注意してください。@c
3193 @code{MetronomeMark} オブジェクトは @code{Score} コンテキストの中で@c
3194 処理されるため、@code{Voice} コンテキストの中でのプロパティの変更は@c
3195 無視されます。@c
3196 更に詳細を知りたければ、@ruser{Modifying properties} を参照してください。
3197
3198 @code{outside-staff-priority} に従って配置されているオブジェクトの並びの中の@c
3199 あるオブジェクトの @code{padding} プロパティが増やされた場合、@c
3200 そのオブジェクトとそれよりも外側にあるすべてオブジェクトが移動させられます。
3201
3202
3203 @node right-padding プロパティ
3204 @unnumberedsubsubsec @code{right-padding} プロパティ
3205 @translationof The right-padding property
3206
3207 @cindex right-padding property (right-padding プロパティ)
3208
3209 @code{right-padding} プロパティは臨時記号とそれが適用される音符との間の@c
3210 スペースに影響を与えます。@c
3211 このプロパティを変更することは必ずしも必要ではありませんが、@c
3212 微分音の音楽で使われる特殊な臨時記号の図柄や図柄の組み合わせに対して@c
3213 デフォルトのスペースが適切ではない場合に必要となるかもしれません。@c
3214 臨時記号のステンシルを望みのシンボルを保持するマークアップにオーバライド@c
3215 する必要があります:
3216
3217 @cindex Accidental, example of overriding (Accidental をオーバライドする例)
3218 @cindex text property, example (text プロパティの例)
3219 @cindex stencil property, example (stencil プロパティの例)
3220 @cindex AccidentalPlacement, example of overriding (AccidentalPlacement をオーバライドする例)
3221 @cindex right-padding property, example (right-padding プロパティの例)
3222
3223 @c KEEP LY
3224 @lilypond[quote,ragged-right,verbatim]
3225 sesquisharp = \markup { \sesquisharp }
3226 \relative {
3227   c''4
3228   % これは 1.5 倍シャープを譜刻しますが、スペースが小さすぎます
3229   \once \override Accidental.stencil = #ly:text-interface::print
3230   \once \override Accidental.text = #sesquisharp
3231   cis4 c
3232   % これはスペースを改善しています
3233   \once \override Score.AccidentalPlacement.right-padding = #0.6
3234   \once \override Accidental.stencil = #ly:text-interface::print
3235   \once \override Accidental.text = #sesquisharp
3236   cis4 |
3237 }
3238 @end lilypond
3239
3240 @noindent
3241 これは必然的に臨時記号のステンシルをオーバライドすることになります。@c
3242 このオーバライドについては後々までカバーされません。@c
3243 ステンシル タイプは手続きでなければならず、ここでは @code{Accidental} の
3244 @code{text} プロパティの内容
3245 -- 内容には 1.5 倍シャープがセットされています
3246 -- を譜刻するように変更されています。@c
3247 それらの記号は @code{right-padding} のオーバライドによって@c
3248 符頭からさらに遠くへ移動させられています。
3249
3250 @noindent
3251
3252
3253 @node staff-padding プロパティ
3254 @unnumberedsubsubsec @code{staff-padding} プロパティ
3255 @translationof The staff-padding property
3256
3257 @cindex aligning objects on a baseline (オブジェクトをベースラインに揃える)
3258 @cindex objects, aligning on a baseline (オブジェクトをベースラインに揃える)
3259
3260 @code{staff-padding} を使うことで、強弱記号などのオブジェクトを、@c
3261 他のオブジェクトが譜から離すよう強制しない限り、@c
3262 譜から一定の距離にあるベースラインに揃えることができます。@c
3263 このプロパティは @code{DynamicText} のプロパティではなく、@c
3264 @code{DynamicSpanner} のプロパティです。@c
3265 この理由は、このベースラインは延長スパナを含む @strong{すべて} の強弱記号に@c
3266 等しく適用されるべきだからです。@c
3267 そのため、これは以前のセクションでの例の中にある強弱記号を@c
3268 揃えるための方法になります:
3269
3270 @cindex DynamicText, example of overriding (DynamicText をオーバライドする例)
3271 @cindex extra-spacing-width property, example (extra-spacing-width プロパティの例)
3272 @cindex DynamicLineSpanner, example of overriding (DynamicLineSpanner をオーバライドする例)
3273 @cindex staff-padding property, example (staff-padding プロパティの例)
3274
3275 @lilypond[quote,fragment,ragged-right,verbatim]
3276 \override DynamicLineSpanner.staff-padding = #3
3277 \relative { a'4\f b\mf a\p b\mp }
3278 @end lilypond
3279
3280
3281 @node self-alignment-X プロパティ
3282 @unnumberedsubsubsec @code{self-alignment-X} プロパティ
3283 @translationof The self-alignment-X property
3284
3285 以下の例はこのプロパティが、運指法記号オブジェクトの右端を親の音符の@c
3286 参照ポイントに揃えることによって、@c
3287 弦楽器の運指法記号オブジェクトと音符の符幹との相対位置を調整している@c
3288 様子を示しています:
3289
3290 @cindex StringNumber, example of overriding (StringNumber をオーバライドする例)
3291 @cindex self-alignment-X property, example (self-alignment-X プロパティの例)
3292
3293 @lilypond[quote,fragment,ragged-right,verbatim]
3294 \voiceOne
3295 <a''\2>
3296 \once \override StringNumber.self-alignment-X = #RIGHT
3297 <a''\2>
3298 @end lilypond
3299
3300
3301 @node staff-position プロパティ
3302 @unnumberedsubsubsec @code{staff-position} プロパティ
3303 @translationof The staff-position property
3304
3305 @cindex object collision within a staff (譜内部でのオブジェクトの衝突)
3306
3307 あるボイスの中にある複数小節に亘る休符は他のボイスの中にある音符と@c
3308 衝突する可能性があります。@c
3309 このような休符は小節線と小節線の間の中央に譜刻されるため、@c
3310 LilyPond がそれと衝突するかもしれない音符を突き止めるのは非常に困難です。@c
3311 なぜなら、現在の音符間それに音符-休符間の衝突対応は、@c
3312 同時に起こる音符と休符に対してのみ行われるからです。@c
3313 以下に、このタイプの衝突の例を挙げます:
3314
3315 @lilypond[quote,verbatim,ragged-right]
3316 << \relative { c'4 c c c } \\ { R1 } >>
3317 @end lilypond
3318
3319 ここでの最良の解決策は、複数小節に亘る休符を下へ移動させることです。@c
3320 なぜなら、その休符はボイス 2 の中にあるからです。@c
3321 @code{\voiceTwo} (すなわち、@code{<<@{@dots{}@} \\ @{@dots{}@}>>} 構造の
3322 2 番目のボイス) のデフォルト状態では、@c
3323 @code{MultiMeasureRest} の @code{staff-position} は @code{-4} に@c
3324 セットされています。@c
3325 そのため、そのプロパティを、例えば半譜スペース 4 つ分押し下げるには、@c
3326 @w{@code{-8}} に変更する必要があります。
3327
3328 @cindex MultiMeasureRest, example of overriding (MultiMeasureRest をオーバライドする例)
3329 @cindex staff-position property, example (staff-position プロパティの例)
3330
3331 @lilypond[quote,verbatim,ragged-right]
3332 <<
3333   \relative { c'4 c c c }
3334   \\
3335   \override MultiMeasureRest.staff-position = #-8
3336   { R1 }
3337 >>
3338 @end lilypond
3339
3340 これは、例えば @code{extra-offset} を使うよりも良い解決方法です。@c
3341 なぜなら、その休符の上に加線が自動的に挿入されるからです。
3342
3343
3344 @node extra-offset プロパティ
3345 @unnumberedsubsubsec @code{extra-offset} プロパティ
3346 @translationof The extra-offset property
3347
3348 @cindex positioning objects (オブジェクトの位置を決定する)
3349 @cindex positioning grobs (グラフィカル オブジェクトの位置を決定する)
3350 @cindex objects, positioning (オブジェクトの位置を決定する)
3351 @cindex grobs, positioning (グラフィカル オブジェクトの位置を決定する)
3352
3353 @code{extra-offset} プロパティは、あるオブジェクトの水平方向と垂直方向の@c
3354 配置を完全に制御します。
3355
3356 以下の例では、2 番目の運指法記号が少し左に、そして 1.8 譜スペース下に@c
3357 移動させられています:
3358
3359 @cindex Fingering, example of overriding (Fingering をオーバライドする例)
3360 @cindex extra-offset property, example (extra-offset プロパティの例)
3361
3362 @lilypond[quote,fragment,verbatim]
3363 f'4-5
3364 \once \override Fingering.extra-offset = #'(-0.3 . -1.8)
3365 f'4-5
3366 @end lilypond
3367
3368
3369 @node positions プロパティ
3370 @unnumberedsubsubsec @code{positions} プロパティ
3371 @translationof The positions property
3372
3373 @cindex controlling tuplets, slurs, phrasing slurs, and beams manually (連符、スラー、フレージング スラーそれに連桁を手動で制御する)
3374 @cindex manually controlling tuplets, slurs, phrasing slurs, and beams (連符、スラー、フレージング スラーそれに連桁を手動で制御する)
3375 @cindex tuplet beams, controlling manually (連譜の連桁を手動で制御する)
3376 @cindex slurs, controlling manually (スラーを手動で制御する)
3377 @cindex phrasing slurs, controlling manually (フレージング スラーを手動で制御する)
3378 @cindex beams, controlling manually (連桁を手動で制御する)
3379
3380 @code{positions} プロパティは連符、スラー、フレージング スラー、@c
3381 連桁の位置を手動で制御することができ、それにより傾きも制御できます。
3382
3383 ここで、フレージング スラーとスラーが衝突している例を示します:
3384
3385 @lilypond[quote,verbatim,ragged-right]
3386 \relative { a'8 \( ( a'16 ) a \) }
3387 @end lilypond
3388
3389 @cindex PhrasingSlur, example of overriding (PhrasingSlur をオーバライドする例)
3390 @cindex positions property, example (positions プロパティの例)
3391
3392 @noindent
3393 衝突を解決するために、フレージング スラーの両端を上に移動させます。@c
3394 左端を譜中央線よりも 2.5 譜スペース上に設定し、右端を 4.5 譜スペース上に@c
3395 設定すると、LilyPond は候補の中から両端の位置が最も設定に近いフレージング
3396 スラーを選択します:
3397
3398 @lilypond[quote,verbatim,fragment,ragged-right]
3399 \once \override PhrasingSlur.positions = #'(2.5 . 4.5)
3400 a'8 \( ( a''16 ) a'' \)
3401 @end lilypond
3402
3403 これで改善されました。@c
3404 しかしながら、スラーの右端を少し下げてみてはどうでしょうか?@c
3405 そうしようとした場合、この方法では実行できないことがわかります。@c
3406 すでに表示されているスラーよりも右端が下がっている候補は無く、@c
3407 そのような場合には @code{positions} は効果を持たないからです。@c
3408 しかしながら、必要があればタイ、スラー、それにフレージング スラーの@c
3409 位置と形状を非常に正確に設定することが @emph{できます}。@c
3410 正確な設定を行う方法は @ruser{Modifying ties and slurs} で学習してください。
3411
3412 もう 1 つ例を示します。@c
3413 連桁がタイと衝突しています:
3414
3415 @lilypond[quote,verbatim,ragged-right]
3416 {
3417   \time 4/2
3418   <<
3419     \relative { c'1~ 2. e8 f }
3420     \\
3421     \relative {
3422       e''8 e e e
3423       e e e e
3424       f2 g
3425     }
3426   >>
3427   <<
3428     \relative { c'1~ 2. e8 f }
3429     \\
3430     \relative {
3431       e''8 e e e
3432       e e e e
3433       f2 g
3434     }
3435   >>
3436 }
3437 @end lilypond
3438
3439 @noindent
3440 これは、譜の中央線から 1.81 譜スペース上の位置にある連桁の両端を、例えば、1
3441 に手動で上げることによって解決することができます:
3442
3443 @cindex Beam, example of overriding (Beam をオーバライドする例)
3444 @cindex positions property, example (positions プロパティの例)
3445
3446 @lilypond[quote,verbatim,ragged-right]
3447 {
3448   \time 4/2
3449   <<
3450     \relative { c'1~ 2. e8 f }
3451     \\
3452     \relative {
3453       \override Beam.positions = #'(-1 . -1)
3454       e''8 e e e
3455       e e e e
3456       f2 g
3457     }
3458   >>
3459   <<
3460     \relative { c'1~ 2. e8 f }
3461     \\
3462     \relative {
3463       e''8 e e e
3464       e e e e
3465       f2 g
3466       \revert Beam.positions
3467     }
3468   >>
3469 }
3470 @end lilypond
3471
3472 @noindent
3473 オーバライドの効果は継続して第 2 小節のボイス 2 の 8 分音符にも@c
3474 適用されていますが、@c
3475 ボイス 1 の連桁には、その後の第 2 小節においても@c
3476 まったく適用されていないということに注意してください。@c
3477 例に示したように、オーバライドがもう適用されるべきでないところでは@c
3478 オーバライドをリバートするべきです。
3479
3480 @node force-hshift プロパティ
3481 @unnumberedsubsubsec @code{force-hshift} プロパティ
3482 @translationof The force-hshift property
3483
3484 今や、@ref{私はボイスを聴いている} の最後で挙げた Chopin の例に@c
3485 どのように修正を加えるべきかを知っています。@c
3486 この例は以下のような状態でした:
3487
3488 @lilypond[quote,verbatim,fragment,ragged-right]
3489 \new Staff \relative {
3490   \key aes \major
3491   <<
3492     { c''2 aes4. bes8 }
3493     \\
3494     { <ees, c>2 des }
3495     \\
3496     \\
3497     { aes'2 f4 fes }
3498   >> |
3499   <c ees aes c>1 |
3500 }
3501 @end lilypond
3502
3503 @noindent
3504 最初の和音の内声の音 (つまり、4 番目のボイスにある A-フラット) を上の音符の@c
3505 音符列からずらす必要はありません。そのために @code{\shiftOff} を用います。@c
3506
3507 2 番目の和音では、F を A-フラットに揃えて、符幹の衝突を避けるために@c
3508 最下段の音符を少し右に移動させるべきでしょう。@c
3509 そうするには、D-フラットの @code{NoteColumn} の @code{force-hshift}
3510 を設定して譜スペースの半分だけ右にずらし、F の @code{force-hshift}
3511 をゼロにします。@c
3512 注意すべきことは、すぐ後のタイミングを越えて設定が伝播してしまわないように、
3513 @code{\once} を使っているということです。
3514 この小さい例においては、ボイス 4 の @code{\once} と 2 個目の
3515 @code{\override} (訳注: @code{\shiftOff} のこと) は省略できますが、@c
3516 それは良い方法ではありません。
3517
3518 ここで、最終結果を挙げます:
3519
3520 @cindex NoteColumn, example of overriding (NoteColumn をオーバライドする例)
3521 @cindex force-hshift property, example (force-hshift プロパティの例)
3522
3523 @lilypond[quote,verbatim,fragment,ragged-right]
3524 \new Staff \relative {
3525   \key aes \major
3526   <<
3527     { c''2 aes4. bes8 }
3528     \\
3529     { <ees, c>2 \once \override NoteColumn.force-hshift = 0.5 des }
3530     \\
3531     \\
3532     { \once \shiftOff aes'2 \once \shiftOff f4 fes }
3533   >> |
3534   <c ees aes c>1 |
3535 }
3536 @end lilypond
3537
3538
3539 @node 実際の音楽からの例
3540 @subsection 実際の音楽からの例
3541 @translationof Real music example
3542
3543 調整についてのセクションを、望みの出力を作り出すためにいくつかの調整を@c
3544 必要とするトリッキーな例を処理するときにとられるステップを示すことで@c
3545 締めくくります。@c
3546 この例は、記譜法についての普通ではない問題を解決するための記譜法リファレンスの@c
3547 使い方を示すために慎重に選ばれたものです。@c
3548 この例は一般的な譜刻プロセスを代表するものではありません。@c
3549 ですから、この例の複雑さでやる気を失わないでください!@c
3550 幸いなことに、このように複雑な問題は非常に稀です!
3551
3552 この例は Chopin の Première Ballade, Op. 23 の第 6 - 9 小節からとりました。@c
3553 序盤の Lento から Moderato へと移調する部分です。@c
3554 まず最初に望んでいる出力挙げますが、例があまりにも複雑になり過ぎないように@c
3555 強弱記号、運指法記号、ペダル記号は省きました。
3556
3557 @c The following should appear as music without code
3558 @c This example should not be indexed
3559 @c line-width ensures no break
3560 @c KEEP LY
3561 @lilypond[quote,ragged-right,line-width=6\in]
3562 rhMusic = \relative {
3563   \new Voice {
3564     r2 c''4.\( g8 |
3565     \once \override Tie.staff-position = #3.5
3566     bes1~ |
3567     \bar "||"
3568     \time 6/4
3569     \mergeDifferentlyHeadedOn
3570     \mergeDifferentlyDottedOn
3571     bes2.\tempo "Moderato" r8
3572     <<
3573       { c,8 d fis bes a }
3574       \new Voice {
3575         \voiceTwo
3576         c,8~
3577         % マージされる音符の右にある c2 を再配置します
3578         \once \override NoteColumn.force-hshift = #1.0
3579         % c2 をメインの音符列から外したため、
3580         % マージが機能します
3581         \shiftOnn
3582         c2
3583       }
3584       \new Voice {
3585         \voiceThree
3586         s8
3587         % マージさせるために d2 の符幹を下向きにする必要があります
3588         \stemDown
3589         % d2 の符幹を不可視にします
3590         \tweak Stem.transparent ##t
3591         d2
3592       }
3593       \new Voice {
3594         \voiceFour
3595         s4 fis4.
3596       }
3597     >> |
3598     \mergeDifferentlyHeadedOff
3599     \mergeDifferentlyDottedOff
3600     g2.\)
3601   }
3602 }
3603
3604 lhMusic = \relative {
3605   r2 <c' g ees>2( |
3606   <d g, d>1)\arpeggio |
3607   r2. d,,4 r4 r |
3608   r4
3609 }
3610
3611 \score {
3612   \new PianoStaff <<
3613     \new Staff = "RH"  <<
3614       \key g \minor
3615       \rhMusic
3616     >>
3617     \new Staff = "LH" <<
3618       \key g \minor
3619       \clef "bass"
3620       \lhMusic
3621     >>
3622   >>
3623 }
3624 @end lilypond
3625
3626 まず、第 3 小節の右手パートには 4 つのボイスが必要であることに注目します。@c
3627 それぞれのボイスは、連桁でつながれた 5 つの 8 分音符、タイで結ばれた C、@c
3628 半音符の D (これは 8 分音符の D とマージされています)、@c
3629 付点 4 分音符の F シャープ (これも同じピッチの 8 分音符とマージされています)
3630 です。@c
3631 他の部分はすべて単一のボイスなので、最も容易な方法は
3632 4 つのボイスを必要になったときに一時的に導入する方法です。@c
3633 一時的に多声にする方法を忘れてしまったのならば、@c
3634 @ref{私はボイスを聴いている} と @ref{ボイスを明示的にインスタンス化する}
3635 を参照してください。@
3636 ここでは、多声パッセージに明示的にインスタンス化されたボイスを使うことにします。@c
3637 なぜなら、すべてのボイスが明示的にインスタンス化されている方が、@c
3638 LilyPond はうまく衝突を回避できるからです。
3639
3640 音符を 2 つの変数として入力し、@c
3641 譜構造を Score ブロックの中でセットアップすることから始めて、@c
3642 それで LilyPond がデフォルトでどのような出力を作り出すのか見てみましょう:
3643
3644 @c line-width ensures no break
3645 @c KEEP LY
3646 @lilypond[quote,verbatim,ragged-right,line-width=6\in]
3647 rhMusic = \relative {
3648   \new Voice {
3649     r2 c''4. g8 |
3650     bes1~ |
3651     \time 6/4
3652     bes2. r8
3653     % 4 つのボイスの多声セクションの開始
3654     <<
3655       { c,8 d fis bes a }  % メイン ボイスの続き
3656       \new Voice {
3657         \voiceTwo
3658         c,8~ 2
3659       }
3660       \new Voice {
3661         \voiceThree
3662         s8 d2
3663       }
3664       \new Voice {
3665         \voiceFour
3666         s4 fis4.
3667       }
3668     >> |
3669     g2.  % メイン ボイスの続き
3670   }
3671 }
3672
3673 lhMusic = \relative {
3674   r2 <c' g ees>2 |
3675   <d g, d>1 |
3676   r2. d,,4 r4 r |
3677   r4
3678 }
3679
3680 \score {
3681   \new PianoStaff <<
3682     \new Staff = "RH"  <<
3683       \key g \minor
3684       \rhMusic
3685     >>
3686     \new Staff = "LH" <<
3687       \key g \minor
3688       \clef "bass"
3689       \lhMusic
3690     >>
3691   >>
3692 }
3693 @end lilypond
3694
3695 すべての音符は間違っていません。@c
3696 しかしながら、見た目は満足とは程遠いものです。@c
3697 タイは移調する拍子記号と衝突していて、第 3 小節の連桁の付け方は@c
3698 間違っていて、音符はマージされておらず、いくつかの記譜要素は欠けています。@c
3699 簡単なものから片付けていきましょう。@c
3700 連桁の付け方は手動で連桁を挿入することで修正でき、左手パートのスラーと@c
3701 右手パートのフレージング スラーは簡単に追加できます
3702 -- なぜなら、これらはすべてチュートリアルでカバーされているからです。@c
3703 これらの修正を加えると、以下のようになります:
3704
3705 @c line-width ensures no break
3706 @c KEEP LY
3707 @lilypond[quote,verbatim,ragged-right,line-width=6\in]
3708 rhMusic = \relative {
3709   \new Voice {
3710     r2 c''4.\( g8 |
3711     bes1~ |
3712     \time 6/4
3713     bes2. r8
3714     % 4 つのボイスの多声セクションの開始
3715     <<
3716       { c,8 d fis bes a }  % メイン ボイスの続き
3717       \new Voice {
3718         \voiceTwo
3719         c,8~ 2
3720       }
3721       \new Voice {
3722         \voiceThree
3723         s8 d2
3724       }
3725       \new Voice {
3726         \voiceFour
3727         s4 fis4.
3728       }
3729     >> |
3730     g2.\)  % メイン ボイスの続き
3731   }
3732 }
3733
3734 lhMusic = \relative {
3735   r2 <c' g ees>2( |
3736   <d g, d>1) |
3737   r2. d,,4 r4 r |
3738   r4
3739 }
3740
3741 \score {
3742   \new PianoStaff <<
3743     \new Staff = "RH"  <<
3744       \key g \minor
3745       \rhMusic
3746     >>
3747     \new Staff = "LH" <<
3748       \key g \minor
3749       \clef "bass"
3750       \lhMusic
3751     >>
3752   >>
3753 }
3754 @end lilypond
3755
3756 第 1 小節は正しくなりました。@c
3757 第 2 小節にはアルペジオが含まれていて、2 重の小節線で終わります。@c
3758 この学習マニュアルではこれらのことは言及されてこなかったのに、@c
3759 どうやってやればいいのでしょうか?@c
3760 ここで、記譜法リファレンスに移行する必要があります。@c
3761 索引で @q{arpeggio} と @q{bar line} を探せばすぐに、アルペジオは
3762 @code{\arpeggio} を和音の後に付け加えることによって作り出され、@c
3763 2 重小節線は @code{\bar "||"} コマンドによって作り出されることが@c
3764 わかります。@c
3765 それは簡単にできます。@c
3766 次に、タイと拍子記号の衝突を修正する必要があります。@c
3767 これはタイを上に移動させる方法が最善です。@c
3768 オブジェクトの移動については以前に @ref{オブジェクトを移動させる} でカバーしました。@c
3769 そこでは、譜との相対位置で配置されるオブジェクトは、@c
3770 そのオブジェクトの @code{staff-position} プロパティを@c
3771 オーバライドすることによって、移動させることができると述べられています。@c
3772 このプロパティは譜スペースの半分を単位として、譜の中央線からの距離で@c
3773 指定されます。@c
3774 ですから、以下の以下のオーバライドをタイで結ばれる最初の音符の前に置けば、@c
3775 タイは中央線から 3.5 半譜スペースだけ上の位置に移動させられます:
3776
3777 @code{\once \override Tie.staff-position = #3.5}
3778
3779 これで第 2 小節の修正も完了で、以下のようになります:
3780
3781 @c line-width ensures no break
3782 @c KEEP LY
3783 @lilypond[quote,verbatim,ragged-right,line-width=6\in]
3784 rhMusic = \relative {
3785   \new Voice {
3786     r2 c''4.\( g8 |
3787     \once \override Tie.staff-position = #3.5
3788     bes1~ |
3789     \bar "||"
3790     \time 6/4
3791     bes2. r8
3792     % 4 つのボイスの多声セクションの開始
3793     <<
3794       { c,8 d fis bes a }  % メイン ボイスの続き
3795       \new Voice {
3796         \voiceTwo
3797         c,8~ 2
3798       }
3799       \new Voice {
3800         \voiceThree
3801         s8 d2
3802       }
3803       \new Voice {
3804         \voiceFour
3805         s4 fis4.
3806       }
3807     >> |
3808     g2.\)  % メイン ボイスの続き
3809   }
3810 }
3811
3812 lhMusic = \relative {
3813   r2 <c' g ees>2( |
3814   <d g, d>1)\arpeggio |
3815   r2. d,,4 r4 r |
3816   r4
3817 }
3818
3819 \score {
3820   \new PianoStaff <<
3821     \new Staff = "RH"  <<
3822       \key g \minor
3823       \rhMusic
3824     >>
3825     \new Staff = "LH" <<
3826       \key g \minor
3827       \clef "bass"
3828       \lhMusic
3829     >>
3830   >>
3831 }
3832 @end lilypond
3833
3834 第 3 小節 -- Moderato セクションの開始部分 -- に取り掛かります。@c
3835 チュートリアルで @code{\tempo} コマンドを使ってテンポ表示を@c
3836 付け加える方法を示しましたので、@q{Moderato} を付け加えることは@c
3837 容易です。@c
3838 しかし、異なるボイスの中にある音符をマージするにはどうするのでしょうか?@c
3839 ここで、助けを求めて記譜法リファレンスに移行する必要があります。@c
3840 記譜法リファレンスで @qq{merge} を探せばすぐに、@c
3841 @ruser{Collision resolution} で符頭や付点の付き方が異なる音符を@c
3842 マージするためのコマンドにたどり着きます。@c
3843 今回の例では、多声部セクションで両方のタイプの音符をマージする
3844 (異なる符頭を持つ音符のマージと、付点の付き方が異なる音符のマージ)
3845 必要があるので、記譜法リファレンスで見つけた情報を使って、以下のコマンド:
3846
3847 @example
3848 \mergeDifferentlyHeadedOn
3849 \mergeDifferentlyDottedOn
3850 @end example
3851
3852 @noindent
3853 を多声部セクションの開始点に置き、以下のコマンド:
3854
3855 @example
3856 \mergeDifferentlyHeadedOff
3857 \mergeDifferentlyDottedOff
3858 @end example
3859
3860 @noindent
3861 をセクションの終了点に置きます。これで、例は以下のようになります:
3862
3863 @c line-width ensures no break
3864 @c KEEP LY
3865 @lilypond[quote,ragged-right,line-width=6\in]
3866 rhMusic = \relative {
3867   \new Voice {
3868     r2 c''4.\( g8 |
3869     \once \override Tie.staff-position = #3.5
3870     bes1~ |
3871     \bar "||"
3872     \time 6/4
3873     bes2.\tempo "Moderato" r8
3874     \mergeDifferentlyHeadedOn
3875     \mergeDifferentlyDottedOn
3876     % 4 つのボイスの多声セクションの開始
3877     <<
3878       { c,8 d fis bes a }  % メイン ボイスの続き
3879       \new Voice {
3880         \voiceTwo
3881         c,8~ 2
3882       }
3883       \new Voice {
3884         \voiceThree
3885         s8 d2
3886       }
3887       \new Voice {
3888         \voiceFour
3889         s4 fis4.
3890       }
3891     >> |
3892     \mergeDifferentlyHeadedOff
3893     \mergeDifferentlyDottedOff
3894     g2.\)  % メイン ボイスの続き
3895   }
3896 }
3897
3898 lhMusic = \relative {
3899   r2 <c' g ees>2( |
3900   <d g, d>1)\arpeggio |
3901   r2. d,,4 r4 r |
3902   r4
3903 }
3904
3905 \score {
3906   \new PianoStaff <<
3907     \new Staff = "RH"  <<
3908       \key g \minor
3909       \rhMusic
3910     >>
3911     \new Staff = "LH" <<
3912       \key g \minor
3913       \clef "bass"
3914       \lhMusic
3915     >>
3916   >>
3917 }
3918 @end lilypond
3919
3920 オーバライドは 2 つの F シャープの音符をマージしましたが、@c
3921 2 つの D をマージしませんでした。@c
3922 なぜマージしなかったのでしょうか?@c
3923 その答えは記譜法リファレンスの同じセクションにあります
3924 -- マージされる音符は反対向きの符幹を持っていなくてはならず、@c
3925 同じ音符列に 3 つ目の音符がある場合は 2 つの音符をマージさせることは@c
3926 できません。@c
3927 今回の例では、2 つの D は両方とも上向きの符幹を持っていて、@c
3928 3 つ目の音符 -- C -- が存在します。@c
3929 我々は @code{\stemDown} を用いて符幹の向きを変更する方法を知っていて、@c
3930 記譜法リファレンスも C を移動させる方法について述べています --
3931 @code{\shift} コマンドの 1 つを用いてシフトを行います。@c
3932 しかし、どのシフトを行えばよいのでしょうか?@c
3933 C はシフト off のボイス 2 の中にあり、2 つの D はボイス 1 とボイス 3 --
3934 それぞれ、シフト off とシフト on -- の中にあります。@c
3935 ですから、C が 2 つの D と衝突するのを避けるために、@c
3936 @code{\shiftOnn} を用いて C を更にシフトさせる必要があります。@c
3937 これらの変更を加えると、以下のようになります:
3938
3939 @cindex Tie, example of overriding (Tie をオーバライドする例)
3940 @cindex staff-position property, example (staff-position プロパティの例)
3941
3942 @c line-width ensures no break
3943 @c KEEP LY
3944 @lilypond[quote,verbatim,ragged-right,line-width=6\in]
3945 rhMusic = \relative {
3946   \new Voice {
3947     r2 c''4.\( g8 |
3948     \once \override Tie.staff-position = #3.5
3949     bes1~ |
3950     \bar "||"
3951     \time 6/4
3952     bes2.\tempo "Moderato" r8
3953     \mergeDifferentlyHeadedOn
3954     \mergeDifferentlyDottedOn
3955     % 4 つのボイスの多声セクションの開始
3956     <<
3957       { c,8 d fis bes a }  % メイン ボイスの続き
3958       \new Voice {
3959         \voiceTwo
3960         % c2 をメインの音符列から外したため、
3961         % マージが機能します
3962         c,8~ \shiftOnn c2
3963       }
3964       \new Voice {
3965         \voiceThree
3966         % マージさせるために d2 の符幹を下向きにする必要があります
3967         s8 \stemDown d2
3968       }
3969       \new Voice {
3970         \voiceFour
3971         s4 fis4.
3972       }
3973     >> |
3974     \mergeDifferentlyHeadedOff
3975     \mergeDifferentlyDottedOff
3976     g2.\)  % メイン ボイスの続き
3977   }
3978 }
3979
3980 lhMusic = \relative {
3981   r2 <c' g ees>2( |
3982   <d g, d>1)\arpeggio |
3983   r2. d,,4 r4 r |
3984   r4
3985 }
3986
3987 \score {
3988   \new PianoStaff <<
3989     \new Staff = "RH"  <<
3990       \key g \minor
3991       \rhMusic
3992     >>
3993     \new Staff = "LH" <<
3994       \key g \minor
3995       \clef "bass"
3996       \lhMusic
3997     >>
3998   >>
3999 }
4000 @end lilypond
4001
4002 もうちょっとです。@c
4003 残っている問題は 2 つだけです:
4004 マージされた D の下向きの符幹はあるべきではなく、C は D の右側に配置した方が@c
4005 良いということです。@c
4006 以前に行った調整からこれらを行う方法を両方とも知っています:
4007 符幹を透明にして、@code{force-hshift} プロパティを用いて C を移動させます。@c
4008 ここで、最終結果を示します:
4009
4010 @cindex NoteColumn, example of overriding (NoteColumn をオーバライドする例)
4011 @cindex force-hshift property, example (force-hshift プロパティの例)
4012 @cindex Stem, example of overriding (Stem をオーバライドする例))
4013 @cindex transparent property, example (transparent プロパティの例)
4014
4015 @c line-width ensures no break
4016 @c KEEP LY
4017 @lilypond[quote,verbatim,ragged-right,line-width=6\in]
4018 rhMusic = \relative {
4019   \new Voice {
4020     r2 c''4.\( g8 |
4021     \once \override Tie.staff-position = #3.5
4022     bes1~ |
4023     \bar "||"
4024     \time 6/4
4025     bes2.\tempo "Moderato" r8
4026     \mergeDifferentlyHeadedOn
4027     \mergeDifferentlyDottedOn
4028     % 4 つのボイスの多声セクションの開始
4029     <<
4030       { c,8 d fis bes a }  % メイン ボイスの続き
4031       \new Voice {
4032         \voiceTwo
4033         c,8~
4034         % マージされる音符の右にある c2 を再配置します
4035         \once \override NoteColumn.force-hshift = #1.0
4036         % c2 をメインの音符列から外したため、マージが機能します
4037         \shiftOnn
4038         c2
4039       }
4040       \new Voice {
4041         \voiceThree
4042         s8
4043         % マージさせるために d2 の符幹を下向きにする必要があります
4044         \stemDown
4045         % d2 の符幹を不可視にします
4046         \tweak Stem.transparent ##t
4047         d2
4048       }
4049       \new Voice {
4050         \voiceFour
4051         s4 fis4.
4052       }
4053     >> |
4054     \mergeDifferentlyHeadedOff
4055     \mergeDifferentlyDottedOff
4056     g2.\)  % メイン ボイスの続き
4057   }
4058 }
4059
4060 lhMusic = \relative {
4061   r2 <c' g ees>2( |
4062   <d g, d>1)\arpeggio |
4063   r2. d,,4 r4 r |
4064   r4
4065 }
4066
4067 \score {
4068   \new PianoStaff <<
4069     \new Staff = "RH"  <<
4070       \key g \minor
4071       \rhMusic
4072     >>
4073     \new Staff = "LH" <<
4074       \key g \minor
4075       \clef "bass"
4076       \lhMusic
4077     >>
4078   >>
4079 }
4080 @end lilypond
4081
4082
4083 @node 更なる調整
4084 @section 更なる調整
4085 @translationof Further tweaking
4086
4087 @menu
4088 * 調整のその他の使用方法::
4089 * レイアウトの調整のために変数を使用する::
4090 * スタイル シート::
4091 * その他の情報源::
4092 * Scheme を用いた高度な調整::
4093 @end menu
4094
4095 @node 調整のその他の使用方法
4096 @subsection 調整のその他の使用方法
4097 @translationof Other uses for tweaks
4098
4099 @menu
4100 * 異なるボイスの中にある音符をタイで結ぶ::
4101 * MIDI でフェルマータをシミュレートする::
4102 @end menu
4103
4104 @cindex removing objects (オブジェクトを削除する)
4105 @cindex objects, removing (オブジェクトを削除する)
4106
4107
4108 @node 異なるボイスの中にある音符をタイで結ぶ
4109 @unnumberedsubsubsec 異なるボイスの中にある音符をタイで結ぶ
4110 @translationof Tying notes across voices
4111
4112 @cindex tying notes across voices (異なるボイスの中にある音符をタイで結ぶ)
4113
4114 以下の例は異なるボイスの中にある音符をタイで結ぶ方法を示しています。@c
4115 通常、タイで結べるのは同じボイスの中にある音符だけです。@c
4116 2 つのボイスを使い、そのうちの 1 つにタイで結んだ音符を置きます:
4117
4118 @lilypond[quote]
4119 << { b'8~ 8\noBeam } \\ { b'8[ g'] } >>
4120 @end lilypond
4121
4122 @noindent
4123 そして、そのボイスの最初の上向き符幹と符尾を消します。@c
4124 これで、タイはボイスをまたがっているように見えます:
4125
4126 @funindex \omit
4127 @cindex Stem, example of overriding (Stem をオーバライドする例)
4128 @cindex Flag, example of overriding (Flag をオーバライドする例)
4129 @cindex @code{\omit}, example (@code{\omit} の例)
4130 @cindex example of @code{\omit} (@code{\omit} の例)
4131
4132 @lilypond[quote,verbatim]
4133 <<
4134   {
4135     \once \omit Stem
4136     \once \omit Flag
4137     b'8~ 8\noBeam
4138   }
4139 \\
4140   { b'8[ g'] }
4141 >>
4142 @end lilypond
4143
4144 @seealso
4145 Learning Manual:
4146 @ref{once 接頭辞,,@code{@bs{}once} 接頭辞},
4147 @ref{stencil プロパティ}.
4148
4149
4150 @node MIDI でフェルマータをシミュレートする
4151 @unnumberedsubsubsec MIDI でフェルマータをシミュレートする
4152 @translationof Simulating a fermata in MIDI
4153
4154 @cindex stencil property, use of (stencil プロパティの使用方法)
4155 @cindex fermata, implementing in MIDI (MIDI でフェルマータ を実装する)
4156
4157 譜外部オブジェクトを出力から削除しようとする場合、そのオブジェクトの
4158 @code{transparent} プロパティではなく @code{stencil} プロパティを@c
4159 オーバライドする方が通常は望ましいです。@c
4160 あるオブジェクトの @code{stencil} プロパティを
4161 @code{#f} にセットすると、@c
4162 そのオブジェクトは出力から完全に削除されます。@c
4163 このことは、削除されたオブジェクトがそのオブジェクトとの相対位置で@c
4164 配置される他のオブジェクトの配置にまったく影響を及ぼさないということを@c
4165 意味します。
4166
4167 例えば、MIDI 出力でフェルマータをシミュレートするためにメトロノーム設定を@c
4168 変更したいとします。@c
4169 その場合、メトロノーム記号を出力に表示させたくありません。@c
4170 そして、それが 2 つのシステム (小節とその中にある表記) 間のスペースと、@c
4171 譜上にある隣接する注釈の位置に影響を与えることを望みません。@c
4172 そのため、そのメトロノーム記号の @code{stencil} プロパティを
4173 @code{#f} にセットする方法が最良です。@c
4174 ここで、2 つの手法の結果を示します:
4175
4176 @cindex MetronomeMark, example of overriding (MetronomeMark をオーバライドする例)
4177 @cindex transparent property, example (transparent プロパティの例)
4178
4179 @lilypond[quote,verbatim,ragged-right]
4180 \score {
4181   \relative {
4182     % Visible tempo marking
4183     \tempo 4=120
4184     a'4 a a
4185     \once \hide Score.MetronomeMark
4186     % Invisible tempo marking to lengthen fermata in MIDI
4187     \tempo 4=80
4188     a4\fermata |
4189     % New tempo for next section
4190     \tempo 4=100
4191     a4 a a a |
4192   }
4193   \layout { }
4194   \midi { }
4195 }
4196 @end lilypond
4197
4198 @cindex MetronomeMark, example of overriding (MetronomeMark をオーバライドする例)
4199 @cindex stencil property, example (stencil プロパティの例)
4200
4201 @lilypond[quote,verbatim,ragged-right]
4202 \score {
4203   \relative {
4204     % Visible tempo marking
4205     \tempo 4=120
4206     a'4 a a
4207     \once \omit Score.MetronomeMark
4208     % Invisible tempo marking to lengthen fermata in MIDI
4209     \tempo 4=80
4210     a4\fermata |
4211     % New tempo for next section
4212     \tempo 4=100
4213     a4 a a a |
4214   }
4215   \layout { }
4216   \midi { }
4217 }
4218 @end lilypond
4219
4220 @noindent
4221 両方の手段とも、フェルマータ部分の演奏時間を伸ばすメトロノーム記号を@c
4222 出力から削除していて、両方とも MIDI の演奏に必要な効果を与えています。@c
4223 しかし、1 番目の例の透明なメトロノーム記号がそれに続く拍子指示を@c
4224 上に押し上げているのに対して、2 番目のメトロノーム記号 (ステンシルが@c
4225 削除されたもの) は押し上げていません。
4226
4227 @seealso
4228 音楽用語集:
4229 @rglos{system}
4230
4231
4232 @node レイアウトの調整のために変数を使用する
4233 @subsection レイアウトの調整のために変数を使用する
4234 @translationof Using variables for layout adjustments
4235
4236 @cindex variables, using for overrides (オーバライドのために変数を使用する)
4237 @cindex overrides, using variables for (オーバライドのために変数を使用する)
4238 @cindex adjustments, using variables for (調整のために変数を使用する)
4239 @cindex layout adjustments, using variables for (レイアウトの調整のために変数を使用する)
4240
4241 オーバライド コマンドはしばしば長く、入力するのが大変なものになります。@c
4242 そして、それらは完全に正しく記述されなければなりません。@c
4243 同じオーバライドが何度も使用される場合、それらを保持する変数を定義すると@c
4244 非常に役に立ちます。
4245
4246 歌詞の中のある特定の単語をボールド イタリック体で譜刻することによって、@c
4247 それらを強調したいと仮定します。@c
4248 歌詞の中では、@code{\italic} と @code{\bold} は (書式を) 変更したい@c
4249 単語や文と一緒に @code{\markup} ブロックの中に入れた場合にのみ@c
4250 機能しますが、それを毎回入力するのは大変です。@c
4251 埋め込む必要のある単語自体が、2 つのコマンドを簡単な変数を用いて使うことを@c
4252 妨げます。@c
4253 代替手段として、@code{\override} コマンドと @code{\revert} コマンドを@c
4254 使うことはできないでしょうか?
4255
4256 @example
4257 \override Lyrics.LyricText.font-shape = #'italic
4258 \override Lyrics.LyricText.font-series = #'bold
4259
4260 \revert Lyrics.LyricText.font-shape
4261 \revert Lyrics.LyricText.font-series
4262 @end example
4263
4264 これらも、強調する必要のある単語がたくさんある場合、入力するのが@c
4265 非常に大変です。@c
4266 しかしながら、これらは 2 つの変数として定義することが@emph{でき}、@c
4267 それらの変数で単語を囲むことによって使ってその単語を強調することが@c
4268 @emph{できます}。@c
4269 これらのオーバライドに変数を用いることのもう 1 つの利点は、@c
4270 ドットの両側にスペースを置く必要が無いことです。@c
4271 なぜなら、これらのオーバライドは @code{\lyricmode} の中で@c
4272 直接解釈されるわけではないからです。@c
4273 ここで変数を用いる例を挙げますが、実際には早く打ち込めるように@c
4274 もっと短い変数名を使用します:
4275
4276 @cindex LyricText, example of overriding (LyricText をオーバライドする例)
4277 @cindex font-shape property, example (font-shape プロパティの例)
4278 @cindex font-series property, example (font-series プロパティの例)
4279
4280 @lilypond[quote,verbatim]
4281 emphasize = {
4282   \override Lyrics.LyricText.font-shape = #'italic
4283   \override Lyrics.LyricText.font-series = #'bold
4284 }
4285
4286 normal = {
4287   \revert Lyrics.LyricText.font-shape
4288   \revert Lyrics.LyricText.font-series
4289 }
4290
4291 global = { \key c \major \time 4/4 \partial 4 }
4292
4293 SopranoMusic = \relative { c'4 | e4. e8 g4 g    | a4   a   g  }
4294 AltoMusic    = \relative { c'4 | c4. c8 e4 e    | f4   f   e  }
4295 TenorMusic   = \relative  { e4 | g4. g8 c4.  b8 | a8 b c d e4 }
4296 BassMusic    = \relative  { c4 | c4. c8 c4 c    | f8 g a b c4 }
4297
4298 VerseOne = \lyrics {
4299   E -- | ter -- nal \emphasize Fa -- ther, | \normal strong to save,
4300 }
4301
4302 VerseTwo = \lyricmode {
4303   O | \once \emphasize Christ, whose voice the | wa -- ters heard,
4304 }
4305
4306 VerseThree = \lyricmode {
4307   O | \emphasize Ho -- ly Spi -- rit, | \normal who didst brood
4308 }
4309
4310 VerseFour = \lyricmode {
4311   O | \emphasize Tri -- ni -- ty \normal of | love and pow'r
4312 }
4313
4314 \score {
4315   \new ChoirStaff <<
4316     \new Staff <<
4317       \clef "treble"
4318       \new Voice = "Soprano"  { \voiceOne \global \SopranoMusic }
4319       \new Voice = "Alto" { \voiceTwo \AltoMusic }
4320       \new Lyrics \lyricsto "Soprano" { \VerseOne }
4321       \new Lyrics \lyricsto "Soprano" { \VerseTwo }
4322       \new Lyrics \lyricsto "Soprano" { \VerseThree }
4323       \new Lyrics \lyricsto "Soprano" { \VerseFour }
4324     >>
4325     \new Staff <<
4326       \clef "bass"
4327       \new Voice = "Tenor" { \voiceOne \TenorMusic }
4328       \new Voice = "Bass"  { \voiceTwo \BassMusic }
4329     >>
4330   >>
4331 }
4332 @end lilypond
4333
4334
4335 @node スタイル シート
4336 @subsection スタイル シート
4337 @translationof Style sheets
4338
4339 LilyPond が作り出す出力にはさまざまな変更を加えることができます
4340 (詳細は @ref{出力を調整する} を参照してください)。@c
4341 しかしながら、調整を加えたい入力ファイルがたくさんあるとしたらどうでしょう?@c
4342 また、単に調整を実際の音楽表記から分離したいとしたらどうでしょう?@c
4343 これはとても簡単なことです。
4344
4345 以下の例を見てみましょう。@c
4346 @code{#()} を持つ部分を理解できなくても心配しないでください。@c
4347 @ref{Scheme を用いた高度な調整} で説明されています。
4348
4349 @lilypond[quote,verbatim,ragged-right]
4350 mpdolce =
4351   \tweak self-alignment-X #-0.6
4352   #(make-dynamic-script
4353     #{ \markup { \dynamic mp \normal-text \italic \bold dolce } #})
4354
4355 inst =
4356 #(define-music-function
4357      (string)
4358      (string?)
4359    #{ <>^\markup \bold \box #string #})
4360
4361 \relative {
4362   \tempo 4=50
4363   a'4.\mpdolce d8 cis4--\glissando a |
4364   b4 bes a2 |
4365   \inst "Clarinet"
4366   cis4.\< d8 e4 fis |
4367   g8(\! fis)-. e( d)-. cis2 |
4368 }
4369 @end lilypond
4370
4371 @code{mpdolce} と @code{tempoMark} の定義に手を加えてみることにします。@c
4372 それらは望みの出力を作り出していますが、それらを別の楽曲で使いたいとします。@c
4373 単純にそれらを各ファイルの先頭部分にカット&ペーストすることもできますが、@c
4374 わずらわしいです。@c
4375 その方法では定義は依然として入力ファイルの中にあり、@c
4376 私は個人的にすべての @code{#()} は何か醜いと感じます。@c
4377 それらを他のファイルの中に隠すことにしましょう:
4378
4379 @example
4380 %%% これを "definitions.ily" というファイル名で保存してください
4381 mpdolce =
4382   \tweak self-alignment-X #-0.6
4383   #(make-dynamic-script
4384     #@{ \markup @{ \dynamic mp \normal-text \italic \bold dolce @} #@})
4385
4386 inst =
4387 #(define-music-function
4388      (string)
4389      (string?)
4390    #@{ <>^\markup \bold \box #string #@})
4391 @end example
4392
4393 音楽ファイルの先頭付近で @code{\include} コマンドを使ってこのファイルを@c
4394 参照します。@c
4395 (インクルードされるファイルをコンパイルされるメイン ファイルと区別するため、@c
4396 拡張子 @file{.ily} を使っています。)
4397 今度は音楽ファイルを変更しましょう
4398 (このファイルを @file{"music.ly"} として保存してください)。
4399
4400 @c  We have to do this awkward example/lilypond-non-verbatim
4401 @c  because we can't do the \include stuff in the manual.
4402
4403 @example
4404 \include "definitions.ily"
4405
4406 \relative @{
4407   \tempo 4=50
4408   a'4.\mpdolce d8 cis4--\glissando a |
4409   b4 bes a2 |
4410   \inst "Clarinet"
4411   cis4.\< d8 e4 fis |
4412   g8(\! fis)-. e( d)-. cis2 |
4413 @}
4414 @end example
4415
4416 @lilypond[quote,ragged-right]
4417 mpdolce =
4418   \tweak self-alignment-X #-0.6
4419   #(make-dynamic-script
4420     #{ \markup { \dynamic mp \normal-text \italic \bold dolce } #})
4421
4422 inst =
4423 #(define-music-function
4424      (string)
4425      (string?)
4426    #{ <>^\markup \bold \box #string #})
4427
4428 \relative {
4429   \tempo 4=50
4430   a'4.\mpdolce d8 cis4--\glissando a |
4431   b4 bes a2 |
4432   \inst "Clarinet"
4433   cis4.\< d8 e4 fis |
4434   g8(\! fis)-. e( d)-. cis2 |
4435 }
4436 @end lilypond
4437
4438 これで前よりも良くなりましたが、いくつか変更を加えることにします。@c
4439 グリッサンド (訳者: 第 1 小節の C シャープと A の間) は見え難いので、@c
4440 もっと太く、符頭に近づけます。@c
4441 メトロノーム記号を、最初の音符の上ではなく、@c
4442 音部記号の上に持ってきます。@c
4443 最後に、私の作曲の先生は @q{C} 拍子記号を嫌っているので、@c
4444 @q{4/4} に変更した方が良さそうです。
4445
4446 @file{music.ly} には変更を加えないでください。@c
4447 @file{definitions.ily} を以下のように書き換えます:
4448
4449 @example
4450 %%%  definitions.ily
4451 mpdolce =
4452   \tweak self-alignment-X #-0.6
4453   #(make-dynamic-script
4454     #@{ \markup @{ \dynamic mp \normal-text \italic \bold dolce @} #@})
4455
4456 inst =
4457 #(define-music-function
4458      (string)
4459      (string?)
4460    #@{ <>^\markup \bold \box #string #@})
4461
4462 \layout@{
4463   \context @{
4464     \Score
4465     \override MetronomeMark.extra-offset = #'(-5 . 0)
4466     \override MetronomeMark.padding = #'3
4467   @}
4468   \context @{
4469     \Staff
4470     \override TimeSignature.style = #'numbered
4471   @}
4472   \context @{
4473     \Voice
4474     \override Glissando.thickness = #3
4475     \override Glissando.gap = #0.1
4476   @}
4477 @}
4478 @end example
4479
4480 @lilypond[quote,ragged-right]
4481 mpdolce =
4482   \tweak self-alignment-X #-0.6
4483   #(make-dynamic-script
4484     #{ \markup { \dynamic mp \normal-text \italic \bold dolce } #})
4485
4486 inst =
4487 #(define-music-function
4488      (string)
4489      (string?)
4490    #{ <>^\markup \bold \box #string #})
4491
4492 \layout{
4493   \context {
4494     \Score
4495     \override MetronomeMark.extra-offset = #'(-5 . 0)
4496     \override MetronomeMark.padding = #'3
4497   }
4498   \context {
4499     \Staff
4500     \override TimeSignature.style = #'numbered
4501   }
4502   \context {
4503     \Voice
4504     \override Glissando.thickness = #3
4505     \override Glissando.gap = #0.1
4506   }
4507 }
4508
4509 \relative {
4510   \tempo 4=50
4511   a'4.\mpdolce d8 cis4--\glissando a |
4512   b4 bes a2 |
4513   \inst "Clarinet"
4514   cis4.\< d8 e4 fis |
4515   g8(\! fis)-. e( d)-. cis2 |
4516 }
4517 @end lilypond
4518
4519 もっと良くなりました!@c
4520 今度はこれを公表したいとします。@c
4521 私の作曲の先生は @q{C} 拍子記号を嫌っていますが、@c
4522 私はそちらを好みます。@c
4523 現在の @code{definitions.ily} を @code{web-publish.ily} にコピーして、@c
4524 それにを変更を加えてみましょう。@c
4525 この音楽はスクリーンに表示される PDF を作り出すことを意図したものなので、@c
4526 出力のフォントを全体に大きくすることにします。
4527
4528 @example
4529 %%%  web-publish.ily
4530 mpdolce =
4531   \tweak self-alignment-X #-0.6
4532   #(make-dynamic-script
4533     #@{ \markup @{ \dynamic mp \normal-text \italic \bold dolce @} #@})
4534
4535 inst =
4536 #(define-music-function
4537      (string)
4538      (string?)
4539    #@{ <>^\markup \bold \box #string #@})
4540
4541 #(set-global-staff-size 23)
4542
4543 \layout@{
4544   \context @{
4545     \Score
4546     \override MetronomeMark.extra-offset = #'(-5 . 0)
4547     \override MetronomeMark.padding = #'3
4548   @}
4549   \context @{
4550     \Staff
4551   @}
4552   \context @{
4553     \Voice
4554     \override Glissando.thickness = #3
4555     \override Glissando.gap = #0.1
4556   @}
4557 @}
4558 @end example
4559
4560 @lilypond[quote,ragged-right]
4561 mpdolce =
4562   \tweak self-alignment-X #-0.6
4563   #(make-dynamic-script
4564     #{ \markup { \dynamic mp \normal-text \italic \bold dolce } #})
4565
4566 inst =
4567 #(define-music-function
4568      (string)
4569      (string?)
4570    #{ <>^\markup \bold \box #string #})
4571
4572 #(set-global-staff-size 23)
4573
4574 \layout{
4575   \context { \Score
4576     \override MetronomeMark.extra-offset = #'(-5 . 0)
4577     \override MetronomeMark.padding = #'3
4578   }
4579   \context { \Voice
4580     \override Glissando.thickness = #3
4581     \override Glissando.gap = #0.1
4582   }
4583 }
4584
4585 \relative {
4586   \tempo 4=50
4587   a'4.\mpdolce d8 cis4--\glissando a |
4588   b4 bes a2 |
4589   \inst "Clarinet"
4590   cis4.\< d8 e4 fis |
4591   g8(\! fis)-. e( d)-. cis2 |
4592 }
4593 @end lilypond
4594
4595 音楽ファイルの中では、単に @code{\include "definitions.ily"} を
4596 @code{\include "web-publish.ily"} に置き換えるだけです。@c
4597 もちろん、これをもっと便利なようにすることができます。@c
4598 @file{definitions.ily} ファイルには
4599 @code{mpdolce} と @code{tempoMark} の定義だけを持たせて、@c
4600 @file{web-publish.ily} ファイルには@c
4601 上で記述した @code{\layout} セクションだけを持たせ、@c
4602 @file{university.ily} ファイルには@c
4603 私の先生の好む出力を作り出すための調整だけを持たせます。@c
4604 @file{music.ly} の先頭部分は以下のようになります:
4605
4606 @example
4607 \include "definitions.ily"
4608
4609 %%%  以下の 2 行のどちらか片方のコメントを外してください!
4610 \include "web-publish.ily"
4611 %\include "university.ily"
4612 @end example
4613
4614 このアプローチは、@c
4615 あなたがパーツ一式を作っているだけだとしても役に立つ可能性があります。@c
4616 私は自分のプロジェクトのために@c
4617 半ダースの @q{スタイル シート} ファイルを使います。@c
4618 私はそれぞれの音楽ファイルを
4619 @code{\include "../global.ily"} で始め、@c
4620 @file{gloval.ily} には以下の内容を記述しています:
4621
4622 @example
4623 %%%   global.ily
4624 \version @w{"@version{}"}
4625
4626 #(ly:set-option 'point-and-click #f)
4627
4628 \include "../init/init-defs.ly"
4629 \include "../init/init-layout.ly"
4630 \include "../init/init-headers.ly"
4631 \include "../init/init-paper.ly"
4632 @end example
4633
4634
4635 @node その他の情報源
4636 @subsection その他の情報源
4637 @translationof Other sources of information
4638
4639 内部リファレンスは LilyPond についての多くの情報を持っていますが、@c
4640 LilyPond の内部ファイルを調べることによって@c
4641 さらに多くの情報を収集することができます。@c
4642 内部ファイルを探究するには、@c
4643 まずあなたの使っているシステム特有のディレクトリを見つけ出す必要があります。@c
4644 このディレクトリの場所は、(a) あなたが lilypond.org からコンパイル済みの@c
4645 バイナリをダウンロードすることによって LilyPond を手に入れたのか、@c
4646 それとも、パッケージ マネージャから LilyPond をインストールした
4647 (つまり、GNU/Linux と一緒に配布されたか、fink や cygwin でインストールされた)
4648 のか、(b) LilyPond はどの OS 上で使用されているのか、に依存します:
4649
4650 @subsubsubheading lilypond.org からダウンロードした
4651
4652 @itemize @bullet
4653 @item GNU/Linux
4654
4655 @example
4656 @file{@var{INSTALLDIR}/lilypond/usr/share/lilypond/current/}
4657 @end example
4658 に進んでください
4659
4660 @item MacOS X
4661
4662 @example
4663 @file{@var{INSTALLDIR}/LilyPond.app/Contents/Resources/share/lilypond/current/}
4664 @end example
4665 に進んでください。@c
4666 ターミナルからこのディレクトリへ @code{cd} で移動するか、@c
4667 LilyPond アプリケーション上でコントロール クリックして
4668 @q{Show Package Contents} を選択します。
4669
4670 @item Windows
4671
4672 @example
4673 @file{@var{INSTALLDIR}/LilyPond/usr/share/lilypond/current/}
4674 @end example
4675 に進んでください。Windows Explorer を使います。
4676
4677 @end itemize
4678
4679 @subsubsubheading パッケージ マネージャからインストールした、あるいは、ソースからコンパイルした
4680
4681 @file{@var{PREFIX}/share/lilypond/@var{X.Y.Z}/} に進んでください。@c
4682 @var{PREFIX} はパッケージ マネージャか @code{configure} スクリプトによって@c
4683 セットされるものであり、@var{X.Y.Z} は LilyPond のバージョン番号です。
4684
4685 @smallspace
4686
4687 このディレクトリの中に 2 つの興味深いサブディレクトリがあります:
4688
4689 @itemize
4690 @item @file{ly/} - LilyPond フォーマットに関するファイルを保持しています
4691 @item @file{scm/} -Scheme フォーマットに関するファイルを保持しています
4692 @end itemize
4693
4694 @file{ly/} の中にあるファイルから見ていきましょう。@c
4695 @file{ly/property-init.ly} をテキスト エディタで開いてください。@c
4696 エディタはあなたが普段 @code{.ly} ファイルを編集するために使っているもので@c
4697 結構です。@c
4698 このファイルは標準の LilyPond 定義済みコマンド
4699 -- @code{\tieUp} や @code{\slurDotted} など
4700 -- のすべての定義を保持しています。@c
4701 1 つまたは複数の @code{\override} コマンドを保持している@c
4702 変数の定義以外のものはないということがわかるでしょう。@c
4703 例えば、@code{\tieDotted} は以下のように定義されています:
4704
4705 @example
4706 tieDotted = @{
4707   \override Tie.dash-period = #0.75
4708   \override Tie.dash-fraction = #0.1
4709 @}
4710 @end example
4711
4712 あなたがこれらのデフォルト値を好まない場合、これらの定義済みコマンドを@c
4713 容易に再定義することができます --
4714 他の変数と同様に、入力ファイルの先頭で定義します。
4715
4716 以下のファイルは @file{ly/} で見つかる有用なファイルです:
4717
4718 @multitable @columnfractions .4 .6
4719 @headitem ファイル名
4720   @tab 内容
4721 @item @file{ly/engraver-init.ly}
4722   @tab エングラーバ コンテキストの定義
4723 @item @file{ly/paper-defaults-init.ly}
4724   @tab 紙面関係のデフォルトの仕様
4725 @item @file{ly/performer-init.ly}
4726   @tab パフォーマ コンテキストの定義
4727 @item @file{ly/property-init.ly}
4728   @tab すべての共通定義済みコマンドの定義
4729 @item @file{ly/spanner-init.ly}
4730   @tab スパナ関係の定義済みコマンドの定義
4731 @end multitable
4732
4733 他の設定 (マークアップ コマンドの定義など) は
4734 @code{.scm} (Scheme) ファイルとして保存されています。@c
4735 Scheme プログラミング言語は、LilyPond 内部処理へのプログラム可能な@c
4736 インタフェイスを提供するために使用されます。@c
4737 これらのファイルについての詳しい説明は、Scheme 言語についての知識が@c
4738 必要となるため、このマニュアルの範囲外です。@c
4739 Scheme 言語とこれらのファイルを理解するには、十分な知識や時間が@c
4740 必要であるということを知っておくべきです
4741 (@rextend{Scheme tutorial} を参照してください)。
4742
4743 あなたがこの知識を持っているのなら、興味を持つかもしれない Scheme ファイルは@c
4744 以下のものです:
4745
4746 @multitable @columnfractions .4 .6
4747 @headitem ファイル名
4748   @tab 内容
4749 @item @file{scm/auto-beam.scm}
4750   @tab サブ 連桁のデフォルト (訳者: 8 分音符には連桁だけが使用され、@c
4751 16 分音符やそれよりも短い音符には連桁とサブ 連桁が使われるのだと思います)
4752 @item @file{scm/define-grobs.scm}
4753   @tab Grob (グラフィカル オブジェクト) プロパティのデフォルト設定
4754 @item @file{scm/define-markup-commands.scm}
4755   @tab すべてのマークアップ コマンドの仕様
4756 @item @file{scm/midi.scm}
4757   @tab MIDI 出力のデフォルト設定
4758 @item @file{scm/output-lib.scm}
4759   @tab フレット、色、臨時記号、小節線などの見た目に影響を与える設定
4760 @item @file{scm/parser-clef.scm}
4761   @tab サポートされる音部記号の定義
4762 @item @file{scm/script.scm}
4763   @tab アーティキュレーションのデフォルト設定
4764 @end multitable
4765
4766
4767 @node Scheme を用いた高度な調整
4768 @subsection Scheme を用いた高度な調整
4769 @translationof Advanced tweaks with Scheme
4770
4771 @code{\override} と @code{\tweak} コマンドを用いることで@c
4772 多くのことが可能になりますが、LilyPond のアクションを変更するもっと強力な手段が
4773 LilyPond 内部処理へのプログラム可能なインタフェイスを通じて利用可能です。@c
4774 Scheme プログラミング言語で書かれたコードは LilyPond の内部処理に@c
4775 直接組み込むことができます。@c
4776 もちろん、それを行うには Scheme プログラミングについての基礎知識が必要であり、@c
4777 その手引きが @rextend{Scheme tutorial} で提供されています。
4778
4779 多くの実現可能なことの 1 つの例としては、プロパティに定数をセットする代わりに
4780 Scheme プロシージャをセットすることができます。@c
4781 このプロパティが LilyPond によってアクセスされたときに、@c
4782 このプロシージャが呼び出されます。@c
4783 このプロシージャが呼び出されたときに、このプロシージャによって決定された@c
4784 値を動的にそのプロパティにセットすることができます。@c
4785 以下の例では、符頭にその音符の譜上での位置に従って色を付けています:
4786
4787 @cindex x11-color function, example of using (x11-color 関数の使用方法)
4788 @cindex NoteHead, example of overriding (NoteHead をオーバライドする例)
4789 @cindex color property, setting to Scheme procedure (Scheme プロシージャに color プロパティをセットする)
4790
4791 @c KEEP LY
4792 @lilypond[quote,verbatim,ragged-right]
4793 #(define (color-notehead grob)
4794    "Color the notehead according to its position on the staff."
4795    (let ((mod-position (modulo (ly:grob-property grob 'staff-position)
4796                                7)))
4797      (case mod-position
4798        ;;   Return rainbow colors
4799        ((1) (x11-color 'red    ))  ; for C
4800        ((2) (x11-color 'orange ))  ; for D
4801        ((3) (x11-color 'yellow ))  ; for E
4802        ((4) (x11-color 'green  ))  ; for F
4803        ((5) (x11-color 'blue   ))  ; for G
4804        ((6) (x11-color 'purple ))  ; for A
4805        ((0) (x11-color 'violet ))  ; for B
4806        )))
4807
4808 \relative {
4809   % Arrange to obtain color from color-notehead procedure
4810   \override NoteHead.color = #color-notehead
4811   a2 b | c2 d | e2 f | g2 a |
4812 }
4813 @end lilypond
4814
4815 @rextend{Callback functions} に、これらのプログラム可能なインタフェイスの@c
4816 使い方を示している例がもっとあります。