]> git.donarmstrong.com Git - lilypond.git/blob - Documentation/ja/user/tweaks.itely
lilypond-book robustness: ensure EOL at the end of @verbatim
[lilypond.git] / Documentation / ja / user / tweaks.itely
1 @c -*- coding: utf-8; mode: texinfo; documentlanguage: ja -*-
2 @c This file is part of lilypond-learning.tely
3 @ignore
4     Translation of GIT committish: 499a511d4166feaada31114e097f86b5e0c56421
5
6     When revising a translation, copy the HEAD committish of the
7     version that you are working on.  See TRANSLATION for details.
8 @end ignore
9
10 @c \version "2.12.0"
11
12
13 @c Translators: Yoshiki Sawada
14 @c Translation status: post-GDP
15
16
17 @node Tweaking output
18 @chapter Tweaking output
19
20 この章では出力を変更する方法について議論します。LilyPond は本当にさまざまな設@c
21 定が可能です。もしかすると出力のすべての部分が変更されるかもしれません。
22
23 @menu
24 * Tweaking basics::
25 * The Internals Reference manual::
26 * Appearance of objects::
27 * Placement of objects::
28 * Collisions of objects::
29 * Further tweaking::
30 @end menu
31
32 @node Tweaking basics
33 @section Tweaking basics
34
35
36 @menu
37 * Introduction to tweaks::
38 * Objects and interfaces::
39 * Naming conventions of objects and properties::
40 * Tweaking methods::
41 @end menu
42
43
44 @node Introduction to tweaks
45 @subsection Introduction to tweaks
46
47 @q{調整} は入力ファイルの解釈中にとられるアクションを変更し、譜刻される音楽の@c
48 見た目を変更するためにユーザが利用可能なさまざまな手段を指す LilyPond の用語で@c
49 す。いくつかの調整はとても簡単に使うことができます。他の調整はもっと複雑です。@c
50 しかしながら、調整のために利用可能な手段を組み合わせることによって、ほとんどい@c
51 かなる望みの見た目を持った楽譜でも譜刻することが可能になります。
52
53 このセクションでは、調整を理解するのに必要な基礎となるコンセプトをカバーしま@c
54 す。その後、コピーするだけで効果が得られる作成準備が完了しているさまざまなコマ@c
55 ンドについての情報を提供し、同時に、あなたがあなた自身の調整を開発する方法を学@c
56 べるようにそれらのコマンドがどのように構築されるのかを示します。
57
58 この章を読み始める前に、あなたは @ref{Contexts and engravers} を再読することを@c
59 望むかもしれません。なぜなら、コンテキスト、エングラーバとそれらの中に含まれる@c
60 プロパティは調整について理解し、調整を構成するための基礎だからです。
61
62
63 @node Objects and interfaces
64 @subsection Objects and interfaces
65
66 @cindex object
67 @cindex grob
68 @cindex spanner
69 @cindex interface
70 @cindex properties, object
71 @cindex object properties
72 @cindex layout object
73 @cindex object, layout
74 @cindex interface
75
76 調整には LilyPond プログラムの内部オペレーションと構造体への変更も含まれます。@c
77 そのため、我々はまずそれらの内部オペレーションと構造体を記述するために使用され@c
78 るいくつかの用語を導入しなければなりません。
79
80 @q{オブジェクト} という用語は入力ファイルを処理している最中に LilyPond によっ@c
81 てビルドされる多くの内部構造体を参照するために使われる汎用的な用語です。LilyPond 
82 が @code{@bs{}new Staff} のようなコマンドに遭遇した場合、タイプ @code{Staff} 
83 の新しいオブジェクトを構築します。その @code{Staff} オブジェクトは、その譜表の@c
84 コンテキスト内部で機能するために割り当てられているエングラーバの詳細とともに、@c
85 その譜表に関連付けられているすべてのプロパティ -- 例えば、その譜表の名前、調号 
86 -- を保持します。同様に、@code{Voice} オブジェクト、@code{Score} オブジェク@c
87 ト、@code{Lyrics} オブジェクトなどの他のすべてのコンテキストのプロパティを保持@c
88 するためのオブジェクトが存在し、さらに、小節線、音符の玉、タイ、強弱記号などの@c
89 すべての表記要素を表すためのオブジェクトも存在します。各オブジェクトはそれ自体@c
90 のプロパティ値のセットを持ちます。
91
92 いくつかのタイプのオブジェクトには特別な名前が与えられています。音符の玉、ステ@c
93 ム、スラー、タイ、運指記号、音部記号などの譜刻される出力上の表記要素を表すオブ@c
94 ジェクトは @q{レイアウト オブジェクト} と呼ばれ、しばしば @q{グラフィカル オブ@c
95 ジェクト} あるいは短くして @q{グロッブ (Grob: GRaphical OBject)} と呼ばれま@c
96 す。これらのオブジェクトも上記の汎用的な観点から見るとオブジェクトであり、それ@c
97 ゆえ、それらもまたそれらのオブジェクトに関連付けされたプロパティ -- そのオブ@c
98 ジェクトの位置、サイズ、色など -- を持ちます。
99
100 いくつかのレイアウト オブジェクトも特別です。フレージング スラー、クレッシェン@c
101 ド、オッターバ (訳者: オクターブ?) 記号、他の多くのグラフィカル オブジェクト@c
102 が置かれる場所は一点ではありません -- それらは開始点、終了点、そしておそらくそ@c
103 れらの形に関係する他のプロパティを持ちます。これらのオブジェクトのように形が伸@c
104 長されるオブジェクトは @q{スパナ (Spanners)} と呼ばれます。
105
106 @q{インタフェイス} とは何なのかという説明が残っています。多くのオブジェクト -- 
107 たとえそれらが非常に異なっていたとしても -- は同じ方法で処理される必要がある共@c
108 通特徴 (common feature) を共有します。例えば、すべてのグラフィカル オブジェク@c
109 トは色、サイズ、位置などを持ち、これらのプロパティはすべて LilyPond が入力ファ@c
110 イルを構文解釈する最中に同じ方法で処理されます。これらの内部オペレーションを簡@c
111 潔にするために、これらの共通アクションとプロパティは 1 つのグループとして 
112 @code{grob-interface} と呼ばれるオブジェクトにまとめられています。これと同じよ@c
113 うな共有プロパティのグループ化が他にも多くあり、それぞれに対して最後に 
114 @code{interface} が付く名前が与えられています。そのようなインタフェイスの総数は 
115 100 を越えます。我々は後でなぜこれがユーザにとって利益となり、役に立つのかを見@c
116 ていきます。
117
118 これらは、我々がこの章で使用するオブジェクトと関係する主要な用語です。
119
120
121 @node Naming conventions of objects and properties
122 @subsection Naming conventions of objects and properties
123
124 @cindex naming conventions for objects
125 @cindex naming conventions for properties
126 @cindex objects, naming conventions
127 @cindex properties, naming conventions
128
129 我々は以前にも @ref{Contexts and engravers} でいくつかのオブジェクト命名規約を@c
130 見てきました。ここで参照のために、最も一般的なオブジェクトとプロパティをリスト@c
131 アップし、それに加えてそれらの命名規約と実際の名前の例を挙げます。何らかの大文@c
132 字のアルファベットを表すために @q{A} を使用し、いくつかの小文字のアルファベッ@c
133 トを表すために @q{aaa} を使用しています。他の文字は実際の命名でもそのまま使用@c
134 されます。
135
136 @multitable @columnfractions .33 .33 .33
137 @headitem オブジェクト/プロパティのタイプ
138   @tab 命名規約
139   @tab 例
140 @item コンテキスト
141   @tab Aaaa や AaaaAaaaAaaa
142   @tab Staff, GrandStaff
143 @item レイアウト オブジェクト
144   @tab Aaaa や AaaaAaaaAaaa
145   @tab Slur, NoteHead
146 @item エングラーバ
147   @tab Aaaa_aaa_engraver
148   @tab Clef_engraver, Note_heads_engraver
149 @item インタフェイス
150   @tab aaa-aaa-interface
151   @tab grob-interface, break-aligned-interface
152 @item コンテキスト プロパティ
153   @tab aaa や aaaAaaaAaaa
154   @tab alignAboveContext, skipBars
155 @item レイアウト オブジェクト プロパティ
156   @tab aaa や aaa-aaa-aaa
157   @tab direction, beam-thickness
158 @end multitable
159
160 これから見ていくのですが、タイプが異なるオブジェクトのプロパティは異なるコマン@c
161 ドによって変更されます。そのため、プロパティの名前からオブジェクトの種類を識別@c
162 できるようになると役に立ちます。
163
164
165 @node Tweaking methods
166 @subsection Tweaking methods
167
168 @cindex tweaking methods
169
170 @strong{@bs{}override コマンド}
171
172 @cindex override command
173 @cindex override syntax
174
175 @funindex \override
176 @funindex override
177
178 我々はすでに @ref{Modifying context properties} と @ref{Adding and removing 
179 engravers} で@strong{コンテキスト}のプロパティを変更したり、@strong{エングラー@c
180 バ}を追加/削除したりするために使用するコマンド 
181 @code{@bs{}set} と @code{@bs{}with} を見てきました。ここでは更に重要ないくつか@c
182 のコマンドについて見ていきます。
183
184 @strong{レイアウト オブジェクト}のプロパティを変更するためのコマンドは 
185 @code{@bs{}override} です。このコマンドは LilyPond の奥深くにある内部プロパ@c
186 ティを変更しなければならないため、これまで見てきたコマンドのように単純な構文で@c
187 はありません。どのコンテキストの中にあるどのオブジェクトのどのプロパティを変更@c
188 しなければならないのか、そこにセットする新しい値を何にするのかを正確に知ってい@c
189 る必要があります。どのようにこれを行うのかを見ていきましょう。
190
191 このコマンドの一般的な構文は以下のようなものです:
192
193 @example
194 @bs{}override @var{Context}.@var{LayoutObject} @hash{}'@var{layout-property} =
195 @hash{}@var{value}
196 @end example
197
198 @noindent
199 これは @var{Context} コンテキストのメンバである @var{LayoutObject} という名前@c
200 のレイアウトの @var{layout-property} という名前のプロパティに値 @var{value} を@c
201 セットします。
202
203 必要とされているコンテキストが明白であり、それが最下位レベルのコンテキストである 
204 -- つまり、@code{Voice}, @code{ChordNames} や @code{Lyrics} である -- 場合、その 
205 @var{Context} は省略可能可能であり (そして通常は省略されます)、この後の例の多@c
206 くでも省略します。後ほど、コンテキストを指定しなければならない場合について見て@c
207 いきます。
208
209 これから後のセクションでは広範囲に亘るプロパティとそれらの値を扱います。しかし@c
210 ながら、そのフォーマットとそれらのコマンドの使用方法を示すためには、容易に理解@c
211 できる簡単なプロパティと値を 2, 3 使用してみるだけです。
212
213 今や、レイアウト プロパティの前に置かれなければならない @code{@hash{}'} やプロ@c
214 パティ値の前に置かれなければならない @code{@hash{}} について心配する必要はあり@c
215 ません。これらは常にそのような形式で正確に記述されなければなりません。これは調@c
216 整では最も一般的に使用されるコマンドであり、この章の残りの部分の大半ではプロパ@c
217 ティ (変更コマンド) の使用方法を示すための例を記述しています。ここでは音符玉の@c
218 色を変更する簡単な例を挙げます:
219
220
221 @cindex color property, example
222 @cindex NoteHead, example of overriding
223
224 @lilypond[quote,fragment,ragged-right,verbatim,relative=1]
225 c d
226 \override NoteHead #'color = #red
227 e f g
228 \override NoteHead #'color = #green
229 a b c
230 @end lilypond
231
232
233 @strong{@bs{}revert コマンド}
234
235 @cindex revert command
236
237 @funindex \revert
238 @funindex revert
239
240 一旦オーバライドされると、そのプロパティは再度オーバライドされるか 
241 @code{@bs{}revert} コマンドに遭遇するまで新しい値のままでいます。@c
242 @code{@bs{}revert} コマンドは以下の構文を持ち、プロパティの値をオリジナルのデ@c
243 フォルト値に戻します。何度か @code{@bs{}override} コマンドが発行されている場合@c
244 は、前の値に戻すわけではないということに注意してください。
245
246
247 @example
248 @bs{}revert @var{Context}.@var{LayoutObject} @hash{}'@var{layout-property}
249 @end example
250
251 繰り返しますが、@code{@bs{}override} コマンドでの @var{Context} と同様に、多く@c
252 の場合で @var{Context} を記述する必要はありません。以下の例の多くで、@c
253 @var{Context} は省略されます。ここでは、最後の 2 つの音符の音符玉の色をデフォ@c
254 ルトに戻します:
255
256 @cindex color property, example
257 @cindex NoteHead, example of overriding
258
259 @lilypond[quote,fragment,ragged-right,verbatim,relative=1]
260 c d
261 \override NoteHead #'color = #red
262 e f g
263 \override NoteHead #'color = #green
264 a
265 \revert NoteHead #'color
266 b c
267 @end lilypond
268
269 @strong{@bs{}once prefix}
270
271 @funindex \once
272 @funindex once
273
274 @code{@bs{}override} コマンドと @code{@bs{}set} コマンドには両方とも接頭辞 
275 @code{@bs{}once} が付く可能性があります。これはその後に続く @code{@bs{}override} 
276 や @code{@bs{}set} コマンドをその場一回限り有効にし、その後にそのプロパティの@c
277 値をデフォルト値に戻します。上と同じ例を使って、以下のように 1 つだけの音符の@c
278 色を変更することができます:
279
280 @cindex color property, example
281 @cindex NoteHead, example of overriding
282
283 @lilypond[quote,fragment,ragged-right,verbatim,relative=1]
284 c d
285 \once \override NoteHead #'color = #red
286 e f g
287 \once \override NoteHead #'color = #green
288 a b c
289 @end lilypond
290
291 @strong{@bs{}overrideProperty コマンド}
292
293 @cindex overrideProperty command
294
295 @funindex \overrideProperty
296 @funindex overrideProperty
297
298 オーバライド コマンドには @code{@bs{}overrideProperty} というもう 1 つのフォー@c
299 マットがあり、時々必要となります。完璧を期すためにここでこれに言及しましたが、@c
300 詳細は @ruser{Difficult tweaks} を参照してください。
301 @c Maybe explain in a later iteration  -td
302
303 @strong{@bs{}tweak コマンド}
304
305 @cindex tweak command
306
307 @funindex \tweak
308 @funindex tweak
309
310 利用可能な最後の調整コマンドは @code{@bs{}tweak} です。これは同じタイミングで@c
311 起こるオブジェクト -- 和音の中にある音符などのように -- のプロパティを変更する@c
312 ために使用されます。@code{@bs{}override} コマンドを使用すると和音の中にあるす@c
313 べての音符に影響を与えます。一方、@code{@bs{}tweak} は入力ストリームの中でその 
314 @code{@bs{}tweak} のすぐ後にある要素 1 つだけに影響を与えます。
315
316 ここで例を挙げます。C メジャー コードの中にある真ん中の音符 (ミドル E) の音符@c
317 玉のサイズを変更したいとします。まず最初に、@code{@bs{}once @bs{}override} だ@c
318 とどうなるか見てみましょう:
319
320 @cindex font-size property, example
321 @cindex NoteHead, example of overriding
322
323 @lilypond[quote,fragment,ragged-right,verbatim,relative=1]
324   <c e g>4
325   \once \override NoteHead #'font-size = #-3
326   <c e g>
327   <c e g>
328 @end lilypond
329
330 このオーバライドは和音の中にある@emph{すべて}の音符玉に影響を与えています。こ@c
331 れは和音の中にあるすべての音符が同じ@emph{タイミング}で起こるためであり、@c
332 @code{@bs{}once} のアクションは @code{@bs{}override} と同様に同じタイミングで@c
333 起こる、指定されたタイプすべてのレイアウト オブジェクトへのオーバライドに適用@c
334 されます。
335
336 @code{@bs{}tweak} コマンドはこれとは異なるやり方で処理されます。これは入力スト@c
337 リームの中ですぐ後に続く要素にだけ作用します。しかしながら、これは入力ストリー@c
338 ムから直接作成されるオブジェクト -- 本質的に音符玉とアーティキュレーション -- 
339 にだけ効果を持ちます。ステムや臨時記号などのオブジェクトは後で作成されるため、@c
340 この方法では調整できません。さらに、@code{@bs{}tweak} が音符玉に適用される場@c
341 合、それらは和音の内部になければ@emph{なりません} -- つまり、単一角括弧 
342 @code{< .. >} の内部です。そのため、単一の音符 (和音ではない音符) を調整するに@c
343 は、@code{@bs{}tweak} コマンドはその音符とともに単一の角括弧で囲わなければなり@c
344 ません。
345
346 それでは例に戻り、この方法で和音の真ん中の音符のサイズを変更します:
347
348 @cindex font-size property, example
349 @cindex @code{@bs{}tweak}, example
350
351 @lilypond[quote,fragment,ragged-right,verbatim,relative=1]
352   <c e g>4
353   <c \tweak #'font-size #-3 e g>4
354 @end lilypond
355
356 @code{@bs{}tweak} の構文は @code{@bs{}override} コマンドの構文とは異なるという@c
357 ことに注意してください。コンテキストもレイアウト オブジェクトも指定されませ@c
358 ん。実際、それらを指定するとエラーになります。これらは両方とも入力ストリームの@c
359 中で後に続く要素によって示されます。さらに、イコール記号を使うべきではないとい@c
360 うことに注意してください。そのため、@code{@bs{}tweak} コマンドの一般的な構文は@c
361 単純に以下のようになります:
362
363 @example
364 @bs{}tweak @hash{}'@var{layout-property} @hash{}@var{value}
365 @end example
366
367 さらに、@code{@bs{}tweak} コマンドは一連のアーティキュレーションの中にあるただ 1 
368 つのアーティキュレーションを変更されるためにも使用できます。ここに例を挙げます:
369
370 @cindex color property, example
371 @cindex @code{@bs{}tweak}, example
372
373 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
374 a ^Black
375   -\tweak #'color #red ^Red
376   -\tweak #'color #green _Green
377 @end lilypond
378
379 @noindent
380 @code{@bs{}tweak} コマンドは、まるでそれがアーティキュレーションの一部であるか@c
381 のように、アーティキュレーション マークの前に置かれなければならないということ@c
382 に注意してください。
383
384 @cindex tuplets, nested
385 @cindex triplets, nested
386 @cindex bracket, tuplet
387 @cindex bracket, triplet
388 @cindex tuplet bracket
389 @cindex triplet bracket
390
391 @funindex TupletBracket
392
393 さらに、@code{@bs{}tweak} コマンドは、同時に起こるネストされた連符記号のセット@c
394 のうちの 1 つの見た目を変更するためにも使用されます。以下の例では、長い連符記@c
395 号と 3 つの短い連符記号のうちの最初の連符記号が同時に起こります。そのため、@c
396 @code{@bs{}override} コマンドだと両方の連符記号に適用されてしまいます。この例@c
397 では、@code{@bs{}tweak} は 2 つの連符記号を区別するために使用されています。最@c
398 初の @code{@bs{}tweak} コマンドは長い連符記号を音符の上に置くことを指定してい@c
399 て、2 番目の @code{@bs{}tweak} コマンドは最初の短い連符記号の数字を赤で描くこ@c
400 とを指定しています。
401
402 @cindex @code{@bs{}tweak}, example
403 @cindex direction property, example
404 @cindex color property, example
405
406 @lilypond[quote,ragged-right,verbatim,fragment,relative=2]
407 \tweak #'direction #up
408 \times 4/3 {
409   \tweak #'color #red
410   \times 2/3 { c8[ c8 c8] }
411   \times 2/3 { c8[ c8 c8] }
412   \times 2/3 { c8[ c8 c8] }
413 }
414 @end lilypond
415
416 ネストされた連符が同時に起こらない場合、それらの見た目は @code{@bs{}override} 
417 コマンドを用いた通常通りの方法で変更されるかもしれません:
418
419 @cindex text property, example
420 @cindex tuplet-number function, example
421 @cindex transparent property, example
422 @cindex TupletNumber, example of overriding
423
424 @c NOTE Tuplet brackets collide if notes are high on staff
425 @c See issue 509
426 @lilypond[quote,ragged-right,verbatim,fragment,relative=1]
427 \times 2/3 { c8[ c c]}
428 \once \override TupletNumber
429   #'text = #tuplet-number::calc-fraction-text
430 \times 2/3 {
431   c[ c]
432   c[ c]
433   \once \override TupletNumber #'transparent = ##t
434   \times 2/3 { c8[ c c] }
435 \times 2/3 { c8[ c c]}
436 }
437 @end lilypond
438
439
440 @seealso
441 表記リファレンス:
442 @ruser{The tweak command}
443
444 @node The Internals Reference manual
445 @section The Internals Reference manual
446
447
448 @menu
449 * Properties of layout objects::
450 * Properties found in interfaces::
451 * Types of properties::
452 @end menu
453
454 @node Properties of layout objects
455 @subsection Properties of layout objects
456
457 @cindex properties of layout objects
458 @cindex properties of grobs
459 @cindex grobs, properties of
460 @cindex layout objects, properties of
461 @cindex Internals Reference manual
462
463 あなたがスラーを楽譜に描き、そのスラーが細すぎるためにもう少し太くしたいと思っ@c
464 たとします。どうやってスラーを太くしますか?以前に LilyPond の自由度の高さにつ@c
465 いて述べたので、そのようなことが可能であることは知っています。あなたはおそらく 
466 @code{@bs{}override} コマンドが必要であると推測するでしょう。しかしながら、ス@c
467 ラーの太さプロパティは存在するのでしょうか?そして、それが存在するならどうやっ@c
468 て変更するのでしょうか?このようなことに内部リファレンス マニュアルは触れてい@c
469 ます。内部リファレンス マニュアルには、あなたがスラーを太くするために必要な情@c
470 報、他のすべての @code{@bs{}override} コマンドを構築するために必要な情報が含ま@c
471 れています。
472
473 内部リファレンスを見ていく前に一言警告です。これは@strong{リファレンス} ドキュ@c
474 メントであり、説明はほんの少しかまったく含まれていません: リファレンスの目的は@c
475 情報を正確に、かつ簡潔に提供することです。そのため、内部リファレンスを一見して@c
476 ひるんでしまうかもしれません。しかし、心配しないでください!ここにあるガイダン@c
477 スと説明を読めば、少し練習するだけで、内部リファレンスから必要な情報を取り出せ@c
478 るようになります。
479
480 @cindex override example
481 @cindex Internals Reference, example of using
482 @cindex @code{@bs{}addlyrics} example
483
484 実際の音楽からの簡単な断片を持つ具体例を使用していきましょう:
485
486 @lilypond[quote,verbatim,relative=2]
487 {
488   \time 6/8
489   {
490     r4 b8 b[( g]) g |
491     g[( e]) e d[( f]) a |
492     a g
493   }
494   \addlyrics {
495     The man who feels love's sweet e -- mo -- tion
496   }
497 }
498 @end lilypond
499
500 ここで、スラーをもう少し太くしようと決めたことにします。それは可能でしょうか?@c
501 スラーは確かにレイアウト オブジェクトです。そのため、その疑問は @q{スラーに属@c
502 していて、太さを制御するプロパティは存在するのか?} ということになります。その@c
503 答えを得るために内部リファレンス -- 縮めて IR -- を見なければなりません。
504
505 あなたが使用しているバージョンの LilyPond のための内部リファレンスは LilyPond 
506 ウェブサイト @uref{http://lilypond.org} で見つかるでしょう。ドキュメント ペー@c
507 ジに行き、内部リファレンスへのリンクをクリックしてください。学習目的のためには@c
508 標準の HTML バージョンを使うべきであり、@q{one big page} (@q{大きな 1 ページに@c
509 まとめたもの}) や PDF を使うべきではありません。次の数段落を読めば、あなたが内@c
510 部リファレンスを読むときに実際にすべきことがわかるでしょう。
511
512 内部リファレンスの@strong{トップ ページ}下には 5 つのリンクがあります。@c
513 @emph{バックエンド} へのリンクを選択してください。そこにはレイアウト オブジェ@c
514 クトについての情報があります。@strong{バックエンド} 下にある @emph{すべてのレ@c
515 イアウト オブジェクト} へのリンクを選択してください。そのページには、あなたが@c
516 使用しているバージョンの LilyPond で使用されるすべてのレイアウト オブジェクト@c
517 がアルファベット順でリストアップされています。Slur へのリンクを選択すると、@c
518 Slur のプロパティがリスト アップされます。
519
520 表記リファレンスからこのページを見つける方法もあります。スラーについて扱ってい@c
521 るページで、内部リファレンスへのリンクがを見つかるかもしれません。このリンクで@c
522 このページに直接行くことができます。しかしながら、あなたが調整するレイアウト 
523 オブジェクトの名前を想像できる場合は、すぐに内部リファレンスに行ってそこで探す@c
524 方が簡単です。
525
526 内部リファレンスの Slur ページでは、まず Slur オブジェクトは 
527 @code{Slur_engraver} によって作成されるということが述べられています。それか@c
528 ら、標準設定がをリストアップされています。標準設定はアルファベット順にはなっ@c
529 て@strong{いない}ということに注意してください。太さを制御していそうなプロパ@c
530 ティを探してブラウザをスクロール ダウンさせていくと、以下が見つかります:
531
532 @example
533 @code{thickness} (number)
534      @code{1.2}
535      Line thickness, generally measured in @code{line-thickness}
536 @end example
537
538 これが太さを変更するプロパティのようです。@code{thickness} の値は@emph{数}であ@c
539 り、デフォルト値は 1.2、この値は他のプロパティでは @code{line-thickness} と呼@c
540 ばれるということがわかります。
541
542 前にも言ったように、内部リファレンスには説明がほとんど、あるいはまったくありま@c
543 せん。しかしながら、すでにスラーの太さを変えるための十分な情報を持っています。@c
544 レイアウト オブジェクトの名前は @code{Slur} であり、変更するプロパティの名前は 
545 @code{thickness} であり、スラーをもっと太くするには新しい値を 1.2 よりも大きく@c
546 すべきであることがわかります。
547
548 今度は、レイアウト オブジェクト名で見つけた値を置き換えることによって 
549 @code{@bs{}override} コマンドを構築することができます。コンテキストは省略しま@c
550 す。最初は太さに非常に大きな値を割り当ててみます。それによって、そのコマンドが@c
551 確かに機能していることを確かめることができます。実行するコマンドは以下のように@c
552 なります:
553
554 @example
555 @bs{}override Slur @hash{}'thickness = @hash{}5.0
556 @end example
557
558 プロパティ名の前に @code{@hash{}'} を付けること、新しい値の前に @code{@hash{}} 
559 を付けることを忘れないでください!
560
561 最後の疑問は @q{このコマンドをどこに置くべきか?} ということです。そのことにつ@c
562 いて不確かであり、学んでいる最中であるのならば、ベストな答えはこうです @q{音楽@c
563 表記の内部で、最初のスラーの直前}。ではやってみましょう:
564
565 @cindex Slur example of overriding
566 @cindex thickness property, example
567
568 @lilypond[quote,verbatim,relative=2]
569 {
570   \time 6/8
571   {
572     % Increase thickness of all following slurs from 1.2 to 5.0
573     \override Slur #'thickness = #5.0
574     r4 b8 b[( g]) g |
575     g[( e]) e d[( f]) a |
576     a g
577   }
578   \addlyrics {
579     The man who feels love's sweet e -- mo -- tion
580   }
581 }
582 @end lilypond
583
584 @noindent
585 確かにスラーが太くなっています。
586
587 これが @code{@bs{}override} コマンドを構築する基本的な方法です。これより後のセ@c
588 クションで遭遇するものはもう少し複雑ですが、必要な要点はすべて知っています -- 
589 しかしながら、まだ練習が必要でしょう。これは以下の例で提供されます。
590
591
592 @subheading Finding the context
593
594 @cindex context, finding
595 @cindex context, identifying correct
596
597 しかしながら、まず最初にコンテキストを指定しなければならないとしたらどうでしょ@c
598 うか?指定すべきコンテキストは何でしょうか?スラーとボイスは音楽表記の各行で明@c
599 らかに関係が深いので、スラーは @code{Voice} コンテキストの中にあると推測できる@c
600 かもしれません。しかし、それは確かでしょうか?この問題を解決するには、Slur に@c
601 ついて記述している内部リファレンス ページの先頭に戻ります。@c
602 そこには @q{Slur オブジェクトは Slur エングラーバによって作成される} と書かれ@c
603 ています。そのため、スラーは @code{Slur_engraver} が存在しているコンテキストの@c
604 どれかで作成されるということになります。@code{Slur_engraver} へのリンクを辿り@c
605 ます。そのページの最後の方で @code{Slur_engraver} は 5 つのボイス コンテキスト 
606 -- 標準のボイス コンテキストである @code{Voice} を含む -- の一部であることが述@c
607 べられています。ですから、推測は正しかったのです。そして、@code{Voice} は最下@c
608 位のコンテキストの 1 つである -- このことは、そこに音符を入力するという事実に@c
609 よって明らかに示されています -- ため、ここではそのコンテキストを省略することが@c
610 できるのです。
611
612
613 @subheading Overriding once only
614
615 @cindex overriding once only
616 @cindex once override
617
618 @funindex \once
619 @funindex once
620
621 上記の最後の例では@emph{すべて}のスラーが太くなっています。しかし、最初のス@c
622 ラーだけを太くしたい場合はどうでしょうか?これは @code{@bs{}once} コマンドを使@c
623 うことによって達成されます。@code{@bs{}override} コマンドの直前に 
624 @code{@bs{}once} コマンドを置くことによって、@code{@bs{}override} コマンド@c
625 は@strong{直後にある}音符から始まるスラーだけを変更するようになります。直後に@c
626 ある音符がスラーの開始点ではない場合、そのコマンドはまったく機能しません -- そ@c
627 れがスラーに遭遇するまで保持されるということはなく、ただ切り捨てられるだけで@c
628 す。そのため、@code{@bs{}once} コマンド付きの @code{@bs{}override} コマンドは@c
629 以下のように上記の例とは異なる場所に置かなくてはなりません:
630
631 @cindex Slur, example of overriding
632 @cindex thickness property, example
633
634 @lilypond[quote,verbatim,relative=2]
635 {
636   \time 6/8
637   {
638     r4 b8
639     % Increase thickness of immediately following slur only
640     \once \override Slur #'thickness = #5.0
641     b[( g]) g |
642     g[( e]) e d[( f]) a |
643     a g
644   }
645   \addlyrics {
646     The man who feels love's sweet e -- mo -- tion
647   }
648 }
649 @end lilypond
650
651 @noindent
652 今度は、最初のスラーだけが太くなりました。
653
654 @code{@bs{}once} コマンドは @code{@bs{}set} コマンドの前でも使用される可能性が@c
655 あります。
656
657
658 @subheading Reverting
659
660 @cindex revert
661 @cindex default properties, reverting to
662
663 @funindex \revert
664 @funindex revert
665
666 最後に、最初の 2 つだけのスラーを太くしたい場合はどうでしょうか?その場合、2 
667 つのコマンド -- それぞれの前に @code{@bs{}once} を付けた -- をスラーが始まる音@c
668 符の直前に置きます:
669
670 @cindex Slur, example of overriding
671 @cindex thickness property, example
672
673 @lilypond[quote,verbatim,relative=2]
674 {
675   \time 6/8
676   {
677     r4 b8
678     % Increase thickness of immediately following slur only
679     \once \override Slur #'thickness = #5.0
680     b[( g]) g |
681     % Increase thickness of immediately following slur only
682     \once \override Slur #'thickness = #5.0
683     g[( e]) e d[( f]) a |
684     a g
685   }
686   \addlyrics {
687     The man who feels love's sweet e -- mo -- tion
688   }
689 }
690 @end lilypond
691
692 @noindent
693 あるいは、@code{@bs{}once} コマンドを省略して、2 番目のスラーの後に 
694 @code{thickness} プロパティをデフォルト値に戻すために @code{@bs{}revert} コマ@c
695 ンドを使うこともできます:
696
697 @cindex Slur, example of overriding
698 @cindex thickness property, example
699
700 @lilypond[quote,verbatim,relative=2]
701 {
702   \time 6/8
703   {
704     r4 b8
705     % Increase thickness of all following slurs from 1.2 to 5.0
706     \override Slur #'thickness = #5.0
707     b[( g]) g |
708     g[( e])
709     % Revert thickness of all following slurs to default of 1.2
710     \revert Slur #'thickness
711     e d[( f]) a |
712     a g
713   }
714   \addlyrics {
715     The man who feels love's sweet e -- mo -- tion
716   }
717 }
718 @end lilypond
719
720 @noindent
721 @code{@bs{}revert} コマンドは @code{@bs{}override} コマンドで変更されたどのプ@c
722 ロパティでもデフォルト値に戻すことができます。状況に相応しい方を使用してくださ@c
723 い。
724
725 これで内部リファレンスと調整の基本的な方法についての紹介を終わりにします。この@c
726 章で後に続くセクションの中にあるいくつのかの例でも一部では、内部リファレンスの@c
727 特徴についての追加の紹介や、そこから情報を取り出すための更なる練習を提供しま@c
728 す。それらの例ではガイダンスや説明のための言葉はずっと少ないでしょう。
729
730
731 @node Properties found in interfaces
732 @subsection Properties found in interfaces
733
734 @cindex interface
735 @cindex interface properties
736 @cindex properties in interfaces
737
738 今度は歌詞をイタリック体で譜刻したいということにします。そうするには 
739 @code{@bs{}override} コマンドをどのように使う必要があるのでしょうか?以前と同@c
740 様に、まず @q{すべてのレイアウト オブジェクト} をリストアップしている内部リ@c
741 ファレンス ページを開き、歌詞をコントロールしていそうなオブジェクトを探しま@c
742 す。@code{LyricText} がそれであるようです。これをクリックすると、歌詞のテキス@c
743 トに対してセットすることができるプロパティが表示されます。そこには 
744 @code{font-series} と @code{font-size} が含まれますが、歌詞をイタリック体にす@c
745 るためのプロパティらしきものはありません。これは、形に関するプロパティはすべて@c
746 のフォント オブジェクトに共通なものであり、そのため、各レイアウト オブジェクト@c
747 に含まれているのではなく、他の同様な共通プロパティと一緒にグループ化されてい@c
748 て、@strong{インタフェイス}の 1 つ @code{font-interface} の中に置かれているか@c
749 らです。
750
751 そのため、インタフェイスのプロパティを見つける方法と、どのオブジェクトがこれら@c
752 のインタフェイス プロパティを使うのかを調べる方法を学ぶ必要があります。
753
754 @code{LyricText} について記述している内部リファレンスのページを再び開いてくだ@c
755 さい。そのページの最後に @code{LyricText} がサポートするインタフェイスへのリン@c
756 クがリスト アップされています。そのリストには @code{font-interface} を含むいく@c
757 つかの要素があります。このリンクをクリックすると、このインタフェイスに関連付け@c
758 されているプロパティのところに行きます。これらのプロパティは @code{LyricText} 
759 を含む @code{font-interface} をサポートするすべてのオブジェクトのプロパティで@c
760 もあります。
761
762 @code{font-shape(symbol)} を含むフォントを制御するユーザが設定可能なプロパティ@c
763 をすべて見つけました。@code{font-shape(symbol)} では @code{symbol} を 
764 @code{upright}, @code{italics}, あるいは @code{caps} にセットすることができま@c
765 す。
766
767 そこには、@code{font-series} と @code{font-size} もリスト アップされていること@c
768 に気づくでしょう。そこで次のような疑問が湧いてきます: 共通フォントプロパティ 
769 @code{font-series} と @code{font-size} は @code{LyricText} とインタフェイス 
770 @code{font-interface} の両方でリスト アップされているのに、なぜ 
771 @code{font-shape} はそうでないのか?その答えは、@code{font-series} と 
772 @code{font-size} は、@code{LyricText} オブジェクトが作成されるときに、それらの@c
773 グローバルなデフォルト値から変更されるのに対して、@code{font-shape} はそうでは@c
774 ないからです。@code{LyricText} の中にあるエントリから @code{LyricText} に適用@c
775 されるそれら 2 つのプロパティの値がわかります。@code{font-interface} をサポー@c
776 トする他のオブジェクトは、それらのオブジェクトが作成されるときに、それらのプロ@c
777 パティを異なる値にセットします。
778
779 今度は歌詞をイタリック体に変更するように @code{@bs{}override} コマンドを構築で@c
780 きるかどうかを見ていきましょう。オブジェクトは @code{LyricText} であり、プロパ@c
781 ティは @code{font-shape} であり、セットする値は @code{italic} です。前と同様@c
782 に、コンテキストを省略します。
783
784 話は逸れますが重要なことを 1 つ挙げます。@code{font-shape} の値はシンボルなの@c
785 で、シングル アポストロフィ @code{'} を付ける必要があるということに注意してく@c
786 ださい。その理由は、以前の例での @code{thickness} や @code{font-shape} の前に@c
787 アポストロフィを付ける必要がある理由と同じです。それらも両方ともシンボルです。@c
788 シンボルは LilyPond によって内部的に読み取られます。それらのいくつかは 
789 @code{thickness} や @code{font-shape} のようなプロパティの名前であり、他のものは 
790 @code{italic} のようにプロパティに与えられる値として使用されます。任意のテキス@c
791 ト文字列との違い -- 任意のテキスト文字列は @code{"a text string"} のような形で@c
792 表記されます -- に注意してください。シンボルと文字列についてのより詳細な説明@c
793 は、@ref{Scheme tutorial} を参照してください。
794
795 さて、それでは歌詞をイタリック体で譜刻するために必要となる @code{@bs{}override} 
796 コマンドは以下のようになります:
797
798 @example
799 \override LyricText @hash{}'font-shape = @hash{}'italic
800 @end example
801
802 @noindent
803 そして、これは以下のように影響を与える歌詞の前に、そして近くに置くべきです:
804
805 @cindex font-shape property, example
806 @cindex italic, example
807 @cindex LyricText, example of overriding
808 @cindex @code{\addlyrics}, example
809
810 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
811 {
812   \time 6/8
813   {
814     r4 b8 b[( g]) g |
815     g[( e]) e d[( f]) a |
816     a g
817   }
818   \addlyrics {
819     \override LyricText #'font-shape = #'italic
820     The man who feels love's sweet e -- mo -- tion
821   }
822 }
823 @end lilypond
824
825 @noindent
826 これで歌詞がすべてイタリック体で譜刻されました。
827
828
829 @subheading Specifying the context in lyric mode
830
831 @cindex context, specifying in lyric mode
832 @cindex lyric mode, specifying context
833
834 歌詞の場合、以前のようなコマンドの発行の仕方の中でコンテキストを指定しようとし@c
835 ても失敗するでしょう。歌詞モードの中で入力される音節はスペース、改行、数字のい@c
836 ずれかで区切られます。他のすべての文字は音節の一部と見なされます。これが、終端の 
837 @code{@}} の前にはスペースか改行を置かなければならない理由です。そうしないと、@c
838 終端の @code{@}} は最後の音節の一部に含まれてしまいます。同様に、コンテキスト@c
839 名とオブジェクト名を区切るために、ピリオドまたはドット @q{.} の前と後ろにス@c
840 ペースを挿入しなければなりません。さもないと 2 つの名前は一緒になってしまい、@c
841 インタプリタはそれらを認識できなくなります。そのため、コマンドは以下のようにす@c
842 べきです:
843
844 @example
845 @bs{}override Lyrics . LyricText @hash{}'font-shape = @hash{}'italic
846 @end example
847
848 @warning{歌詞の中では、最後の音節と終端の中括弧の間に常にスペースを置いてくだ@c
849 さい。}
850
851 @warning{歌詞の中のオーバライドでは、コンテキスト名とオブジェクト名の間にある@c
852 ドットの両側に常にスペースを置いてください。}
853
854
855 @seealso
856 学習マニュアル: @ref{Scheme tutorial}
857
858
859 @node Types of properties
860 @subsection Types of properties
861
862 @cindex property types
863
864 これまでにプロパティのタイプを 2 つ見てきました: @code{number} と @code{symbol} 
865 です。プロパティに与える値が有効であるためには、その値は正しいタイプであり、そ@c
866 のタイプのルールに従っていなければなりません。プロパティのタイプは内部リファレ@c
867 ンスの中で常にプロパティ名の後の括弧の中に表示されています。ここに、あなたが必@c
868 要になるであろうプロパティのタイプを、そのタイプのルールといくつかの例と共にリ@c
869 スト アップします。もちろん、@code{@bs{}override} コマンドの中でプロパティの値@c
870 を入力する時は、常にそれらの値の前にハッシュ記号 @code{@hash{}} を付け加える必@c
871 要があります。
872
873 @multitable @columnfractions .2 .45 .35
874 @headitem プロパティ タイプ
875   @tab 規則
876   @tab 例
877 @item Boolean
878   @tab 真か偽のどちらかで、それぞれ @hash{}t と @hash{}f で表されます
879   @tab @code{@hash{}t}, @code{@hash{}f}
880 @item Dimension (譜表スペース)
881   @tab 正の小数 (譜表スペース単位)
882   @tab @code{2.5}, @code{0.34}
883 @item Direction
884   @tab 有効な向きを表す定数またはそれと等価な数値 (-1 から 1 までの小数が許可@c
885 されます)
886   @tab @code{LEFT}, @code{CENTER}, @code{UP},
887        @code{1}, @code{-1}
888 @item Integer
889   @tab 正の整数
890   @tab @code{3}, @code{1}
891 @item List
892   @tab 値のセット。セットの値はスペースで区切られ、前にアポストロフィが付いた@c
893 括弧で囲まれます
894   @tab @code{'(left-edge staff-bar)}, @code{'(1)},
895        @code{'(1.0 0.25 0.5)}
896 @item Markup
897   @tab 有効なマークアップ
898   @tab @code{@bs{}markup @{ \italic "cresc." @}}
899 @item Moment
900   @tab make-moment 関数で構築される全音符の分数
901   @tab @code{(ly:make-moment 1 4)},
902        @code{(ly:make-moment 3 8)}
903 @item Number
904   @tab 正または負の小数
905   @tab @code{3.5}, @code{-2.45}
906 @item (数の) Pair
907   @tab @q{スペース . スペース} で区切られ、前にアポストロフィが付いた括弧で囲@c
908 まれた 2 つの数値
909   @tab @code{'(2 . 3.5)}, @code{'(0.1 . -3.2)}
910 @item Symbol
911   @tab プロパティに許可されているシンボルのセットのいずれかであり、前にアポロ@c
912 ストロフィを付けます
913   @tab @code{'italic}, @code{'inside}
914 @item Unknown
915   @tab 手続き。何のアクションも起こさない場合は @code{@hash{}f}
916   @tab @code{bend::print}, @code{ly:text-interface::print},
917        @code{@hash{}f}
918 @item Vector
919   @tab 前にアポストロフィ-ハッシュ @code{'@hash{}} が付いた括弧で囲まれた 3 要@c
920 素のリスト
921   @tab @code{'@hash{}(@hash{}t @hash{}t @hash{}f)}
922 @end multitable
923
924
925 @seealso
926 学習マニュアル: @ref{Scheme tutorial}
927
928
929 @node Appearance of objects
930 @section Appearance of objects
931
932 いくつかの例を使ってこれまでに学んだことを練習して、譜刻される楽譜の見た目を変@c
933 更するためにどのように調整が使われるのかを見ていきましょう。
934
935
936 @menu
937 * Visibility and color of objects::
938 * Size of objects::
939 * Length and thickness of objects::
940 @end menu
941
942
943 @node Visibility and color of objects
944 @subsection Visibility and color of objects
945
946 教育目的の楽譜では、ある要素を省略した楽譜を譜刻して、学生にそれを付け足させる@c
947 という訓練にしたいと思うかもしれません。簡単な例として、その訓練とは小節線の無@c
948 い楽譜だと仮定してみましょう。しかしながら、通常、小節線は自動的に挿入されま@c
949 す。どうやって小節線が譜刻されることを防ぐのでしょうか?
950
951 このことに挑戦する前に、オブジェクト プロパティは@emph{インタフェイス}と呼ばれ@c
952 るものにグループ化されているということを思い出してください -- @ref{Properties 
953 found in interfaces} を参照してください。これはあるグラフィカル オブジェクトを@c
954 調整するために一緒に使用されるかもしれないプロパティをグループ化したものです -- 
955 あるオブジェクトに対してインタフェイス内のプロパティの 1 つを使うことが許可さ@c
956 れるのなら、他のプロパティも許可されます。あるオブジェクトはいくつかのインタ@c
957 フェイス内にあるプロパティを使用し、別のオブジェクトはそれとは別のインタフェイ@c
958 ス内にあるプロパティを使用します。ある特定のグラフィカルオブジェクトによって使@c
959 用されるプロパティを保持しているインタフェイスは、そのグラフィカル オブジェク@c
960 トについて記述している内部リファレンス ページの最後にリスト アップされていて、@c
961 それらのプロパティはそれらのインタフェイスを参照することによって閲覧できます。
962
963 グラフィカル オブジェクトについての情報を見つけ出す方法を @ref{Properties of 
964 layout objects} で説明しました。同じアプローチを使って、内部リファレンスで小節@c
965 線を譜刻するレイアウト オブジェクトを見つけ出します。@emph{バックエンド}を経由@c
966 して@emph{すべてのレイアウト オブジェクト}に行くと、そこに @code{BarLine} と呼@c
967 ばれるレイアウト オブジェクトがあることがわかります。そのレイアウト オブジェク@c
968 トのプロパティには小節線の可視性をコントロールする 2 つのプロパティが含まれて@c
969 います: @code{break-visibility} と @code{stencil} です。さらに、@code{BarLine} 
970 はインタフェイスのいくつかをサポートしています。@code{grob-interface} もサポー@c
971 トされていて、そこには @code{transparent} プロパティと @code{color} プロパティ@c
972 が含まれています。これらすべてが小節線の可視性に影響を与えます (そしてもちろ@c
973 ん、拡大解釈すれば他の多くのレイアウト オブジェクトにも影響を与えます)。次はこ@c
974 れらのプロパティをそれぞれ見ていきましょう。
975
976
977 @subheading stencil
978
979 @cindex stencil property
980
981 このプロパティは譜刻すべきシンボル (グリフ) を指定することによって小節線の見た@c
982 目を制御します。他の多くのプロパティでも共通に言えますが、このプロパティの値に 
983 @code{@hash{}f} をセットすることによって何も譜刻させなくすることができます。で@c
984 はやってみましょう。以前と同様に、暗黙のコンテキスト @code{Voice} は省略します:
985
986 @cindex BarLine, example of overriding
987 @cindex stencil property, example
988
989 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
990 {
991   \time 12/16
992   \override BarLine #'stencil = ##f
993   c4 b8 c d16 c d8 |
994   g, a16 b8 c d4 e16 |
995   e8
996 }
997 @end lilypond
998
999 小節線はまだ譜刻されています。何が間違っているのでしょうか?内部リファレンスに@c
1000 戻って、@code{BarLine} のプロパティを記述しているページを読み返してください。@c
1001 そのページの先頭に @qq{BarLine オブジェクトは Bar_engraver によって作成されます} 
1002 と記述されています。@code{Bar_engraver} ページに行ってください。そのページの最@c
1003 後で、@code{Bar_engraver} を保持するコンテキストがリスト アップされています。@c
1004 それらのコンテキストのタイプはすべて @code{Staff} です。ですから、@c
1005 @code{@bs{}override} コマンドが予期したように機能しなかったのは、@code{BarLine} 
1006 はデフォルトの @code{Voice} コンテキストの中にはいなかったからなのです。コンテ@c
1007 キストが間違って指定された場合、そのコマンドは機能しません。エラー メッセージ@c
1008 は生成されず、ログ ファイルには何もログが残りません。正しいコンテキストを付け@c
1009 加えることによってコマンドを修正してみましょう:
1010
1011 @cindex BarLine, example of overriding
1012 @cindex stencil property, example
1013
1014 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1015 {
1016   \time 12/16
1017   \override Staff.BarLine #'stencil = ##f
1018   c4 b8 c d16 c d8 |
1019   g, a16 b8 c d4 e16 |
1020   e8
1021 }
1022 @end lilypond
1023
1024 今度は小節線が消えました。
1025
1026
1027 @subheading break-visibility
1028
1029 @cindex break-visibility property
1030
1031 内部リファレンスの @code{BarLine} のプロパティから @code{break-visibility} プ@c
1032 ロパティには 3 つのブール値からなるベクトルが必要であることがわかります。これ@c
1033 らはそれぞれ、小節線が行の最後、行の途中、行の最初に譜刻されるかどうかを制御し@c
1034 ます。以下の例ではすべての小節線を消したいので、必要となる値は 
1035 @code{'@hash{}(@hash{}f @hash{}f @hash{}f)} です。それではやってみましょう。@c
1036 @code{Staff} コンテキストを含めることを忘れないでください。また、この値を書く@c
1037 ときに括弧を始める前に @code{@hash{}'@hash{}} を付ける必要があることにも注意し@c
1038 てください。@code{'@hash{}} はベクトルを導入するときに値の一部として必要とさ@c
1039 れ、先頭の @code{@hash{}} は @code{@bs{}override} コマンドの中で常に値の前に置@c
1040 くことが必要とされます。
1041
1042 @cindex BarLine, example of overriding
1043 @cindex break-visibility property, example
1044
1045 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1046 {
1047   \time 12/16
1048   \override Staff.BarLine #'break-visibility = #'#(#f #f #f)
1049   c4 b8 c d16 c d8 |
1050   g, a16 b8 c d4 e16 |
1051   e8
1052 }
1053 @end lilypond
1054
1055 今度もすべての小節線が消えました。
1056
1057
1058 @subheading transparent
1059
1060 @cindex transparent property
1061 @cindex transparency
1062
1063 内部リファレンスの @code{grob-interface} ページにあるプロパティから 
1064 @code{transparent} プロパティはブール値であることがわかります。これはグラフィ@c
1065 カル オブジェクトを透明にする場合には @code{@hash{}t} にセットします。次の例で@c
1066 は、小節線ではなく拍子記号を不可視にしてみましょう。そうするには、まず、拍子記@c
1067 号のグラフィカル オブジェクト名を見つける必要があります。@code{TimeSignature} 
1068 レイアウト オブジェクトのプロパティを見つけるために内部リファレンスの @q{すべ@c
1069 てのレイアウト オブジェクト} ページに戻ってください。@code{TimeSigunature} は 
1070 @code{Time_signature_engraver} によって作り出され、さらに、@c
1071 @code{Time_signature_engraver} は @code{Staff} コンテキストに含まれ、さらに、@c
1072 @code{Staff} コンテキストは @code{grob-interface} をサポートしているということ@c
1073 がわかります。そのため、拍子記号を透明にするためのコマンドは以下のようになりま@c
1074 す:
1075
1076 @cindex TimeSignature, example of overriding
1077 @cindex transparent property, example
1078
1079 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1080 {
1081   \time 12/16
1082   \override Staff.TimeSignature #'transparent = ##t
1083   c4 b8 c d16 c d8 |
1084   g, a16 b8 c d4 e16 |
1085   e8
1086 }
1087 @end lilypond
1088
1089 @noindent
1090 拍子記号は消えました。しかしながら、このコマンドは拍子記号があるべき場所に隙間@c
1091 を残しています。たぶん、これは学生がその部分を埋めるための練習としては望ましい@c
1092 でしょうが、他の状況ではこの隙間は望ましくありません。この隙間を取り除くには、@c
1093 拍子記号の @code{transparent} の代わりにステンシル (型、型紙) を @code{@hash{}f} 
1094 にセットします:
1095
1096 @cindex TimeSignature, example of overriding
1097 @cindex stencil property, example
1098
1099 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1100 {
1101   \time 12/16
1102   \override Staff.TimeSignature #'stencil = ##f
1103   c4 b8 c d16 c d8 |
1104   g, a16 b8 c d4 e16 |
1105   e8
1106 }
1107 @end lilypond
1108
1109 @noindent
1110 違いは明白です: ステンシルを @code{@hash{}f} にセットすると、オブジェクト自体@c
1111 が削除されます。一方、オブジェクトを @code{transparent} (透明) にするとそのオ@c
1112 ブジェクトは消えますが、オブジェクトは不可視になっただけです。
1113
1114
1115 @subheading color
1116
1117 @cindex color property
1118
1119 最後に、小節線の色を白にすることによって小節線を不可視にしてみましょう。(これ@c
1120 には白い小節線が譜表線と交差したところで譜表線を見えたり見えなくしてしまうかも@c
1121 しれないという問題があります。以下のいくつかの例で、このことを予測することはで@c
1122 きないと思うかもしれません。そうなる理由と、それを制御する方法についての詳細@c
1123 は、@ruser{Painting objects white} でカバーされています。しかしここでは色につ@c
1124 いて学んでいるところなので、オブジェクトを白で描くことの限界を受け入れるだけに@c
1125 してください。)
1126
1127 @code{grob-interface} はカラー プロパティの値はリストであると指定しています。@c
1128 しかしながら、そのリストが何であるべきなのかの説明はありません。カラー プロパ@c
1129 ティで必要とされるリストは実際のところ内部ユニットの中にある値のリストです。し@c
1130 かし、内部ユニットの中にある値を知らなくても済むように、カラーを指定するための@c
1131 手段がいくつか用意されています。最初の方法は @ruser{List of colors} にある最初@c
1132 の表でリスト アップされている @q{標準} のカラーの 1 つを使用する方法です。小節@c
1133 線を白にするには以下のように記述します:
1134
1135 @cindex BarLine, example of overriding
1136 @cindex color property, example
1137
1138 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1139 {
1140   \time 12/16
1141   \override Staff.BarLine #'color = #white
1142   c4 b8 c d16 c d8 |
1143   g, a16 b8 c d4 e16 |
1144   e8
1145 }
1146 @end lilypond
1147
1148 @noindent
1149 今度も再び小節線は見えなくなりました。@emph{white} の前にアポストロフィは付か@c
1150 ないということに注意してください -- これはシンボルではなく@emph{関数}です。こ@c
1151 の関数が呼び出されると、この関数はカラーを白にセットするために必要とされる内部@c
1152 値のリストを提供します。標準カラー リストにある他のカラーもまた関数です。これ@c
1153 が機能していることをあなた自身が納得するために、カラーをこのリストの中にある他@c
1154 の関数の 1 に変更しようと思うかもしれません。
1155
1156 @cindex color, X11
1157 @cindex X11 colors
1158
1159 @funindex x11-color
1160
1161 カラーを変えるための 2 番目の方法は、@ruser{List of colors} の 2 番目のリスト@c
1162 の中にある X11 カラー名のリストを使用する方法です。しかしながら、以下のよう@c
1163 に、これらの前には X11 カラー名を内部値のリストに変更するもう 1 つの関数 -- 
1164 @code{x11-color} -- がなければなりません:
1165
1166 @cindex BarLine, example of overriding
1167 @cindex color property, example
1168
1169 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1170 {
1171   \time 12/16
1172   \override Staff.BarLine #'color = #(x11-color 'white)
1173   c4 b8 c d16 c d8 |
1174   g, a16 b8 c d4 e16 |
1175   e8
1176 }
1177 @end lilypond
1178
1179 @noindent
1180 この場合、関数 @code{x11-color} はシンボルを引数として扱うので、シンボルの前に@c
1181 はアポストロフィをつけなくてはならず、@code{x11-color} とシンボルは括弧で囲ま@c
1182 れていなければならないということに注意してください。
1183
1184 @cindex rgb colors
1185 @cindex color, rgb
1186
1187 @funindex rgb-color
1188
1189 まだ 3 番目の方法が残っています。これは RGB 値を内部カラーに変換する 
1190 @code{rgb-color} 関数を使用する方法です。この関数は赤、緑、青の輝度を表す 3 つ@c
1191 の引数をとります。これらの引数は 0 から 1 までの値をとります。ですから、カラー@c
1192 を赤にセットする場合の値は @code{(rgb-color 1 0 0)} となり、白の場合は 
1193 @code{(rgb-color 1 1 1)} となります:
1194
1195 @cindex BarLine, example of overriding
1196 @cindex color property, example
1197
1198 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1199 {
1200   \time 12/16
1201   \override Staff.BarLine #'color = #(rgb-color 1 1 1)
1202   c4 b8 c d16 c d8 |
1203   g, a16 b8 c d4 e16 |
1204   e8
1205 }
1206 @end lilypond
1207
1208 最後に、X11 カラー セットの一部であるグレー スケールを用いる方法もあります。グ@c
1209 レー スケールの範囲は黒 @code{'grey0'} から白 @code{'grey100'} まで 1 段階ずつ@c
1210 あります。グレー スケールの使用方法を示すために、例の中にあるすべてのレイアウト 
1211 オブジェクトのカラーをさまざまな濃度のグレーにセットしてみましょう:
1212
1213 @cindex StaffSymbol, example of overriding
1214 @cindex TimeSignature, example of overriding
1215 @cindex Clef, example of overriding
1216 @cindex NoteHead, example of overriding
1217 @cindex Stem, example of overriding
1218 @cindex BarLine, example of overriding
1219 @cindex color property, example
1220 @cindex x11-color, example of using
1221
1222 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1223 {
1224   \time 12/16
1225   \override Staff.StaffSymbol   #'color = #(x11-color 'grey30)
1226   \override Staff.TimeSignature #'color = #(x11-color 'grey60)
1227   \override Staff.Clef          #'color = #(x11-color 'grey60)
1228   \override Voice.NoteHead      #'color = #(x11-color 'grey85)
1229   \override Voice.Stem          #'color = #(x11-color 'grey85)
1230   \override Staff.BarLine       #'color = #(x11-color 'grey10)
1231   c4 b8 c d16 c d8 |
1232   g, a16 b8 c d4 e16 |
1233   e8
1234 }
1235 @end lilypond
1236
1237 @noindent
1238 各レイアウト オブジェクトに関連付けされているコンテキストに注意してください。@c
1239 これらのコンテキストを正しく取得することが重要であり、そうしなければコマンドは@c
1240 機能しません!コンテキストの中には特定のエングラーバが置かれているということを@c
1241 忘れないでください。エングラーバに対するデフォルト コンテキストを見つけ出すに@c
1242 は、内部リファレンスのレイアウト オブジェクトからスタートして、そこからそれを@c
1243 作り出すエングラーバのページに行きます。エングラーバのページには、通常はどのコ@c
1244 ンテキストにそのエングラーバが含まれているのかが記述されています。
1245
1246
1247 @node Size of objects
1248 @subsection Size of objects
1249
1250 @cindex changing size of objects
1251 @cindex size of objects
1252 @cindex objects, size of
1253 @cindex objects, changing size of
1254
1255 以前の例を見直すことから始めてみましょう (@ref{Nesting music expressions} を参@c
1256 照してください)。そこでは @rglos{ossia} として新たに一時的な譜表を導入する方法@c
1257 が示されています。
1258
1259 @cindex alignAboveContext property, example
1260 @cindex @code{\with}, example
1261
1262 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1263 \new Staff ="main" {
1264        \relative g' {
1265          r4 g8 g c4 c8 d |
1266          e4 r8
1267          <<
1268            { f c c }
1269            \new Staff \with {
1270              alignAboveContext = #"main" }
1271            { f8 f c }
1272          >>
1273          r4 |
1274        }
1275      }
1276 @end lilypond
1277
1278 通常、オッシアは音部記号と拍子記号無しで記述され、メインの譜表よりもわずかに小@c
1279 さく譜刻されます。今度は、すでに音部記号と拍子記号を削除する方法を知っています 
1280 -- 以下のようにそれぞれのステンシルを @code{@hash{}f} にセットするだけです:
1281
1282 @cindex alignAboveContext property, example
1283 @cindex @code{\with}, example
1284 @cindex stencil property, example
1285 @cindex Clef, example of overriding
1286 @cindex TimeSignature, example of overriding
1287
1288 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1289 \new Staff ="main" {
1290   \relative g' {
1291     r4 g8 g c4 c8 d |
1292     e4 r8
1293     <<
1294       { f c c }
1295       \new Staff \with {
1296         alignAboveContext = #"main"
1297       }
1298       {
1299         \override Staff.Clef #'stencil = ##f
1300         \override Staff.TimeSignature #'stencil = ##f
1301         { f8 f c }
1302       }
1303     >>
1304     r4 |
1305   }
1306 }
1307 @end lilypond
1308
1309 @noindent
1310 ここで、@code{@bs{}with} 節の後にある追加の括弧のペアが、その括弧に囲まれてい@c
1311 るオーバライドと音楽がオッシア譜表に適用されることを保証するために、必要となり@c
1312 ます。
1313
1314 しかし、@code{@bs{}with} を使った譜表コンテキストの変更と @code{@bs{}override} 
1315 を使った音部記号と拍子記号のステンシルの変更との違いは何なのでしょうか?主な違@c
1316 いは、@code{@bs{}with} 節の中で行われた変更はそのコンテキストが作成されるとき@c
1317 に行われ、そのコンテキストでは@strong{デフォルト}値として残ります。一方、音楽@c
1318 の中に埋め込まれた @code{@bs{}set} コマンドや @code{@bs{}override} コマンドは@c
1319 動的です -- それらは音楽のある特定のポイントに同期して変更を行います。変更が 
1320 @code{@bs{}unset} や @code{@bs{}revert} を使ってセットを解除されたり元に戻され@c
1321 た場合、デフォルト値 -- これは @code{@bs{}with} 節でセットされていた場合はその@c
1322 値、そうでない場合は通常のデフォルト値 -- に戻ります。
1323
1324 いくつかのコンテキスト プロパティは @code{@bs{}with} 節でのみ変更可能です。こ@c
1325 れらは、コンテキストが作成された後では、変更されることのないプロパティです。@c
1326 @code{alignAboveContext} とそのパートナー @code{alignBelowContext} がそのよう@c
1327 なプロパティです -- いったん譜表が作成されると、譜表のアラインメントは決定さ@c
1328 れ、それを後で変更しようとすることには意味がありません。
1329
1330 レイアウト オブジェクトのデフォルト値は @code{@bs{}with} 節でセットすることも@c
1331 できます。通常の @code{@bs{}override} コマンドをコンテキスト名を省いて使用する@c
1332 だけです。コンテキスト名を省略するのは、そのコンテキストは明らかに 
1333 @code{@bs{}with} 節が変更しようとしているコンテキストだからです。実際、@c
1334 @code{@bs{}with} 節の中でコンテキストを指定するとエラーが発生します。
1335
1336 それでは上記の例を以下のように書き換えます:
1337
1338 @cindex alignAboveContext property, example
1339 @cindex @code{\with}, example
1340 @cindex Clef, example of overriding
1341 @cindex TimeSignature, example of overriding
1342
1343 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1344 \new Staff ="main" {
1345   \relative g' {
1346     r4 g8 g c4 c8 d |
1347     e4 r8
1348     <<
1349       { f c c }
1350       \new Staff \with {
1351         alignAboveContext = #"main"
1352         % Don't print clefs in this staff
1353         \override Clef #'stencil = ##f
1354         % Don't print time signatures in this staff
1355         \override TimeSignature #'stencil = ##f
1356       }
1357         { f8 f c }
1358     >>
1359     r4 |
1360   }
1361 }
1362 @end lilypond
1363
1364 最後に、レイアウト オブジェクトのサイズを変更してみます。
1365
1366 いくつかのレイアウト オブジェクトはある書体から選択されたグリフとして作成され@c
1367 ます。これには音符の玉、臨時記号、マークアップ、音部記号、拍子記号、強弱記号、@c
1368 歌詞が含まれます。それらのサイズは、これから見ていくように、@code{font-size} 
1369 プロパティを変更することによって変更されます。スラーやタイのような他のレイアウト 
1370 オブジェクト -- 一般には、スパナ オブジェクト (spanner objects) -- は個々に描@c
1371 かれるため、@code{font-size} プロパティとは関係がありません。一般に、それらの@c
1372 オブジェクトはそれらを取り付けられるオブジェクトからサイズを決定する (訳者: 例@c
1373 えば、スラーはそのスラーが付着する音符からそのスラーのサイズを決定する) ので、@c
1374 通常はサイズを手動で変更する必要はありません。さらに、ステムや小節線の長さ、@c
1375 ビームや他の線の太さ、譜表線の間隔などといった他のプロパティはすべて特別な方法@c
1376 で変更する必要があります。
1377
1378 オッシアの例に戻って、まず @code{font-size} を変更してみましょう。これを行うには 
1379 2 通りの方法があります。以下のようなコマンドで @code{NoteHead} のような各オブ@c
1380 ジェクト タイプのフォント サイズを変更する:
1381
1382 @example
1383 \override NoteHead #'font-size = #-2
1384 @end example
1385
1386 あるいは、@code{@bs{}set} を使って特別なプロパティ @code{fontSize} を設定する@c
1387 か、それを @code{@bs{}with} 節に含める (ただし、@code{@bs{}set} は含めません) 
1388 ことによってすべてのフォントのサイズを変更します:
1389
1390 @example
1391 \set fontSize = #-2
1392 @end example
1393
1394 これらの命令文は両方ともフォント サイズを前の値から 2 段階減らします。各段階で@c
1395 サイズはおよそ 12% 増減します。
1396
1397 それではオッシアの例でフォント サイズを変更してみましょう:
1398
1399 @cindex alignAboveContext property, example
1400 @cindex @code{\with}, example
1401 @cindex Clef, example of overriding
1402 @cindex TimeSignature, example of overriding
1403 @cindex fontSize property, example
1404
1405 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1406 \new Staff ="main" {
1407   \relative g' {
1408     r4 g8 g c4 c8 d |
1409     e4 r8
1410     <<
1411       { f c c }
1412       \new Staff \with {
1413         alignAboveContext = #"main"
1414         \override Clef #'stencil = ##f
1415         \override TimeSignature #'stencil = ##f
1416         % Reduce all font sizes by ~24%
1417         fontSize = #-2
1418       }
1419         { f8 f c }
1420     >>
1421     r4 |
1422   }
1423 }
1424 @end lilypond
1425
1426 これでもまだ完璧ではありません。音符の玉とフラグは小さくなりましたが、ステムは@c
1427 それに対して長すぎ、譜表線は離れすぎています。これらをフォント サイズの減少に@c
1428 比例してスケール ダウンさせる必要があります。次のサブ セクションでそれを行う方@c
1429 法について議論します。
1430
1431
1432 @node Length and thickness of objects
1433 @subsection Length and thickness of objects
1434
1435 @cindex distances
1436 @cindex thickness
1437 @cindex length
1438 @cindex magstep
1439 @cindex size, changing
1440 @cindex stem length, changing
1441 @cindex staff line spacing, changing
1442
1443 LilyPond では距離と長さは一般に譜表スペース -- 譜表の中の隣り合う線の間隔 -- 
1444 で測ります (特別な場合では、譜表スペースの半分で測ることもあります)。一方、た@c
1445 いていの @code{thickness} プロパティは @code{line-thickness} と呼ばれる内部プ@c
1446 ロパティを単位として測ります。例えば、デフォルトでは、ヘアピン (訳者: 強弱記号) 
1447 の線の太さは 1 単位の @code{line-thickness} であり、音符のステムの 
1448 @code{thickness} は 1.3 です。けれども、それとは単位の異なる太さプロパティがあ@c
1449 るということにも注意してください。例えば、ビームの太さプロパティは譜表スペース@c
1450 で測ります。
1451
1452 それでは、どうやって長さをフォント サイズに比例させるのでしょうか?これは、ま@c
1453 さにこの目的のために提供されている @code{magstep} と呼ばれる特別な関数の助けを@c
1454 借りることによって達成できます。この関数は引数を 1 つ -- フォント サイズの変化 
1455 (前の例では @hash{}-2) -- をとり、他のオブジェクトの縮小に比例したスケーリング 
1456 ファクタを返します。以下のように使用します:
1457
1458 @cindex alignAboveContext property, example
1459 @cindex @code{\with}, example
1460 @cindex Clef, example of overriding
1461 @cindex TimeSignature, example of overriding
1462 @cindex fontSize property, example
1463 @cindex StaffSymbol, example of overriding
1464 @cindex magstep function, example of using
1465 @cindex staff-space property, example
1466 @cindex stencil property, example
1467
1468 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1469 \new Staff ="main" {
1470   \relative g' {
1471     r4 g8 g c4 c8 d |
1472     e4 r8
1473     <<
1474       { f c c }
1475       \new Staff \with {
1476         alignAboveContext = #"main"
1477         \override Clef #'stencil = ##f
1478         \override TimeSignature #'stencil = ##f
1479         fontSize = #-2
1480         % Reduce stem length and line spacing to match
1481         \override StaffSymbol #'staff-space = #(magstep -2)
1482       }
1483         { f8 f c }
1484     >>
1485     r4 |
1486   }
1487 }
1488 @end lilypond
1489
1490 @noindent
1491 ステムの長さと他の多くの長さに関係するプロパティは常に @code{staff-space} プロ@c
1492 パティの値と比例関係になるよう算出されるため、それらの長さも自動的にスケール 
1493 ダウンされます。これはオッシアの垂直方向のスケールだけに効果を及ぼすということ@c
1494 に注意してください -- 水平方向のスケールは、メインの音楽と同期するよう、メイン@c
1495 の音楽のレイアウトによって決定されるため、水平方向のスケールは 
1496 @code{staff-space} の変更によっていかなる影響も受けません。もちろん、メインの@c
1497 音楽のすべてのスケールがこの方法で変更された場合、水平方向のスペースも影響を受@c
1498 けます。このことについては、後のレイアウト セクションで議論します。
1499
1500 そして、これでオッシアの作成は完了です。他のすべてのオブジェクトのサイズと長さ@c
1501 が類似の方法で変更されるかもしれません。
1502
1503 上記の例のようなスケールのちょっとした変更に対して、小節線、ビーム、ヘアピン、@c
1504 スラーなどのさまざまな描画線の太さは通常はグローバルな調節を必要としません。あ@c
1505 る特定のレイアウト オブジェクトの太さを調節する必要がある場合、それを達成する@c
1506 最良の方法はそのオブジェクトの @code{thickness} プロパティをオーバライドするこ@c
1507 とです。スラーの太さを変更する例は @ref{Properties of layout objects} で示され@c
1508 ています。すべての描画オブジェクト (つまり、フォントから作り出されるオブジェク@c
1509 トではないもの) の太さが同様の方法で変更されるかもしれません。
1510
1511
1512 @node Placement of objects
1513 @section Placement of objects
1514
1515
1516 @menu
1517 * Automatic behavior::
1518 * Within-staff objects::
1519 * Outside-staff objects::
1520 @end menu
1521
1522
1523 @node Automatic behavior
1524 @subsection Automatic behavior
1525
1526 @cindex within-staff objects
1527 @cindex outside-staff objects
1528 @cindex objects, within-staff
1529 @cindex objects, outside-staff
1530
1531 音楽表記には譜表に属するオブジェクトがいくつかあり、他のオブジェクトは譜表の外@c
1532 側に置かれるべきです。それらはそれぞれ譜表内部オブジェクトと譜表外部オブジェク@c
1533 トと呼ばれます。
1534
1535 譜表内部オブジェクトは譜表上に置かれます -- 音符の玉、ステム、臨時記号などで@c
1536 す。通常、それらの位置は音楽自体によって決定されます -- 譜表内部オブジェクトは@c
1537 譜表のある特定の線と同じ垂直位置に置かれたり、そこに置かれるべき他のオブジェク@c
1538 トにくっつけられたりします。近接する和音の中にある音符の玉、ステム、臨時記号の@c
1539 衝突は普通は自動的に回避されます。これから見ていくように、この自動配置を変更す@c
1540 ることができるコマンドとオーバライドがあります。
1541
1542 譜表の外部にあるオブジェクトには、リハーサル記号、テキスト、強弱記号などがあり@c
1543 ます。LilyPond が持つ譜表外部オブジェクトの垂直位置のルールは、譜表外部オブ@c
1544 ジェクトをできるだけ譜表の近くに、しかし他のオブジェクトと衝突しない程度の近さ@c
1545 に置くというものです。以下で示すように、LilyPond はオブジェクトを配置する順番@c
1546 を決定するために @code{outside-staff-priority} プロパティを使用します。
1547
1548 最初に、LilyPond はすべての譜表内部オブジェクトを配置します。それから、@c
1549 @code{outside-staff-priority} に従って譜表外部オブジェクトを並べます。譜表外部@c
1550 オブジェクトは最小の @code{outside-staff-priority} を持つオブジェクトから順番に 
1551 1 つずつ並べられ、すでに配置されたオブジェクトと衝突しないように配置されます。@c
1552 つまり、2 つの譜表外部オブジェクトが同じスペースを巡って競合する場合、より小さな 
1553 @code{outside-staff-priority} を持つオブジェクトが譜表の近くに配置されます。2 
1554 つのオブジェクトが同じ @code{outside-staff-priority} を持つ場合、先に発生する@c
1555 オブジェクトが譜表の近くに配置されます。
1556
1557 以下の例では、すべてのマークアップ テキストが同じ優先度を持っています (なぜな@c
1558 ら、優先度が明示的にセットされていないからです)。@q{Text3} が自動的に譜表の近@c
1559 く、@q{Text2} のすぐ下に納まるよう配置されていることに注意してください。
1560
1561 @cindex markup example
1562
1563 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1564 c2^"Text1"
1565 c^"Text2"
1566 c^"Text3"
1567 c^"Text4"
1568 @end lilypond
1569
1570 デフォルトでは、譜も互いにできるだけ近くなるよう配置されます (最小間隔に従いま@c
1571 す)。音符が隣接する譜表に向かって長く突き出てている場合、譜を離さないと表記が@c
1572 重なり合ってしまう場合にのみ譜は離されます。以下の例は譜の調整によって音符が 
1573 @q{ぴったりと納まる} 様子を示しています:
1574
1575 @lilypond[quote,ragged-right,verbatim]
1576 <<
1577   \new Staff {
1578     \relative c' { c a, }
1579   }
1580   \new Staff {
1581     \relative c'''' { c a, }
1582   }
1583 >>
1584 @end lilypond
1585
1586
1587 @node Within-staff objects
1588 @subsection Within-staff objects
1589
1590 これまでにコマンド @code{\voiceXXX} がスラー、タイ、運指法記号、ステムの向きに@c
1591 依存する他のすべてに対してどのように影響を与えるかを見てきました。これらのコマ@c
1592 ンドは、多声部音楽を記述しているときに上下する旋律を見分けられるようにすること@c
1593 を可能にするために不可欠なものです。しかしながら、この自動機能をオーバライドす@c
1594 る必要がある場合もあります。このオーバライドは音楽全体に対しても、個々の音符に@c
1595 対してもできます。この自動機能を制御しているプロパティは各レイアウト オブジェ@c
1596 クトの @code{direction} プロパティです。まず、これは何をするのかを説明し、それ@c
1597 から、作成済みのコマンドをいくつか紹介します。それらのコマンドを使うと、一般的@c
1598 な変更のための明示的なオーバライドをコードしなくて済みます。
1599
1600
1601 スラーやタイのようなレイアウト オブジェクトはカーブを描き、曲がり、上下しま@c
1602 す。ステムやフラグのような他のオブジェクトも上下の向きによって位置が左右しま@c
1603 す。@code{direction} がセットされているときは、これは自動的に制御されます。
1604
1605 @cindex down
1606 @cindex up
1607 @cindex center
1608 @cindex neutral
1609
1610 以下の例は、小節 1 でステムのデフォルトの振る舞いを示しています。高い位置にあ@c
1611 る音符のステムは下向きで、低い位置にある音符のステムは上向きです。続いて 4 つ@c
1612 の音符のステムをすべて強制的に下向きにし、4 つの音符のステムをすべて強制的に上@c
1613 向きにし、最後に 4 つの音符のステムをデフォルトに戻します。
1614
1615 @cindex Stem, example of overriding
1616 @cindex direction property, example
1617
1618 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1619 a4 g c a
1620 \override Stem #'direction = #DOWN
1621 a g c a
1622 \override Stem #'direction = #UP
1623 a g c a
1624 \revert Stem #'direction
1625 a g c a
1626 @end lilypond
1627
1628 ここで定数 @code{DOWN} と @code{UP} を使っています。これらはそれぞれ値 @code{-1} 
1629 と @code{+1} を持ち、定数の代わりにそれらの数値を使うこともできまはす。さらに値 
1630 @code{0} を使う場合もあります。この値はステムでは @code{UP} を意味するものとし@c
1631 て扱われますが、いくつかのオブジェクトでは @q{center} という意味になります。値 
1632 @code{0} を持つ定数に @code{CENTER} があります。
1633
1634 しかしながら、これらの明示的なオーバライドは普通は使われません。もっと簡単で定@c
1635 義済みのコマンドが利用可能だからです。ここに一般的なコマンドの表を挙げます。そ@c
1636 れぞれのコマンドの意味が明白でない場合は、そのコマンドの意味を述べています。
1637
1638 @multitable @columnfractions .2 .2 .25 .35
1639 @headitem 下/左
1640   @tab 上/右
1641   @tab 元に戻す
1642   @tab 効果
1643 @item @code{\arpeggioArrowDown}
1644   @tab @code{\arpeggioArrowUp}
1645   @tab @code{\arpeggioNormal}
1646   @tab 矢印が下に付く、上に付く、付かない
1647 @item @code{\dotsDown}
1648   @tab @code{\dotsUp}
1649   @tab @code{\dotsNeutral}
1650   @tab 譜表線を避けるための移動方向
1651 @item @code{\dynamicDown}
1652   @tab @code{\dynamicUp}
1653   @tab @code{\dynamicNeutral}
1654   @tab
1655 @item @code{\phrasingSlurDown}
1656   @tab @code{\phrasingSlurUp}
1657   @tab @code{\phrasingSlurNeutral}
1658   @tab Note: スラー コマンドとは別になります
1659 @item @code{\slurDown}
1660   @tab @code{\slurUp}
1661   @tab @code{\slurNeutral}
1662   @tab
1663 @item @code{\stemDown}
1664   @tab @code{\stemUp}
1665   @tab @code{\stemNeutral}
1666   @tab
1667 @item @code{\textSpannerDown}
1668   @tab @code{\textSpannerUp}
1669   @tab @code{\textSpannerNeutral}
1670   @tab スパナとして挿入されるテキストが譜表の下/上にくる
1671 @item @code{\tieDown}
1672   @tab @code{\tieUp}
1673   @tab @code{\tieNeutral}
1674   @tab
1675 @item @code{\tupletDown}
1676   @tab @code{\tupletUp}
1677   @tab @code{\tupletNeutral}
1678   @tab 連符記号が音符の下/上にくる
1679 @end multitable
1680
1681 これらの定義済みコマンドの前には @code{@bs{}once} が付か@strong{ない}かもしれ@c
1682 ません。コマンドの効果を単一の音符に制限したい場合、等価の @code{@bs{}once 
1683 @bs{}override} コマンドを使用するか、あるいは、定義済みコマンドを使用して、効@c
1684 果を受けた音符の後に対応する @code{@bs{}xxxNeutral} コマンドを置かなければなり@c
1685 ません。
1686
1687 @subheading Fingering
1688
1689 @cindex fingering, placement
1690 @cindex fingering, chords
1691
1692 単一の音符に対する運指法記号の配置も @code{direction} プロパティによって制御で@c
1693 きますが、@code{direction} を変更しても和音の運指法記号は影響を受けません。こ@c
1694 れから見ていくように、和音の中の個々の音符の運指法記号を制御するための特別なコ@c
1695 マンドがあります。このコマンドを使うことで運指法記号を各音符の上、下、左、右に@c
1696 配置することができます。
1697
1698 まず、単一の音符の運指法記号に対する @code{direction} を効果を示します。最初の@c
1699 小節はデフォルト状態で、その後で @code{DOWN} と @code{UP} を指定したときの効果@c
1700 を示します:
1701
1702 @cindex Fingering, example of overriding
1703 @cindex direction property, example
1704
1705 @lilypond[quote,verbatim,relative=2]
1706 c-5 a-3 f-1 c'-5
1707 \override Fingering #'direction = #DOWN
1708 c-5 a-3 f-1 c'-5
1709 \override Fingering #'direction = #UP
1710 c-5 a-3 f-1 c'-5
1711 @end lilypond
1712
1713 しかしながら、@code{direction} プロパティをオーバライドすることは、手動で運指@c
1714 法記号を音符の上または下に配置するもっとも簡単な方法ではありません。運指法番号@c
1715 の前に @code{-} の代わりに @code{_} または @code{^} を使う方が普通は適切です。@c
1716 ここで、上記の例にこの方法を用いた例を挙げます:
1717
1718 @cindex fingering example
1719
1720 @lilypond[quote,verbatim,relative=2]
1721 c-5 a-3 f-1 c'-5
1722 c_5 a_3 f_1 c'_5
1723 c^5 a^3 f^1 c'^5
1724 @end lilypond
1725
1726 @code{direction} プロパティは和音では無視されますが、方向を示す接頭辞 @code{_} 
1727 と @code{^} は機能します。以下で示すように、デフォルトでは、運指法記号は和音の@c
1728 音符の上と下の両方に自動的に配置されます:
1729
1730 @cindex fingering example
1731
1732 @lilypond[quote,verbatim,relative=2]
1733 <c-5 g-3>
1734 <c-5 g-3 e-2>
1735 <c-5 g-3 e-2 c-1>
1736 @end lilypond
1737
1738 @noindent
1739 しかし、以下で示すように、運指法番号のすべてまたはいずれかを手動で強制的に和音@c
1740 の上または下に配置するために、これはオーバライドされるかもしれません:
1741
1742 @cindex fingering example
1743
1744 @lilypond[quote,verbatim,relative=2]
1745 <c-5 g-3 e-2 c-1>
1746 <c^5 g_3 e_2 c_1>
1747 <c^5 g^3 e^2 c_1>
1748 @end lilypond
1749
1750 @code{\set fingeringOrientations} コマンドを使うことによって和音の中にある個々@c
1751 の音符の運指法記号の配置をより細かく制御することさえできます。このコマンドの@c
1752 フォーマットは以下のようなものです:
1753
1754 @example
1755 @code{\set fingeringOrientations = #'([up] [left/right] [down])}
1756 @end example
1757
1758 @noindent
1759 @code{fingeringOrientations} は @code{Voice} コンテキストのプロパティであり、@c
1760 @code{New_fingering_engraver} によって作成、使用されるため、@code{\set} が使用@c
1761 されます。
1762
1763 このプロパティには 1 つから 3 つまでの値のリストがセットされるかもしれません。@c
1764 このプロパティは運指法記号を上 (リストに @code{up} がある場合)、下 (リストに 
1765 @code{down} がある場合)、左 (リストに @code{left} がある場合。リストに 
1766 @code{right} がある場合は右) に配置します。逆に配置位置がリストされていない場@c
1767 合、その位置に運指法記号は配置されません。LilyPond はこれらの制約を受け取り、@c
1768 後に続く和音の音符への運指法記号をうまく配置します。@code{left} と @code{right} 
1769 は相互排他的であるということに注意してください -- 運指法記号は左右のどちらかに@c
1770 しか配置されないか、どちらにも配置されません。
1771
1772 @warning{このコマンドを使って単一の音符への運指法記号の配置をコントロールする@c
1773 には、その音符を角括弧で囲んで単一音符の和音として記述する必要があります。}
1774
1775 いくつか例を挙げます:
1776
1777 @cindex fingering example
1778 @cindex @code{\set}, example of using
1779 @cindex fingeringOrientations property, example
1780
1781 @lilypond[quote,fragment,ragged-right,verbatim,relative=1]
1782 \set fingeringOrientations = #'(left)
1783 <f-2>
1784 < c-1  e-2 g-3 b-5 > 4
1785 \set fingeringOrientations = #'(left)
1786 <f-2>
1787 < c-1  e-2 g-3 b-5 > 4
1788 \set fingeringOrientations = #'(up left down)
1789 <f-2>
1790 < c-1  e-2 g-3 b-5 > 4
1791 \set fingeringOrientations = #'(up left)
1792 <f-2>
1793 < c-1  e-2 g-3 b-5 > 4
1794 \set fingeringOrientations = #'(right)
1795 <f-2>
1796 < c-1  e-2 g-3 b-5 > 4
1797 @end lilypond
1798
1799 @noindent
1800 運指法記号が少し込み合っているように見える場合は、@code{font-size} でサイズを@c
1801 下げることができます。デフォルト値は内部リファレンスの @code{Fingering} オブ@c
1802 ジェクトのページから @code{-5} であることがわかるので、@code{-7} にセットして@c
1803 みましょう:
1804
1805 @lilypond[quote,fragment,ragged-right,verbatim,relative=1]
1806 \override Fingering #'font-size = #-7
1807 \set fingeringOrientations = #'(left)
1808 <f-2>
1809 < c-1  e-2 g-3 b-5 > 4
1810 \set fingeringOrientations = #'(left)
1811 <f-2>
1812 < c-1  e-2 g-3 b-5 > 4
1813 \set fingeringOrientations = #'(up left down)
1814 <f-2>
1815 < c-1  e-2 g-3 b-5 > 4
1816 \set fingeringOrientations = #'(up left)
1817 <f-2>
1818 < c-1  e-2 g-3 b-5 > 4
1819 \set fingeringOrientations = #'(right)
1820 <f-2>
1821 < c-1  e-2 g-3 b-5 > 4
1822 @end lilypond 
1823
1824
1825 @node Outside-staff objects
1826 @subsection Outside-staff objects
1827
1828 譜表外部オブジェクトは自動的に衝突を回避するよう配置されます。小さな値の 
1829 @code{outside-staff-priority} プロパティを持つオブジェクトは譜表の近くに配置さ@c
1830 れ、他の譜表外部オブジェクトは衝突を避けるのに必要な分だけ離されます。@c
1831 @code{outside-staff-priority} は @code{grob-interface} の中で定義されているた@c
1832 め、すべてのレイアウト  オブジェクトのプロパティです。デフォルトでは、すべての@c
1833 譜表内部オブジェクトの @code{outside-staff-priority} は @code{@hash{}f} にセッ@c
1834 トされていて、譜表外部オブジェクトが作成されたときにその譜表外部オブジェクトの 
1835 @code{outside-staff-priority} に適当な数値がセットされます。以下の表はデフォル@c
1836 トで @code{Staff} コンテキストまたは @code{Voice} コンテキストの中に配置される@c
1837 いくつかの一般的な譜表外部オブジェクトのデフォルトの 
1838 @code{outside-staff-priority} 値を示しています。
1839
1840 @multitable @columnfractions .3 .3 .3
1841 @headitem レイアウト オブジェクト
1842   @tab 優先度
1843   @tab 以下のオブジェクトの配置を制御する:
1844 @item @code{MultiMeasureRestText}
1845   @tab @code{450}
1846   @tab 全休符上のテキスト
1847 @item @code{TextScript}
1848   @tab @code{450}
1849   @tab マークアップ テキスト
1850 @item @code{OttavaBracket}
1851   @tab @code{400}
1852   @tab オッターバ (オクターブを上下させる記号) の囲み
1853 @item @code{TextSpanner}
1854   @tab @code{350}
1855   @tab テキスト スパナ
1856 @item @code{DynamicLineSpanner}
1857   @tab @code{250}
1858   @tab すべての強弱記号
1859 @item @code{VoltaBracketSpanner}
1860   @tab @code{100}
1861   @tab Volta (番号付きのリピート) の囲み
1862 @item @code{TrillSpanner}
1863   @tab @code{50}
1864   @tab トリル記号
1865 @end multitable
1866
1867 これらのうちのいくつかのデフォルトでの配置を示している例を挙げます。
1868
1869 @cindex text spanner
1870 @cindex ottava bracket
1871
1872 @funindex \startTextSpan
1873 @funindex startTextSpan
1874 @funindex \stopTextSpan
1875 @funindex stopTextSpan
1876
1877 @cindex TextSpanner, example of overriding
1878 @cindex bound-details property, example
1879
1880 @lilypond[quote,fragment,ragged-right,verbatim,relative=1]
1881 % Set details for later Text Spanner
1882 \override TextSpanner #'(bound-details left text)
1883     = \markup { \small \bold Slower }
1884 % Place dynamics above staff
1885 \dynamicUp
1886 % Start Ottava Bracket
1887 \ottava #1
1888 c' \startTextSpan
1889 % Add Dynamic Text
1890 c\pp
1891 % Add Dynamic Line Spanner
1892 c\<
1893 % Add Text Script
1894 c^Text
1895 c c
1896 % Add Dynamic Text
1897 c\ff c \stopTextSpan
1898 % Stop Ottava Bracket
1899 \ottava #0
1900 c, c c c
1901 @end lilypond
1902
1903 この例はテキスト スパナ -- 音楽の上に置かれる延長線付きのテキスト -- の作成方@c
1904 法についても示しています。スパナは @code{@bs{}startTextSpan} コマンドから 
1905 @code{@bs{}stopTextSpan} コマンドまで延び、テキストのフォーマットは 
1906 @code{@bs{}override TextSpanner} コマンドによって定義されます。詳細は 
1907 @ruser{Text spanners} を参照してください。
1908
1909 この例はさらにオッターバ囲みを作成する方法についても示しています。
1910
1911 @cindex tweaking bar number placement
1912 @cindex bar numbers, tweaking placement
1913 @cindex tweaking metronome mark placement
1914 @cindex metronome mark, tweaking placement
1915 @cindex tweaking rehearsal mark placement
1916 @cindex rehearsal marks, tweaking placement
1917
1918 小節番号、メトロノーム記号、リハーサル記号は示されていないということに注意して@c
1919 ください。デフォルトでは、それらは @code{Score} コンテキストの中で作成され、そ@c
1920 れらの @code{outside-staff-priority} は @code{Staff} コンテキストの中で作成さ@c
1921 れるレイアウト オブジェクトとは異なり無視されます。小節番号、メトロノーム記号@c
1922 あるいはリハーサル記号をそれらの @code{outside-staff-priority} に従って配置し@c
1923 たいのなら、@code{Score} コンテキストからそれぞれ @code{Bar_number_engraver}, 
1924 @code{Metronome_mark_engraver}, @code{Mark_engraver} を削除して最上位の 
1925 @code{Staff} コンテキストに置く必要があります。そうした場合、それらの記号には@c
1926 以下のデフォルトの @code{outside-staff-priority} 値が与えられます:
1927
1928 @multitable @columnfractions .3 .3
1929 @headitem レイアウト オブジェクト           @tab 優先度
1930 @item @code{RehearsalMark}        @tab @code{1500}
1931 @item @code{MetronomeMark}        @tab @code{1000}
1932 @item @code{BarNumber}            @tab @code{ 100}
1933 @end multitable
1934
1935 @code{outside-staff-priority} のデフォルト値による配置があなたの望みに合わない@c
1936 場合、いずれかのオブジェクトの優先度をオーバライドすることになるかもしれませ@c
1937 ん。上記の例で、オッターバ囲みをテキスト スパナの下に配置したいとします。すべ@c
1938 きことは、@code{OttavaBracket} は @code{Staff} コンテキストの中に作成されると@c
1939 いうことを思い出し、@code{OttavaBracket} の優先度を内部リファレンスか上記の表@c
1940 で調べて、それを @code{TextSpanner} の値よりも小さくすることです:
1941
1942 @cindex TextSpanner, example of overriding
1943 @cindex bound-details property, example
1944
1945 @lilypond[quote,fragment,ragged-right,verbatim,relative=1]
1946 % Set details for later Text Spanner
1947 \override TextSpanner #'(bound-details left text)
1948     = \markup { \small \bold Slower }
1949 % Place dynamics above staff
1950 \dynamicUp
1951 %Place following Ottava Bracket below Text Spanners
1952 \once \override Staff.OttavaBracket #'outside-staff-priority = #340
1953 % Start Ottava Bracket
1954 \ottava #1
1955 c' \startTextSpan
1956 % Add Dynamic Text
1957 c\pp
1958 % Add Dynamic Line Spanner
1959 c\<
1960 % Add Text Script
1961 c^Text
1962 c c
1963 % Add Dynamic Text
1964 c\ff c \stopTextSpan
1965 % Stop Ottava Bracket
1966 \ottava #0
1967 c, c c c
1968 @end lilypond
1969
1970 @cindex slurs and outside-staff-priority
1971 @cindex slurs and articulations
1972 @cindex articulations and slurs
1973
1974 スラーはデフォルトでは譜表内部オブジェクトに分類されています。しかしながら、譜@c
1975 表の上部に配置された音符に付くスラーはしばしば譜表の上に表示されます。このこと@c
1976 は、スラーがまず最初に配置されるため、アーティキュレーションなどの譜表外部オブ@c
1977 ジェクトをあまりにも高い位置に押し上げる可能性があります。アーティキュレーショ@c
1978 ンの @code{avoid-slur} プロパティに @code{'inside} をセットすることでアーティ@c
1979 キュレーションをスラーよりも内側に配置することができます。しかし、@c
1980 @code{avoid-slur} プロパティはアーティキュレーションの 
1981 @code{outside-staff-priority} が @code{@hash{}f} にセットされている場合にのみ@c
1982 効果を持ちます。代替手段として、スラーの @code{outside-staff-priority} に数値@c
1983 をセットすることによって、スラーを他の譜表外部オブジェクトとともに 
1984 @code{outside-staff-priority} 値に従って配置することができます。ここで、2 つの@c
1985 方法の効果を示す例を挙げます:
1986
1987 @lilypond[quote,verbatim,relative=2]
1988 c4( c^\markup\tiny\sharp d4.) c8
1989 c4(
1990 \once \override TextScript #'avoid-slur = #'inside
1991 \once \override TextScript #'outside-staff-priority = ##f
1992 c^\markup\tiny\sharp d4.) c8
1993 \once \override Slur #'outside-staff-priority = #500
1994 c4( c^\markup\tiny\sharp d4.) c8
1995 @end lilypond
1996
1997 @code{outside-staff-priority} は、個々のオブジェクトの垂直方向の配置を制御する@c
1998 ために使用することもできます。しかしながら、その結果は常に望み通りになるわけで@c
1999 はありません。@ref{Automatic behavior} にある例で @qq{Text3} を @qq{Text4} の@c
2000 上に配置したいとします。すべきことは @code{TextScript} の優先度を内部リファレ@c
2001 ンスか上記の表で調べて、@qq{Text3} の優先度を大きくすることです:
2002
2003 @cindex TextScript, example of overriding
2004 @cindex outside-staff-priority property, example
2005
2006 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
2007 c2^"Text1"
2008 c^"Text2"
2009 \once \override TextScript #'outside-staff-priority = #500
2010 c^"Text3"
2011 c^"Text4"
2012 @end lilypond
2013
2014 これはたしかに @qq{Text3} を @qq{Text4} の上に配置しています。しかし、@c
2015 @qq{Text3}を @qq{Text2} の上に配置して、@qq{Text4} を押し下げてもいます。おそ@c
2016 らく、これはそれほど望ましい結果ではないでしょう。本当に望んでいることは、すべ@c
2017 ての注釈を譜表の上に譜表から同じ距離だけ離して配置することです。そうするには明@c
2018 らかに、テキストのためにもっと広いスペースを確保するために、音符を水平方向に広@c
2019 げる必要があります。これは @code{@bs{}textLengthOn} コマンドを用いることで達成@c
2020 できます。
2021
2022 @subheading \textLengthOn
2023
2024 @cindex notes, spreading out with text
2025
2026 @funindex \textLengthOn
2027 @funindex textLengthOn
2028 @funindex \textLengthOff
2029 @funindex textLengthOff
2030
2031 デフォルトでは、音楽のレイアウトが考慮されている限り、マークアップによって作り@c
2032 出されるテキストは水平方向のスペースと関係しません。@code{@bs{}textLengthOn} 
2033 コマンドはこの動作を逆にして、テキストの配置に便宜をはかる必要がある限り、音符@c
2034 の間隔を広げます:
2035
2036 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
2037 \textLengthOn  % Cause notes to space out to accommodate text
2038 c2^"Text1"
2039 c^"Text2"
2040 c^"Text3"
2041 c^"Text4"
2042 @end lilypond
2043
2044 デフォルトの動作に戻すためのコマンドは @code{@bs{}textLengthOff} です。@c
2045 @code{@bs{}once} は @code{@bs{}override}, @code{@bs{}set}, @code{@bs{}revert} 
2046 それに @code{@bs{}unset} だけに付けることができるということを思い出してくださ@c
2047 い。そのため、@code{@bs{}textLengthOn} で @code{@bs{}once} を使うことはできま@c
2048 せん。
2049
2050 @cindex markup text, allowing collisions
2051
2052 マークアップ テキストは譜表の上に突き出している音符を避けます。このことが望ま@c
2053 しくない場合、優先度を @code{@hash{}f} にセットすることによって上方向への自動@c
2054 再配置を Off にすることになるかもしれません。ここで、マークアップ テキストがそ@c
2055 のような音符とどのように相互作用するかを示す例を挙げます。
2056
2057 @cindex TextScript, example of overriding
2058 @cindex outside-staff-priority property, example
2059
2060 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
2061 % This markup is short enough to fit without collision
2062 c2^"Tex"
2063 c''2
2064 R1
2065 % This is too long to fit, so it is displaced upwards
2066 c,,2^"Text"
2067 c''2
2068 R1
2069 % Turn off collision avoidance
2070 \once \override TextScript #'outside-staff-priority = ##f
2071 c,,2^"Long Text   "
2072 c''2
2073 R1
2074 % Turn off collision avoidance
2075 \once \override TextScript #'outside-staff-priority = ##f
2076 \textLengthOn  % and turn on textLengthOn
2077 c,,2^"Long Text   "  % Spaces at end are honored
2078 c''2
2079 @end lilypond
2080
2081
2082 @subheading Dynamics
2083
2084 @cindex tweaking dynamics placement
2085 @cindex dynamics, tweaking placement
2086
2087 通常、強弱記号は譜表の下に配置されます。しかしながら、@code{dynamicUp} コマン@c
2088 ドを使うことで上に配置されるかもしれません。強弱記号は、その記号が付いている音@c
2089 符と垂直方向の関係で配置され、フレージング スラーや小節番号などの譜表内部オブ@c
2090 ジェクトのすべてよりも下 (あるいは上) に配置されます。このことは、以下の例のよ@c
2091 うに、到底受け入れられない結果を生み出す可能性があります:
2092
2093 @lilypond[quote,fragment,ragged-right,verbatim,relative=1]
2094 \clef "bass"
2095 \key aes \major
2096 \time 9/8
2097 \dynamicUp
2098 bes4.~\f\< \( bes4 bes8 des4\ff\> c16 bes\! |
2099 ees,2.~\)\mf ees4 r8 |
2100 @end lilypond
2101
2102 しかしながら、音符とそれに付けられた強弱記号が互いに近い場合、自動配置は後の方@c
2103 にある強弱記号を譜表から離すことによって衝突を避けます。しかし、以下のかなり不@c
2104 自然な例が示すように、それは最適な配置ではないかもしれません:
2105
2106 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
2107 \dynamicUp
2108 a4\f b\mf c\mp b\p
2109 @end lilypond
2110
2111 @noindent
2112 @q{実際} の音楽で同じような状況があった場合、音符の間隔をもう少し広げて、すべ@c
2113 ての強弱記号が譜表から垂直方向に同じだけ離れるようにする方が望ましいかもしれま@c
2114 せん。マークアップ テキストの場合は @code{@bs{}textLengthOn} コマンドを用いる@c
2115 ことによってそうすることができますが、強弱記号には等価のコマンドがありません。@c
2116 そのため、@code{@bs{}override} コマンドを用いてそれを達成する方法を見出す必要@c
2117 があります。
2118
2119 @subheading Grob sizing
2120
2121 @cindex grob sizing
2122 @cindex sizing grobs
2123
2124 まず最初に、グラフィカル オブジェクトのサイズがどのように決定されるかを学ばな@c
2125 くてはなりません。すべてのグラフィカル オブジェクトの内部では参照ポイントが定@c
2126 義され、それはそれらの親オブジェクトとの相対位置を決定するために使用されます。@c
2127 このポイントは親オブジェクトから垂直方向に @code{X-offset}、垂直方向に 
2128 @code{Y-offset} 離れた位置になります。オブジェクトの水平方向の広がりは数値のペア 
2129 @code{X-extent} で与えられ、そのペアはオブジェクトの左端と右端の参照ポイントと@c
2130 の相対関係について述べています。垂直方向の広がりも同様に数値のペア 
2131 @code{Y-extent} によって与えられます。これらは @code{grob-interface} をサポー@c
2132 トするすべてのグラフィカル オブジェクトが持つプロパティです。
2133
2134 @cindex @code{extra-spacing-width}
2135
2136 デフォルトでは、譜表外部オブジェクトには 0 の幅が与えられているため、水平方向@c
2137 で重なる可能性があります。これは @code{extra-spacing-width} に @code{'(+inf.0 . 
2138 -inf.0)} をセットすることによって、左端の広がりにプラス無限大、右端の広がりに@c
2139 マイナス無限大を付け加えるというトリックによって達成されています。そのため、譜@c
2140 表外部オブジェクトが水平方向で重ならないことを保証するには、@c
2141 @code{extra-spacing-width} の値を @code{'(0 . 0)} にオーバライドする必要があり@c
2142 ます。これにより、本当の幅が明らかになります。以下は強弱記号テキストに対してこ@c
2143 れを行うコマンドです:
2144
2145 @example
2146 \override DynamicText #'extra-spacing-width = #'(0 . 0)
2147 @end example
2148
2149 @noindent
2150 これが前の例で機能するかどうかを見てみましょう:
2151
2152 @cindex DynamicText, example of overriding
2153 @cindex extra-spacing-width property, example
2154
2155 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
2156 \dynamicUp
2157 \override DynamicText #'extra-spacing-width = #'(0 . 0)
2158 a4\f b\mf c\mp b\p
2159 @end lilypond
2160
2161 @noindent
2162 確かに強弱記号の再配置をストップさせています。しかし、2 つの問題が残っていま@c
2163 す。強弱記号を互いにもう少し離すべきであり、それらは譜表から同じ距離にあるほう@c
2164 が望ましいです。最初の問題は簡単に解決できます。@code{extra-spacing-width} を 0 
2165 にする代わりに、もう少し大きな値を与えるのです。単位は 2 本の譜表線の間隔なの@c
2166 で、左端を 1 単位の半分だけ左に移動させ、右端を 1 単位の半分だけ右に移動させる@c
2167 と解決になります:
2168
2169 @cindex DynamicText, example of overriding
2170 @cindex extra-spacing-width property, example
2171
2172 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
2173 \dynamicUp
2174 % Extend width by 1 staff space
2175 \override DynamicText #'extra-spacing-width = #'(-0.5 . 0.5)
2176 a4\f b\mf c\mp b\p
2177 @end lilypond
2178
2179 @noindent
2180 これで前よりも良くなりました。しかし、強弱記号が音符に合わせて上下するよりも、@c
2181 同じベースラインで揃っている方が望ましいでしょう。それを行うためのプロパティは 
2182 @code{staff-padding} であり、後に続くセクションでカバーされています。
2183
2184
2185 @node Collisions of objects
2186 @section Collisions of objects
2187
2188
2189 @menu
2190 * Moving objects::
2191 * Fixing overlapping notation::
2192 * Real music example::
2193 @end menu
2194
2195
2196 @node Moving objects
2197 @subsection Moving objects
2198
2199 @cindex moving overlapping objects
2200 @cindex moving colliding objects
2201 @cindex moving colliding grobs
2202 @cindex objects, moving colliding
2203 @cindex grobs, moving colliding
2204
2205 これを聞いて驚くかもしれませんが、LilyPond は完璧ではありません。いくつかの表@c
2206 記要素が重なりある可能性があります。これは遺憾なことですが、実際にはごく稀で@c
2207 す。通常、オブジェクトを移動させる必要性は読みやすさや美しさのためです -- オブ@c
2208 ジェクトの周りにもう少しスペースを多く/少なくとった方がより良くなるといった場@c
2209 合です。
2210
2211 表記の重なりを解決する主要なアプローチが 3 つあります。それらは以下の順番で考@c
2212 慮されるべきです:
2213
2214 @enumerate
2215 @item
2216 重なり合っているオブジェクトの 1 つの @strong{direction} を @ref{Within-staff 
2217 objects} でリストアップした内部オブジェクトのための定義済みコマンドを用いて変@c
2218 更することになるかもしれません。ステム、スラー、ビーム、タイ、強弱記号、テキス@c
2219 ト、連符はこの方法で容易に再配置できるかもしれません。この方法の限界は配置の仕@c
2220 方の選択肢が 2 つしかないことであり、どちらも適当でないかもしれません。
2221
2222 @item
2223 LilyPond がレイアウト オブジェクトを配置するときに使用する@strong{オブジェクト 
2224 プロパティ}を @code{@bs{}override} を用いて変更することになるかもしれません。@c
2225 オブジェクト プロパティに変更を加えることの利点は、(a) スペースをとる必要があ@c
2226 る場合に他のいくつかのオブジェクトは自動的に移動させられます、(b) 1 回のオーバ@c
2227 ライドを同じオブジェクト タイプのインスタンスすべてに適用することができます。@c
2228 変更するプロパティには以下のものが含まれます:
2229
2230 @itemize
2231
2232 @item
2233 @code{direction}
2234
2235 これはすでに詳しくカバーされています -- @ref{Within-staff objects} を参照して@c
2236 ください。
2237
2238 @item
2239 @code{padding}, @code{left-padding},
2240 @code{right-padding}, @code{staff-padding}
2241
2242 @cindex padding
2243 @cindex left-padding property
2244 @cindex padding property
2245 @cindex right-padding property
2246 @cindex staff-padding property
2247
2248 あるオブジェクトが配置されるとき、そのオブジェクトの @code{padding} プロパティ@c
2249 が、そのオブジェクトとそのオブジェクトに最も隣接するオブジェクトの端との間に置@c
2250 かれる間隔を指定します。@strong{配置される最中}のオブジェクトの @code{padding} 
2251 値が使用されるということに注意してください。すでに配置されたオブジェクトの 
2252 @code{padding} 値は無視されます。@code{padding} によって指定された間隔は 
2253 @code{side-position-interface} をサポートするオブジェクトすべてに適用すること@c
2254 ができます。
2255
2256 臨時記号のグループの配置は、@code{padding} の代わりに、@code{left-padding} と 
2257 @code{right-padding} によって制御されます。これらのプロパティは 
2258 @code{AccidentalPlacement} オブジェクトの中にあり、注意すべきことに、そのオブ@c
2259 ジェクトは @strong{Staff} コンテキストの中にあります。譜刻プロセスでは、音符の@c
2260 玉が最初に譜刻され、臨時記号 (がある場合は) が次に音符の玉の左側に付け加えられ@c
2261 ます。このとき、臨時記号と音符の玉の間隔は @code{right-padding} プロパティに@c
2262 よって指定されます。そのため、@code{AccidentalPlacement} オブジェクトの 
2263 @code{right-padding} プロパティだけが臨時記号の配置に影響を与えます。
2264
2265 @code{staff-padding} プロパティは @code{padding} プロパティと深い関わりがあり@c
2266 ます: @code{padding} プロパティは、@code{side-position-interface} をサポートす@c
2267 るオブジェクトとそれに最隣接する他のオブジェクト (一般には音符や譜表線) との間@c
2268 のスペースの最小量を制御します。一方、@code{staff-padding} は常に譜表の外側に@c
2269 配置されるレイアウト オブジェクトにのみ適用されます -- これは譜表の外側に配置@c
2270 されるオブジェクトと譜表の間に挿入されるべきスペースの最小量を制御します。@c
2271 @code{staff-paddin} は譜表ではなく音符との相対関係で配置されるオブジェクトには@c
2272 影響を与えないということに注意してください。そのようなオブジェクトに対して 
2273 @code{staff-padding} のオーバライドを行ったとしてもエラーは起きないかもしれま@c
2274 せんが、無視されます。
2275
2276 あなたが再配置しようとしているオブジェクトに対して求められる @code{padding} プ@c
2277 ロパティはどれなのかを見つけるには、内部リファレンスに戻ってそのオブジェクトの@c
2278 プロパティを調べる必要があります。@code{padding} プロパティはあなたが再配置し@c
2279 ようとしているオブジェクトの中には無いかもしれないということに注意してくださ@c
2280 い。その場合は、そのオブジェクトに関係があるオブジェクトを調べてください。
2281
2282 すべての @code{padding} 値は譜表スペースで測られます。たいていのオブジェクトで@c
2283 は、この値はデフォルトで約 1.0 かそれ以下にセットされています (それぞれのオブ@c
2284 ジェクトで値はさまざまです)。間隔を大きく (あるいは小さく) する必要がある場@c
2285 合、その値はオーバライドされるかもしれません。
2286
2287 @item
2288 @code{self-alignment-X}
2289
2290 @cindex self-alignment-X property
2291
2292 このプロパティを使うことで、親オブジェクトの参照ポイントに従って、オブジェクト@c
2293 を左、右、中央に揃えることができます。このプロパティは 
2294 @code{self-alignment-interface} をサポートするオブジェクトすべてに対して使用す@c
2295 ることができます。一般に、テキストを保持するオブジェクトです。値は @code{Left}, 
2296 @code{RIGHT}, @code{CENTER} です。代替手段として、@code{-1} から @code{+1} ま@c
2297 での数値を指定することもできます。@code{-1} は左揃えであり、@code{+1} は右揃@c
2298 え、その間の数値は左揃えから右揃えへのテキストを移動させます (訳者: @code{-0.5} 
2299 であれば、左揃えと中央揃えの中間ということ)。@code{1} よりも大きな数値を指定す@c
2300 ることでテキストをさらに左へ、@code{-1} よりも小さな数値を指定することでテキス@c
2301 トをさらに右へ移動させることができます。この値を @code{1} 増減することによる移@c
2302 動量はそのテキストの長さの半分です。
2303
2304 @item
2305 @code{extra-spacing-width}
2306
2307 @cindex extra-spacing-width property
2308
2309 このプロパティは @code{item-interface} をサポートするオブジェクトすべてで利用@c
2310 可能です。このプロパティは 2 つの数値をとり、最初の数値はオブジェクトの左側に@c
2311 余白を追加し、2 番目の数値はオブジェクトの右側に余白を追加します。負値はオブ@c
2312 ジェクトの端を左に移動させ、正値は右に移動させます。そのため、オブジェクトを広@c
2313 くするには、最初の数値を負値にして、2 番目の数値を正値にする必要があります。す@c
2314 べてのオブジェクトが両方の数値を遵守するわけではないということに注意してくださ@c
2315 い。例えば、@code{Accidental} オブジェクトは最初の数値 (左端) にしか注意を払い@c
2316 ません。
2317
2318 @item
2319 @code{staff-position}
2320
2321 @cindex staff-position property
2322
2323 @code{staff-position} は @code{staff-symbol-referencer-interface} のプロパティ@c
2324 です。これは、譜表との相対関係で配置されるオブジェクトによってサポートされま@c
2325 す。このプロパティはオブジェクトの垂直方向の位置を、譜表の中央にある譜表線から@c
2326 譜表スペースの半分を単位として、指定します。このプロパティは複数小節に亘る休@c
2327 符、タイ、異なるボイスの中にある音符といったレイアウト オブジェクトの衝突を解@c
2328 決する場合に有用です。
2329
2330 @item
2331 @code{force-hshift}
2332
2333 @cindex force-hshift property
2334
2335 和音の中で近接して配置された音符や異なるボイスの中にあって同時に起こる音符は、@c
2336 音符の玉の衝突を避けるために、2 つ (場合によってはそれ以上) の列に配置されま@c
2337 す。この列は音符列と呼ばれ、その列に音符をレイアウトするために @code{NoteColumn} 
2338 と呼ばれるオブジェクトが作成されます。
2339
2340 @code{force-hshift} プロパティは @code{NoteColumn} のプロパティです (実際には 
2341 @code{note-column-interface} のプロパティです)。このプロパティを変更することで@c
2342 音符列を、音符列特有の単位 -- すなわち、最初のボイスの中にある音符の音符玉の幅 
2343 -- に従って、移動させることができます。このプロパティは、通常の 
2344 @code{@bs{}shiftOn} コマンド (@ref{Explicitly instantiating voices} を参照して@c
2345 ください) が音符の衝突を解決できないような複雑な状況で使用されるべきです。この@c
2346 目的のためには、@code{extra-offset} プロパティを用いるよりも @code{force-hshift} 
2347 プロパティを用いる方が好ましいです。なぜなら、譜表スペースを単位とした距離を算@c
2348 出する必要が無く、@code{NoteColumn} の内外に音符を移動させることは音符玉のマー@c
2349 ジといった他のアクションに影響を与えるからです。
2350
2351 @end itemize
2352
2353 @item
2354 最後に、他の方法がすべて失敗した場合、オブジェクトを手動で譜表の中央線からの垂@c
2355 直方向の相対位置に従って、あるいは新たに設定した位置との距離に従って、再配置す@c
2356 ることになるかもしれません。この方法の欠点は、再配置のための正確な値を算出する@c
2357 必要がある -- しばしば、その算出はそれぞれのオブジェクトに対して個々に、トライ@c
2358 &エラーで行われます -- 必要があるということ、さらに、この方法による移動は 
2359 LilyPond が他のオブジェクトをすべて配置した後に行われるため、ユーザはその結果@c
2360 として起こるかもしれない衝突をすべて回避する責任があるということです。しかし、@c
2361 この方法の最大の問題点は、音楽が後で変更された場合に、再配置用の値を再び算出す@c
2362 る必要があるということです。このタイプの手動再配置のために使用されるプロパティ@c
2363 は以下のようなものです:
2364
2365 @table @code
2366 @item extra-offset
2367
2368 @cindex extra-offset property
2369
2370 このプロパティは @code{grob-interface} をサポートするレイアウト オブジェクトの@c
2371 いずれかに適用されます。このプロパティはペアになった数値をとり、それぞれの数値@c
2372 は水平方向と垂直方向の移動を指定します。負値はオブジェクトを左または下へ移動さ@c
2373 せます。単位は譜表スペースです。この移動はオブジェクトの譜刻が完了した後に行わ@c
2374 れるため、あるオブジェクトを、任意の位置へ、他のオブジェクトに影響を与えること@c
2375 なく、再配置することができます。
2376
2377 @item positions
2378
2379 @cindex positions property
2380
2381 このプロパティは、ビーム、スラー、連符の傾きと高さを手動で調節するために最も有@c
2382 用なプロパティです。このプロパティはペアになった数値をとり、それぞれの数値は@c
2383 ビーム、スラーなどの左端と右端の位置を譜表の中央線との距離で指定します。単位は@c
2384 譜表スペースです。けれども、スラーとフレージング スラーを任意の値で再配置する@c
2385 ことはできないということに注意してください。LilyPond はまずスラーが取り得る位@c
2386 置のリストを生成し、それからデフォルトでは @qq{最良に見える} スラーを探しま@c
2387 す。@code{positions} がオーバライドされていた場合、そのリストの中からリクエス@c
2388 トされた位置に最も近いスラーが選択されます。
2389 @end table
2390
2391 @end enumerate
2392
2393 あるオブジェクトがこれらのプロパティすべてを持っているわけではありません。内部@c
2394 リファレンスに行き、そのオブジェクトではどのプロパティが利用可能なのかを調べる@c
2395 必要があります。
2396
2397 @multitable @columnfractions .5 .5
2398 @headitem オブジェクト タイプ
2399   @tab オブジェクト名
2400 @item アーティキュレーション (Articulation)
2401   @tab @code{Script}
2402 @item ビーム (Beam)
2403   @tab @code{Beam}
2404 @item 強弱記号 (Dynamic) (垂直方向)
2405   @tab @code{DynamicLineSpanner}
2406 @item 強弱記号 (Dynamic) (水平方向)
2407   @tab @code{DynamicText}
2408 @item 運指法記号 (Fingering)
2409   @tab @code{Fingering}
2410 @item リハーサル / テキスト記号 (Rehearsal / Text mark)
2411   @tab @code{RehearsalMark}
2412 @item スラー (Slur)
2413   @tab @code{Slur}
2414 @item テキスト -- つまり、@code{^"text"} (Text)
2415   @tab @code{TextScript}
2416 @item タイ (Tie)
2417   @tab @code{Tie}
2418 @item 連符 (Tuplet)
2419   @tab @code{TupletBracket}
2420 @end multitable
2421
2422
2423 @node Fixing overlapping notation
2424 @subsection Fixing overlapping notation
2425
2426 今度は、前のセクションで扱ったプロパティが表記の重なりを解決する手助けをどのよ@c
2427 うにできるかを見ていきましょう。
2428
2429 @subheading padding property
2430
2431 @cindex padding
2432 @cindex fixing overlapping notation
2433 @cindex overlapping notation
2434
2435 @code{padding} プロパティに値をセットすることによって、音符とその上または下に@c
2436 譜刻される記号との間の距離を増減することができます。
2437
2438 @cindex Script, example of overriding
2439 @cindex padding property, example
2440
2441 @lilypond[quote,fragment,relative=1,verbatim]
2442 c2\fermata
2443 \override Script #'padding = #3
2444 b2\fermata
2445 @end lilypond
2446
2447 @cindex MetronomeMark, example of overriding
2448 @cindex padding property, example
2449
2450 @lilypond[quote,fragment,relative=1,verbatim]
2451 % This will not work, see below:
2452 \override MetronomeMark #'padding = #3
2453 \tempo 4=120
2454 c1
2455 % This works:
2456 \override Score.MetronomeMark #'padding = #3
2457 \tempo 4=80
2458 d1
2459 @end lilypond
2460
2461 2 番目の例では、ある特定のオブジェクトを扱うのはどのコンテキストなのかを突き止@c
2462 めることが重要であるということに注意してください。@code{MetronomeMark} オブ@c
2463 ジェクトは @code{Score} コンテキストの中で処理されるため、@code{Voice} コンテ@c
2464 キストの中でのプロパティの変更は無視されます。更に詳細を知りたければ、@c
2465 @ruser{Modifying properties} を参照してください。
2466
2467 @code{outside-staff-priority} に従って配置されているオブジェクトの並びの中のあ@c
2468 るオブジェクトの @code{padding} プロパティが増やされた場合、そのオブジェクトと@c
2469 それよりも外側にあるすべてオブジェクトが移動させられます。
2470
2471
2472 @subheading left-padding and right-padding
2473
2474 @cindex left-padding property
2475 @cindex right-padding property
2476
2477 @code{right-padding} プロパティは臨時記号とそれが適用される音符との間のスペー@c
2478 スに影響を与えます。このプロパティを変更することは必ずしも必要ではありません@c
2479 が、以下の例は変更を必要とする状況の 1 つを示しています。B ナチュラルと B フ@c
2480 ラットの両方を保持する和音を譜刻したいとします。あいまいさ (あるいは多義: ここ@c
2481 では B が B ナチュラルと B フラットの両方に解釈できるということ) を避けるため@c
2482 に、音符の前にナチュラル記号とフラット記号の両方を置くことにします。以下に、そ@c
2483 れを達成するための試みをいくつか挙げます:
2484
2485 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
2486 <b bes>
2487 <b! bes>
2488 <b? bes>
2489 @end lilypond
2490
2491 どれもうまくいっていません。2 番目と 3 番目の (和) 音符では 2 つの記号が衝突し@c
2492 ています。
2493
2494 これを達成するための方法の 1 つは、臨時記号のステンシルを、ナチュラル記号とフ@c
2495 ラット記号を望んでいる並びで保持しているマークアップでオーバライドすることで@c
2496 す。以下のように:
2497
2498 @cindex Accidental, example of overriding
2499 @cindex text property, example
2500 @cindex stencil property, example
2501 @cindex AccidentalPlacement, example of overriding
2502 @cindex right-padding property, example
2503
2504 @lilypond[quote,ragged-right,verbatim]
2505 naturalplusflat = \markup { \natural \flat }
2506 \relative c'' {
2507   \once \override Accidental
2508     #'stencil = #ly:text-interface::print
2509   \once \override Accidental #'text = #naturalplusflat
2510   \once \override Score.AccidentalPlacement #'right-padding = #1.5
2511   <b bes>
2512 }
2513 @end lilypond
2514
2515 @noindent
2516 これは必然的に臨時記号のステンシルをオーバライドすることになります。このオーバ@c
2517 ライドについては後々までカバーされません。ステンシル タイプは手続きでなければならず、@c
2518 ここでは @code{Accidental} の @code{text} プロパティの内容 -- フラット記号が後@c
2519 に続くナチュラル記号 -- を譜刻するように変更されています。それらの記号は 
2520 @code{right-padding} のオーバライドによって音符の玉からさらに遠くへ移動させら@c
2521 れています。
2522
2523 @noindent
2524
2525 @subheading staff-padding property
2526
2527 @cindex aligning objects on a baseline
2528 @cindex objects, aligning on a baseline
2529
2530 @code{staff-padding} を使うことで、強弱記号などのオブジェクトを、それらが取り@c
2531 付けられる音符の位置に依存した高さではなく、譜表上のある固定した高さのベースラ@c
2532 インに揃えることができます。このプロパティは @code{DynamicText} のプロパティで@c
2533 はなく、@code{DynamicSpanner} のプロパティです。この理由は、このベースラインは@c
2534 延長スパナを含む@strong{すべて}の強弱起動に等しく適用されるべきだからです。そ@c
2535 のため、これは以前のセクションでの例の中にある強弱記号を揃えるための方法になり@c
2536 ます:
2537
2538 @cindex DynamicText, example of overriding
2539 @cindex extra-spacing-width property, example
2540 @cindex DynamicLineSpanner, example of overriding
2541 @cindex staff-padding property, example
2542
2543 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
2544 \dynamicUp
2545 % Extend width by 1 unit
2546 \override DynamicText #'extra-spacing-width = #'(-0.5 . 0.5)
2547 % Align dynamics to a base line 2 units above staff
2548 \override DynamicLineSpanner #'staff-padding = #2
2549 a4\f b\mf c\mp b\p
2550 @end lilypond
2551
2552
2553 @subheading self-alignment-X property
2554
2555 弦楽器の運指法記号オブジェクトと音符のステムとの衝突を、このプロパティが運指法@c
2556 記号オブジェクトの右端を親の音符の参照ポイントに揃えることによって解決している@c
2557 様子を以下の例は示しています:
2558
2559 @cindex StringNumber, example of overriding
2560 @cindex self-alignment-X property, example
2561
2562 @lilypond[quote,fragment,ragged-right,verbatim,relative=3]
2563 \voiceOne
2564 < a \2 >
2565 \once \override StringNumber #'self-alignment-X = #RIGHT
2566 < a \2 >
2567 @end lilypond
2568
2569 @subheading staff-position property
2570
2571 @cindex object collision within a staff
2572
2573 あるボイスの中にある複数小節に亘る休符は他のボイスの中にある音符と衝突する可能@c
2574 性があります。このような休符は小節線と小節線の間の中央に譜刻されるため、LilyPond 
2575 がそれと衝突するかもしれない音符を突き止めるのは非常に困難です。なぜなら、現在@c
2576 の音符間それに音符-休符間の衝突対応は、同時に起こる音符と休符に対してのみ行わ@c
2577 れるからです。以下に、このタイプの衝突の例を挙げます:
2578
2579 @lilypond[quote,verbatim,fragment,ragged-right, relative=1]
2580 << {c c c c} \\ {R1} >>
2581 @end lilypond
2582
2583 ここでの最良の解決策は、複数小節に亘る休符を下へ移動させることです。なぜなら、@c
2584 その休符はボイス 2 の中にあるからです。@code{\voiceTwo} (すなわち、@c
2585 @code{<<@{...@} \\ @{...@}>>} 構造の 2 番目のボイス) のデフォルト状態では、@c
2586 @code{MultiMeasureRest} の @code{staff-position} は @code{-4} にセットされてい@c
2587 ます。そのため、そのプロパティを、例えば半譜表スペース 4 つ分押し下げるには、@c
2588 @code{-8} に変更する必要があります。
2589
2590 @cindex MultiMeasureRest, example of overriding
2591 @cindex staff-position property, example
2592
2593 @lilypond[quote,verbatim,fragment,ragged-right, relative=1]
2594 <<
2595   {c c c c}
2596 \\
2597   \override MultiMeasureRest #'staff-position = #-8
2598   {R1}
2599 >>
2600 @end lilypond
2601
2602 これは、例えば @code{extra-offset} を使うよりも良い解決方法です。なぜなら、そ@c
2603 の休符の上に加線が自動的に挿入されるからです。
2604
2605 @subheading extra-offset property
2606
2607 @cindex positioning objects
2608 @cindex positioning grobs
2609 @cindex objects, positioning
2610 @cindex grobs, positioning
2611
2612 @code{extra-offset} プロパティは、あるオブジェクトの水平方向と垂直方向の配置を@c
2613 完全に制御します。
2614
2615 以下の例では、2 番目の運指法記号が少し左に、そして 1.8 譜表スペース下に移動さ@c
2616 せられています:
2617
2618
2619 @cindex Fingering, example of overriding
2620 @cindex extra-offset property, example
2621
2622 @lilypond[quote,fragment,relative=1,verbatim]
2623 \stemUp
2624 f-5
2625 \once \override Fingering
2626     #'extra-offset = #'(-0.3 . -1.8)
2627 f-5
2628 @end lilypond
2629
2630
2631 @subheading positions property
2632
2633 @cindex controlling tuplets, slurs, phrasing slurs, and beams manually
2634 @cindex manually controlling tuplets, slurs, phrasing slurs, and beams
2635 @cindex tuplet beams, controlling manually
2636 @cindex slurs, controlling manually
2637 @cindex phrasing slurs, controlling manually
2638 @cindex beams, controlling manually
2639
2640 @code{positions} プロパティは連符、スラー、フレージング スラー、ビームの位置と@c
2641 傾きを手動で制御することを可能にします。ここで、装飾音符に付いたスラーを避けよ@c
2642 うとしているために醜いフレージング スラーを持つ例を挙げます。
2643
2644 @lilypond[quote,verbatim,fragment,ragged-right,relative=1]
2645 r4  \acciaccatura e8\( d8 c ~c d c d\)
2646 @end lilypond
2647
2648 @noindent
2649 フレージング スラーを音符の上へ移動させることで、より良い結果が得られます:
2650
2651 @lilypond[quote,verbatim,fragment,ragged-right,relative=1]
2652 r4
2653 \phrasingSlurUp
2654 \acciaccatura e8\( d8 c ~c d c d\)
2655 @end lilypond
2656
2657 @noindent
2658 しかし、何らかの理由でそうすることができない場合、それに代わる解決策は、@c
2659 @code{positions} プロパティを使ってフレージング スラーの左端を少し下げることで@c
2660 す。この方法でも見栄えの悪さを解決できます。
2661
2662 @cindex PhrasingSlur, example of overriding
2663 @cindex positions property, example
2664
2665 @lilypond[quote,verbatim,fragment,ragged-right,relative=1]
2666 r4
2667 \once \override PhrasingSlur #'positions = #'(-4 . -3)
2668 \acciaccatura
2669 e8\( d8 c ~c d c d\)
2670 @end lilypond
2671
2672 さらに、Chopin の 前奏曲 Op 28 No. 2 の左手の譜の開始部分から取った例を挙げま@c
2673 す。ビームが上部にある音符と衝突しています:
2674
2675 @lilypond[quote,verbatim,fragment,ragged-right]
2676 {
2677 \clef "bass"
2678 << {b,8 ais, b, g,} \\ {e, g e, g} >>
2679 << {b,8 ais, b, g,} \\ {e, g e, g} >>
2680 }
2681 @end lilypond
2682
2683 @noindent
2684 これは、譜表の中央線から 2 譜表スペース上の位置にあるビームの両端を、例えば、3 
2685 に手動で上げることによって解決することができます:
2686
2687 @cindex Beam, example of overriding
2688 @cindex positions property, example
2689
2690 @lilypond[quote,verbatim,fragment,ragged-right]
2691 {
2692   \clef "bass"
2693   <<
2694     \override Beam #'positions = #'(3 . 3)
2695     {b,8 ais, b, g,}
2696   \\
2697     {e, g e, g}
2698   >>
2699   << {b,8 ais, b, g,} \\ {e, g e, g} >>
2700 }
2701 @end lilypond
2702
2703 @noindent
2704 オーバライドの効果は継続して 2 番目のブロックのボイス 1 にも適用されています@c
2705 が、ボイス 2 のビームにはまったく適用されていないということに注意してください。
2706
2707 @subheading force-hshift property
2708
2709 @c FIXME: formatting stuff  (ie not important right now IMO)
2710 @c @a nchor Chopin finally corrected TODOgp
2711
2712 今や、@ref{I'm hearing Voices} の最後で挙げた Chopin の例にどのように修正を加@c
2713 えるべきかを知っています。この例は以下のような状態でした:
2714
2715 @lilypond[quote,verbatim,fragment,ragged-right]
2716 \new Staff \relative c'' {
2717   \key aes \major
2718   <<
2719     { c2 aes4. bes8 } \\
2720     { aes2 f4 fes   } \\
2721     { \voiceFour
2722       <ees c>2
2723       des2
2724     }
2725   >> |
2726   <c ees aes c>1 |
2727 }
2728 @end lilypond
2729
2730 @noindent
2731 最初の和音の下の方にある 2 つの音符 (つまり、3 番目のボイス (ボイス 4) の音符) 
2732 を上の方にある 2 つの音符の音符列からずらすべきではありません。これを修正する@c
2733 には、下の音符の @code{force-hshift} -- これは @code{NoteColumn} のプロパティ@c
2734 です -- を 0 にセットします。2 番目の和音の下の方の音符は、上の方の音符のすぐ@c
2735 右に置くのが最良です。そうするには、この音符の @code{force-hshift} を 0.5 に@c
2736 セットします -- つまり、上の方の音符の音符列から音符玉の幅の半分だけ右にずらし@c
2737 ます。
2738
2739 ここで、最終結果を挙げます:
2740
2741 @cindex NoteColumn, example of overriding
2742 @cindex force-hshift property, example
2743
2744 @lilypond[quote,verbatim,fragment,ragged-right]
2745 \new Staff \relative c'' {
2746   \key aes \major
2747   <<
2748     { c2 aes4. bes8 } \\
2749     { aes2 f4 fes   } \\
2750     { \voiceFour
2751       \once \override NoteColumn #'force-hshift = #0 <ees c>2
2752       \once \override NoteColumn #'force-hshift = #0.5 des2
2753     }
2754   >> |
2755   <c ees aes c>1 |
2756 }
2757 @end lilypond
2758
2759
2760 @node Real music example
2761 @subsection Real music example
2762
2763 調整についてのセクションを、望みの出力を作り出すためにいくつかの調整を必要とす@c
2764 るトリッキーな例を処理するときにとられるステップを示すことで締めくくります。こ@c
2765 の例は、表記についての普通ではない問題を解決するための表記リファレンスの使い方@c
2766 を示すために慎重に選ばれたものです。この例は一般的な譜刻プロセスを代表するもの@c
2767 ではありません。ですから、この例の複雑さでやる気を失わないでください!幸いなこ@c
2768 とに、このように複雑な問題は非常に稀です!
2769
2770 この例は Chopin の Première Ballade, Op. 23 の第 6 - 9 小節からとりました。序@c
2771 盤の Lento から Moderato へと移調する部分です。まず最初に望んでいる出力挙げま@c
2772 すが、例があまりにも複雑になり過ぎないように強弱記号、運指法記号、ペダル記号は@c
2773 省きました。
2774
2775 @c The following should appear as music without code
2776 @c This example should not be indexed
2777 @lilypond[quote,ragged-right]
2778 rhMusic = \relative c'' {
2779   r2
2780   c4.\( g8 |
2781   \once \override Tie #'staff-position = #3.5
2782   bes1~ |
2783   \bar "||"
2784   \time 6/4
2785   \mergeDifferentlyHeadedOn
2786   \mergeDifferentlyDottedOn
2787   bes2.^\markup {\bold "Moderato"} r8
2788   <<
2789     {c,8[ d fis bes a] | }
2790   \\
2791     % Reposition the c2 to the right of the merged note
2792     {c,8~ \once \override NoteColumn #'force-hshift = #1.0
2793     % Move the c2 out of the main note column so the merge will work
2794     \shiftOnn c2}
2795   \\
2796     % Stem on the d2 must be down to permit merging
2797     {s8 \stemDown \once \override Stem #'transparent = ##t d2}
2798   \\
2799     {s4 fis4.}
2800   >>
2801   \mergeDifferentlyHeadedOff
2802   \mergeDifferentlyDottedOff
2803   g2.\)
2804 }
2805
2806 lhMusic = \relative c' {
2807   r2 <c g ees>2( |
2808   <d g, d>1)\arpeggio |
2809   r2. d,,4 r4 r |
2810   r4
2811 }
2812
2813 \score {
2814   \new PianoStaff <<
2815     \new Staff = "RH"  <<
2816       \key g \minor
2817       \rhMusic
2818     >>
2819     \new Staff = "LH" <<
2820       \key g \minor
2821       \clef "bass"
2822       \lhMusic
2823     >>
2824   >>
2825 }
2826 @end lilypond
2827
2828 まず、第 3 小節の右手パートには 4 つのボイスが必要であることに注目します。それ@c
2829 ぞれのボイスは、ビームでつながれた 5 つの 8 分音符、タイで結ばれた C、半音符の D 
2830 -- これは 8 分音符の D とマージされています、付点 4 分音符の F シャープ -- こ@c
2831 れも同じ音高の 8 分音符とマージされています -- です。他の部分はすべて単一のボ@c
2832 イスなので、最も容易な方法は 4 つのボイスを必要になったときに一時的に導入する@c
2833 方法です。一時的に多声にする方法を忘れてしまったのならば、@ref{I'm hearing
2834 Voices} を見てください。音符を 2 つの変数として入力し、譜表構造を @code{Score} 
2835 ブロックの中でセットアップすることから始めて、それで LilyPond がデフォルトでど@c
2836 のような出力を作り出すのか見てみましょう:
2837
2838 @lilypond[quote,verbatim,ragged-right]
2839 rhMusic = \relative c'' {
2840   r2 c4. g8 |
2841   bes1~ |
2842   \time 6/4
2843   bes2. r8
2844   % Start polyphonic section of four voices
2845   <<
2846     {c,8 d fis bes a | }
2847   \\
2848     {c,8~ c2 | }
2849   \\
2850     {s8 d2 | }
2851   \\
2852     {s4 fis4. | }
2853   >>
2854   g2.
2855 }
2856
2857 lhMusic = \relative c' {
2858   r2 <c g ees>2 |
2859   <d g, d>1 |
2860   r2. d,,4 r4 r |
2861   r4
2862 }
2863
2864 \score {
2865   \new PianoStaff <<
2866     \new Staff = "RH"  <<
2867       \key g \minor
2868       \rhMusic
2869     >>
2870     \new Staff = "LH" <<
2871       \key g \minor
2872       \clef "bass"
2873       \lhMusic
2874     >>
2875   >>
2876 }
2877 @end lilypond
2878
2879 すべての音符は間違っていません。しかしながら、見た目は満足とは程遠いものです。@c
2880 タイは移調する拍子記号と衝突していて、第 3 小節のビームの付け方は間違ってい@c
2881 て、音符はマージされておらず、いくつかの表記要素は欠けています。簡単なものから@c
2882 片付けていきましょう。ビームの付け方は手動でビームを挿入することで修正でき、左@c
2883 手パートのスラーと右手パートのフレージング スラーは簡単に追加できます -- なぜ@c
2884 なら、これらはすべてチュートリアルでカバーされているからです。これらの修正を加@c
2885 えると、以下のようになります:
2886
2887 @lilypond[quote,verbatim,ragged-right]
2888 rhMusic = \relative c'' {
2889   r2 c4.\( g8 |
2890   bes1~ |
2891   \time 6/4
2892   bes2. r8
2893   % Start polyphonic section of four voices
2894   <<
2895     {c,8[ d fis bes a] | }
2896   \\
2897     {c,8~ c2 | }
2898   \\
2899     {s8 d2 | }
2900   \\
2901     {s4 fis4. | }
2902   >>
2903   g2.\)
2904 }
2905
2906 lhMusic = \relative c' {
2907   r2 <c g ees>2( |
2908   <d g, d>1) |
2909   r2. d,,4 r4 r |
2910   r4
2911 }
2912
2913 \score {
2914   \new PianoStaff <<
2915     \new Staff = "RH"  <<
2916       \key g \minor
2917       \rhMusic
2918     >>
2919     \new Staff = "LH" <<
2920       \key g \minor
2921       \clef "bass"
2922       \lhMusic
2923     >>
2924   >>
2925 }
2926 @end lilypond
2927
2928 第 1 小節は正しくなりました。第 2 小節にはアルペジオが含まれていて、2 重の小節@c
2929 線で終わります。この学習マニュアルではこれらのことは言及されてこなかったのに、@c
2930 どうやってやればいいのでしょうか?ここで、表記リファレンスに移行する必要があり@c
2931 ます。索引で @q{arpeggio} と @q{bar line} を探せばすぐに、アルペジオは 
2932 @code{@bs{}arpeggio} を和音の後に付け加えることによって作り出され、2 重小節線は 
2933 @code{@bs{}bar "||"} コマンドによって作り出されることがわかります。それは簡単@c
2934 にできます。次に、タイと拍子記号の衝突を修正する必要があります。これはタイを上@c
2935 に移動させる方法が最善です。オブジェクトの移動については以前に @ref{Moving
2936 objects} でカバーしました。そこでは、譜表との相対位置で配置されるオブジェクト@c
2937 は、そのオブジェクトの @code{staff-position} プロパティをオーバライドすること@c
2938 によって、移動させることができると述べられています。このプロパティは譜表スペー@c
2939 スの半分を単位として、譜表の中央線からの距離で指定されます。ですから、以下の以@c
2940 下のオーバライドをタイで結ばれる最初の音符の前に置けば、タイは中央線から 3.5 
2941 半譜表スペースだけ上の位置に移動させられます:
2942
2943 @code{\once \override Tie #'staff-position = #3.5}
2944
2945 これで第 2 小節の修正も完了で、以下のようになります:
2946
2947 @lilypond[quote,verbatim,ragged-right]
2948 rhMusic = \relative c'' {
2949   r2 c4.\( g8 |
2950   \once \override Tie #'staff-position = #3.5
2951   bes1~ |
2952   \bar "||"
2953   \time 6/4
2954   bes2. r8
2955   % Start polyphonic section of four voices
2956   <<
2957     {c,8[ d fis bes a] | }
2958   \\
2959     {c,8~ c2 | }
2960   \\
2961     {s8 d2 | }
2962   \\
2963     {s4 fis4. | }
2964   >>
2965   g2.\)
2966 }
2967
2968 lhMusic = \relative c' {
2969   r2 <c g ees>2( |
2970   <d g, d>1)\arpeggio |
2971   r2. d,,4 r4 r |
2972   r4
2973 }
2974
2975 \score {
2976   \new PianoStaff <<
2977     \new Staff = "RH"  <<
2978       \key g \minor
2979       \rhMusic
2980     >>
2981     \new Staff = "LH" <<
2982       \key g \minor
2983       \clef "bass"
2984       \lhMusic
2985     >>
2986   >>
2987 }
2988 @end lilypond
2989
2990 第 3 小節 -- Moderato セクションの開始部分 -- に取り掛かります。チュートリアルで 
2991 @code{@bs{}markup} コマンドを使ってボールド体のテキストを付け加える方法を示し@c
2992 ましたので、@q{Moderato} をボールド体で付け加えることは容易です。しかし、異な@c
2993 るボイスの中にある音符をマージするにはどうするのでしょうか?ここで、助けを求め@c
2994 て表記リファレンスに移行する必要があります。表記リファレンスで @qq{merge} を探@c
2995 せばすぐに、@ruser{Collision resolution} で玉や付点の付き方が異なる音符をマー@c
2996 ジするためのコマンドにたどり着きます。今回の例では、多声部セクションで両方のタ@c
2997 イプの音符をマージする (異なる玉を持つ音符のマージと、付点の付き方が異なる音符@c
2998 のマージ) 必要があるので、表記リファレンスで見つけた情報を使って、以下のコマン@c
2999 ド:
3000
3001 @example
3002 \mergeDifferentlyHeadedOn
3003 \mergeDifferentlyDottedOn
3004 @end example
3005
3006 @noindent
3007 を多声部セクションの開始点に置き、以下のコマンド:
3008
3009 @example
3010 \mergeDifferentlyHeadedOff
3011 \mergeDifferentlyDottedOff
3012 @end example
3013
3014 @noindent
3015 をセクションの終了点に置きます。これで、例は以下のようになります:
3016
3017 @lilypond[quote,verbatim,ragged-right]
3018 rhMusic = \relative c'' {
3019   r2 c4.\( g8 |
3020   \once \override Tie #'staff-position = #3.5
3021   bes1~ |
3022   \bar "||"
3023   \time 6/4
3024   bes2.^\markup {\bold "Moderato"} r8
3025   \mergeDifferentlyHeadedOn
3026   \mergeDifferentlyDottedOn
3027   % Start polyphonic section of four voices
3028   <<
3029     {c,8[ d fis bes a] | }
3030   \\
3031     {c,8~ c2 | }
3032   \\
3033     {s8 d2 | }
3034   \\
3035     {s4 fis4. | }
3036   >>
3037   \mergeDifferentlyHeadedOff
3038   \mergeDifferentlyDottedOff
3039   g2.\)
3040 }
3041
3042 lhMusic = \relative c' {
3043   r2 <c g ees>2( |
3044   <d g, d>1)\arpeggio |
3045   r2. d,,4 r4 r |
3046   r4
3047 }
3048
3049 \score {
3050   \new PianoStaff <<
3051     \new Staff = "RH"  <<
3052       \key g \minor
3053       \rhMusic
3054     >>
3055     \new Staff = "LH" <<
3056       \key g \minor
3057       \clef "bass"
3058       \lhMusic
3059     >>
3060   >>
3061 }
3062 @end lilypond
3063
3064 オーバライドは 2 つの F シャープの音符をマージしましたが、2 つの D をマージし@c
3065 ませんでした。なぜマージしなかったのでしょうか?その答えは表記リファレンスの同@c
3066 じセクションにあります -- マージされる音符は反対向きのステムを持っていなくては@c
3067 ならず、同じ音符列に 3 つ目の音符がある場合は 2 つの音符をマージさせることはで@c
3068 きません。今回の例では、2 つの D は両方とも上向きのステムを持っていて、3 つ目@c
3069 の音符 -- C -- が存在します。我々は @code{@bs{}stemDown} を用いてステムの向き@c
3070 を変更する方法を知っていて、表記リファレンスも C を移動させる方法について述べ@c
3071 ています -- @code{@bs{}shift} コマンドの 1 つを用いてシフトを行います。しか@c
3072 し、どのシフトを行えばよいのでしょうか?C はシフト off のボイス 2 の中にあり、2 
3073 つの D はボイス 1 とボイス 3 -- それぞれ、シフト off とシフト on -- の中にあり@c
3074 ます。ですから、C が 2 つの D と衝突するのを避けるために、@code{@bs{}shiftOnn} 
3075 を用いて C を更にシフトさせる必要があります。これらの変更を加えると、以下のよ@c
3076 うになります:
3077
3078 @cindex Tie, example of overriding
3079 @cindex staff-position property, example
3080
3081 @lilypond[quote,verbatim,ragged-right]
3082 rhMusic = \relative c'' {
3083   r2 c4.\( g8 |
3084   \once \override Tie #'staff-position = #3.5
3085   bes1~ |
3086   \bar "||"
3087   \time 6/4
3088   bes2.^\markup {\bold "Moderato"} r8
3089   \mergeDifferentlyHeadedOn
3090   \mergeDifferentlyDottedOn
3091   % Start polyphonic section of four voices
3092   <<
3093     {c,8[ d fis bes a] | }
3094   \\
3095     % Move the c2 out of the main note column so the merge will work
3096     {c,8~ \shiftOnn c2 | }
3097   \\
3098     % Stem on the d2 must be down to permit merging
3099     {s8 \stemDown d2 | }
3100   \\
3101     {s4 fis4. | }
3102   >>
3103   \mergeDifferentlyHeadedOff
3104   \mergeDifferentlyDottedOff
3105   g2.\)
3106 }
3107
3108 lhMusic = \relative c' {
3109   r2 <c g ees>2( |
3110   <d g, d>1)\arpeggio |
3111   r2. d,,4 r4 r |
3112   r4
3113 }
3114
3115 \score {
3116   \new PianoStaff <<
3117     \new Staff = "RH"  <<
3118       \key g \minor
3119       \rhMusic
3120     >>
3121     \new Staff = "LH" <<
3122       \key g \minor
3123       \clef "bass"
3124       \lhMusic
3125     >>
3126   >>
3127 }
3128 @end lilypond
3129
3130 もうちょっとです。残っている問題は 2 つだけです: マージされた D の下向きのステ@c
3131 ムはあるべきではなく、C は D の右側に配置した方が良いということです。以前に@c
3132 行った調整からこれらを行う方法を両方とも知っています: ステムを透明にして、@c
3133 @code{force-hshift} プロパティを用いて C を移動させます。ここで、最終結果を示@c
3134 します:
3135
3136 @cindex NoteColumn, example of overriding
3137 @cindex force-hshift property, example
3138 @cindex Stem, example of overriding
3139 @cindex transparent property, example
3140
3141 @lilypond[quote,verbatim,ragged-right]
3142 rhMusic = \relative c'' {
3143   r2
3144   c4.\( g8 |
3145   \once \override Tie #'staff-position = #3.5
3146   bes1~ |
3147   \bar "||"
3148   \time 6/4
3149   bes2.^\markup {\bold "Moderato"} r8
3150   \mergeDifferentlyHeadedOn
3151   \mergeDifferentlyDottedOn
3152   <<
3153     {c,8[ d fis bes a] | }
3154   \\
3155     % Reposition the c2 to the right of the merged note
3156     {c,8~ \once \override NoteColumn #'force-hshift = #1.0
3157     % Move the c2 out of the main note column so the merge will work
3158     \shiftOnn c2}
3159   \\
3160     % Stem on the d2 must be down to permit merging
3161     {s8 \stemDown \once \override Stem #'transparent = ##t d2}
3162   \\
3163     {s4 fis4.}
3164   >>
3165   \mergeDifferentlyHeadedOff
3166   \mergeDifferentlyDottedOff
3167   g2.\)
3168 }
3169
3170 lhMusic = \relative c' {
3171   r2 <c g ees>2( |
3172   <d g, d>1)\arpeggio |
3173   r2. d,,4 r4 r |
3174   r4
3175 }
3176
3177 \score {
3178   \new PianoStaff <<
3179     \new Staff = "RH"  <<
3180       \key g \minor
3181       \rhMusic
3182     >>
3183     \new Staff = "LH" <<
3184       \key g \minor
3185       \clef "bass"
3186       \lhMusic
3187     >>
3188   >>
3189 }
3190 @end lilypond
3191
3192
3193 @node Further tweaking
3194 @section Further tweaking
3195
3196
3197 @menu
3198 * Other uses for tweaks::
3199 * Using variables for tweaks::
3200 * Other sources of information::
3201 * Avoiding tweaks with slower processing::
3202 * Advanced tweaks with Scheme::
3203 @end menu
3204
3205 @node Other uses for tweaks
3206 @subsection Other uses for tweaks
3207
3208 @cindex transparent property, use of
3209 @cindex objects, making invisible
3210 @cindex removing objects
3211 @cindex objects, removing
3212 @cindex hiding objects
3213 @cindex objects, hiding
3214 @cindex invisible objects
3215 @cindex objects, invisible
3216 @cindex tying notes across voices
3217
3218 @subheading Tying notes across voices
3219
3220 以下の例は異なるボイスの中にある音符をタイで結ぶ方法を示しています。通常、タイ@c
3221 で結べるのは同じボイスの中にある 2 つ音符だけです。2 つのボイスを使い、そのう@c
3222 ちの 1 つにタイで結んだ音符を置きます:
3223
3224 @lilypond[quote,fragment,relative=2]
3225 << { b8~ b8\noBeam }
3226 \\ { b[ g8] }
3227 >>
3228 @end lilypond
3229
3230 @noindent
3231 そして、そのボイスの最初の上向きステムを消します。これで、タイはボイスをまた@c
3232 がっているように見えます:
3233
3234 @cindex Stem, example of overriding
3235 @cindex transparent property, example
3236
3237 @lilypond[quote,fragment,relative=2,verbatim]
3238 <<
3239   {
3240     \once \override Stem #'transparent = ##t
3241     b8~ b8\noBeam
3242   }
3243 \\
3244   { b[ g8] }
3245 >>
3246 @end lilypond
3247
3248 ステムは表示されなくなっただけなので、タイの長さが十分ではありません。ステムの 
3249 @code{length} を @code{8} にセットすることでステムを伸ばすことができます:
3250
3251 @lilypond[quote,fragment,relative=2,verbatim]
3252 <<
3253   {
3254     \once \override Stem #'transparent = ##t
3255     \once \override Stem #'length = #8
3256     b8~ b8\noBeam
3257   }
3258 \\
3259   { b[ g8] }
3260 >>
3261 @end lilypond
3262
3263 @subheading Simulating a fermata in MIDI
3264
3265 @cindex stencil property, use of
3266 @cindex fermata, implementing in MIDI
3267
3268 譜表外部オブジェクトを出力から削除しようとする場合、そのオブジェクトの 
3269 @code{transparent} プロパティではなく @code{stencil} プロパティをオーバライド@c
3270 する方が通常は望ましいです。あるオブジェクトの @code{stencil} プロパティを 
3271 @code{@hash{}f} にセットすると、そのオブジェクトは出力から完全に削除されます。@c
3272 このことは、削除されたオブジェクトがそのオブジェクトとの相対位置で配置される他@c
3273 のオブジェクトの配置にまったく影響を及ぼさないということを意味します。
3274
3275 例えば、MIDI 出力でフェルマータをシミュレートするためにメトロノーム設定を変更@c
3276 したいとします。その場合、メトロノーム記号を出力に表示させたくありません。そし@c
3277 て、それが 2 つのシステム (小節とその中にある表記) 間のスペースと、譜表上にあ@c
3278 る隣接する注釈の位置に影響を与えることを望みません。そのため、そのメトロノーム@c
3279 記号の @code{stencil} プロパティを @code{@hash{}f} にセットする方法が最良で@c
3280 す。ここで、2 つの手法の結果を示します:
3281
3282 @cindex MetronomeMark, example of overriding
3283 @cindex transparent property, example
3284
3285 @lilypond[quote,verbatim,ragged-right]
3286 \score {
3287   \relative c'' {
3288     % Visible tempo marking
3289     \tempo 4=120
3290     a4 a a
3291     \once \override Score.MetronomeMark #'transparent = ##t
3292     % Invisible tempo marking to lengthen fermata in MIDI
3293     \tempo 4=80
3294     a\fermata
3295     % New tempo for next section
3296     \tempo 4=100
3297     a a a a
3298   }
3299   \layout { }
3300   \midi { }
3301 }
3302 @end lilypond
3303
3304 @cindex MetronomeMark, example of overriding
3305 @cindex stencil property, example
3306
3307 @lilypond[quote,verbatim,ragged-right]
3308 \score {
3309   \relative c'' {
3310     % Visible tempo marking
3311     \tempo 4=120
3312     a4 a a
3313     \once \override Score.MetronomeMark #'stencil = ##f
3314     % Invisible tempo marking to lengthen fermata in MIDI
3315     \tempo 4=80
3316     a\fermata
3317     % New tempo for next section
3318     \tempo 4=100
3319     a a a a
3320   }
3321   \layout { }
3322   \midi { }
3323 }
3324 @end lilypond
3325
3326 @noindent
3327 両方の手段とも、フェルマータ部分の演奏時間を伸ばすメトロノーム記号を出力から削@c
3328 除していて、両方とも MIDI の演奏に必要な効果を与えています。しかし、1 番目の例@c
3329 の透明なメトロノーム記号がそれに続く拍子指示を上に押し上げているのに対して、2 
3330 番目のメトロノーム記号 (ステンシルが削除されたもの) は押し上げていません。
3331
3332
3333 @node Using variables for tweaks
3334 @subsection Using variables for tweaks
3335
3336 @cindex variables, using for tweaks
3337 @cindex using variables for tweaks
3338 @cindex tweaks, using variables for
3339
3340 オーバライド コマンドはしばしば長く、入力するのが大変なものになります。そし@c
3341 て、それらは完全に正しく記述されなければなりません。同じオーバライドが何度も使@c
3342 用される場合、それらを保持する変数を定義すると非常に役に立ちます。
3343
3344 歌詞の中のある特定の単語をボールド イタリック体で譜刻することによって、それら@c
3345 を強調したいと仮定します。@c
3346 歌詞の中では、@code{@bs{}italic} と @code{@bs{}bold} は (書式を) 変更したい単@c
3347 語や文と一緒に @code{@bs{}markup} ブロックの中に入れた場合にのみ機能しますが、@c
3348 それを毎回入力するのは大変です。@c
3349 埋め込む必要のある単語自体が、2 つのコマンドを簡単な変数を用いて使うことを妨げ@c
3350 ます。代替手段として、@code{@bs{}override} コマンドと @code{@bs{}revert} コマ@c
3351 ンドを使うことはできないでしょうか?
3352
3353 @example
3354 @code{\override Lyrics . LyricText #'font-shape = #'italic}
3355 @code{\override Lyrics . LyricText #'font-series = #'bold}
3356
3357 @code{\revert Lyrics . LyricText #'font-shape}
3358 @code{\revert Lyrics . LyricText #'font-series}
3359 @end example
3360
3361 これらも、強調する必要のある単語がたくさんある場合、入力するのが非常に大変で@c
3362 す。しかしながら、これらは 2 つの変数として定義することが@emph{でき}、それらの@c
3363 変数で単語を囲むことによって使ってその単語を強調することが@emph{できます}。こ@c
3364 れらのオーバライドに変数を用いることのもう 1 つの利点は、ドットの両側にスペー@c
3365 スを置く必要が無いことです。なぜなら、これらのオーバライドは 
3366 @code{@bs{}lyricmode} の中で直接解釈されるわけではないからです。ここで変数を用@c
3367 いる例を挙げますが、実際には早く打ち込めるようにもっと短い変数名を使用します:
3368
3369 @cindex LyricText, example of overriding
3370 @cindex font-shape property, example
3371 @cindex font-series property, example
3372
3373 @lilypond[quote,verbatim]
3374 emphasize = {
3375   \override Lyrics.LyricText #'font-shape = #'italic
3376   \override Lyrics.LyricText #'font-series = #'bold
3377 }
3378 normal = {
3379   \revert Lyrics.LyricText #'font-shape
3380   \revert Lyrics.LyricText #'font-series
3381 }
3382
3383 global = { \time 4/4 \partial 4 \key c \major}
3384 SopranoMusic   = \relative c' { c4 | e4. e8 g4  g  | a a g }
3385 AltoMusic  = \relative c' { c4 | c4. c8 e4  e  | f f e }
3386 TenorMusic = \relative c  { e4 | g4. g8 c4. b8 | a8 b c d e4 }
3387 BassMusic  = \relative c  { c4 | c4. c8 c4  c  | f8 g a b c4 }
3388 VerseOne   = \lyrics { E -- | ter -- nal \emphasize Fa -- ther, \normal | strong to save, }
3389 VerseTwo   = \lyricmode { O | \emphasize Christ, \normal whose voice the | wa -- ters heard, }
3390 VerseThree = \lyricmode { O | \emphasize Ho -- ly Spi -- rit, \normal | who didst brood }
3391 VerseFour  = \lyricmode { O | \emphasize Tri -- ni -- ty \normal of | love and pow'r }
3392
3393 \score {
3394   \new ChoirStaff <<
3395     \new Staff <<
3396       \clef "treble"
3397       \new Voice = "Soprano"  { \voiceOne \global \SopranoMusic }
3398       \new Voice = "Alto" { \voiceTwo \AltoMusic }
3399       \new Lyrics \lyricsto "Soprano" { \VerseOne   }
3400       \new Lyrics \lyricsto "Soprano" { \VerseTwo   }
3401       \new Lyrics \lyricsto "Soprano" { \VerseThree }
3402       \new Lyrics \lyricsto "Soprano" { \VerseFour  }
3403     >>
3404     \new Staff <<
3405       \clef "bass"
3406       \new Voice = "Tenor" { \voiceOne \TenorMusic }
3407       \new Voice = "Bass"  { \voiceTwo \BassMusic  }
3408     >>
3409   >>
3410 }
3411 @end lilypond
3412
3413
3414 @node Other sources of information
3415 @subsection Other sources of information
3416
3417 内部リファレンスは LilyPond についての多くの情報を持っていますが、LilyPond の@c
3418 内部ファイルを調べることによってさらに多くの情報を収集することができます。内部@c
3419 ファイルを探究するには、まずあなたの使っているシステム特有のディレクトリを見つ@c
3420 け出す必要があります。このディレクトリの場所は、(a) あなたが lilypond.org から@c
3421 コンパイル済みのバイナリをダウンロードすることによって LilyPond を手に入れたの@c
3422 か、それとも、パッケージ マネージャから LilyPond をインストールした (つまり、@c
3423 Linux と一緒に配布されたか、fink や cygwin でインストールされた) のか、(b) 
3424 LilyPond はどの OS 上で使用されているのか、に依存します:
3425
3426 @strong{lilypond.org からダウンロードした}
3427
3428 @itemize @bullet
3429 @item Linux
3430
3431 @file{@var{INSTALLDIR}/lilypond/usr/share/lilypond/current/} に進んでください
3432
3433 @item MacOS X
3434
3435 @file{@var{INSTALLDIR}/LilyPond.app/Contents/Resources/share/lilypond/current/}
3436 に進んでください。ターミナルからこのディレクトリへ @code{cd} で移動するか、@c
3437 LilyPond アプリケーション上でコントロール クリックして @q{Show Package Contents} 
3438 を選択します。
3439
3440 @item Windows
3441
3442 @file{@var{INSTALLDIR}/LilyPond/usr/share/lilypond/current/} に進んでくださ@c
3443 い。Windows Explorer を使います。
3444
3445
3446 @end itemize
3447
3448 @strong{パッケージ マネージャからインストールした、あるいは、ソースからコンパ@c
3449 イルした}
3450
3451 @file{@var{PREFIX}/share/lilypond/@var{X.Y.Z}/} に進んでください。@var{PREFIX} 
3452 はパッケージ マネージャか @code{configure} スクリプトによってセットされるもの@c
3453 であり、@var{X.Y.Z} は LilyPond のバージョン番号です。
3454
3455 @smallspace
3456
3457 このディレクトリの中に 2 つの興味深いサブディレクトリがあります:
3458
3459 @itemize
3460 @item @file{ly/} - LilyPond フォーマットに関するファイルを保持しています
3461 @item @file{scm/} -Scheme フォーマットに関するファイルを保持しています
3462 @end itemize
3463
3464 @file{ly/} の中にあるファイルから見ていきましょう。@file{ly/property-init.ly} 
3465 をテキスト エディタで開いてください。@c
3466 エディタはあなたが普段 @code{.ly} ファイルを編集するために使っているもので結構です。@c
3467 このファイルは標準の LilyPond 定義済みコマンド -- @code{@bs{}stemUp} や 
3468 @code{@bs{}slurDotted} など -- のすべての定義を保持しています。1 つまたは複数の 
3469 @code{@bs{}override} コマンドを保持している変数の定義以外のものはないというこ@c
3470 とがわかるでしょう。例えば、@code{@bs{}tieDotted} は以下のように定義されていま@c
3471 す:
3472
3473 @example
3474 tieDotted = @{
3475   \override Tie #'dash-period = #0.75
3476   \override Tie #'dash-fraction = #0.1
3477 @}
3478 @end example
3479
3480 あなたがこれらのデフォルト値を好まない場合、これらの定義済みコマンドを容易に再@c
3481 定義することができます -- 他の変数と同様に、入力ファイルの先頭で定義します。
3482
3483 以下のファイルは @file{ly/} で見つかる有用なファイルです:
3484
3485 @multitable @columnfractions .4 .6
3486 @headitem ファイル名
3487   @tab 内容
3488 @item @file{ly/engraver-init.ly}
3489   @tab エングラーバ コンテキストの定義
3490 @item @file{ly/paper-defaults-init.ly}
3491   @tab 紙面関係のデフォルトの仕様
3492 @item @file{ly/performer-init.ly}
3493   @tab パフォーマ コンテキストの定義
3494 @item @file{ly/property-init.ly}
3495   @tab すべての共通定義済みコマンドの定義
3496 @item @file{ly/spanner-init.ly}
3497   @tab スパナ関係の定義済みコマンドの定義
3498 @end multitable
3499
3500 他の設定 (マークアップ コマンドの定義など) は @code{.scm} (Scheme) ファイルと@c
3501 して保存されています。Scheme プログラミング言語は、LilyPond 内部処理へのプログ@c
3502 ラム可能なインタフェイスを提供するために使用されます。これらのファイルについて@c
3503 の詳しい説明は、Scheme 言語についての知識が必要となるため、このマニュアルの範@c
3504 囲外です。Scheme 言語とこれらのファイルを理解するには、十分な知識や時間が必要@c
3505 であるということを知っておくべきです (@ref{Scheme tutorial} を参照してくださ@c
3506 い)。
3507
3508 あなたがこの知識を持っているのなら、興味を持つかもしれない Scheme ファイルは以@c
3509 下のものです:
3510
3511 @multitable @columnfractions .4 .6
3512 @headitem ファイル名
3513   @tab 内容
3514 @item @file{scm/auto-beam.scm}
3515   @tab サブ ビームのデフォルト (訳者: 8 分音符にはビームだけが使用され、16 分@c
3516 音符やそれよりも短い音符にはビームとサブ ビームが使われるのだと思います)
3517 @item @file{scm/define-grobs.scm}
3518   @tab Grob (グラフィカル オブジェクト) プロパティのデフォルト設定
3519 @item @file{scm/define-markup-commands.scm}
3520   @tab すべてのマークアップ コマンドの仕様
3521 @item @file{scm/midi.scm}
3522   @tab MIDI 出力のデフォルト設定
3523 @item @file{scm/output-lib.scm}
3524   @tab フレット、色、臨時記号、小節線などの見た目に影響を与える設定
3525 @item @file{scm/parser-clef.scm}
3526   @tab サポートされる音部記号の定義
3527 @item @file{scm/script.scm}
3528   @tab アーティキュレーションのデフォルト設定
3529 @end multitable
3530
3531
3532 @node Avoiding tweaks with slower processing
3533 @subsection Avoiding tweaks with slower processing
3534
3535 LilyPond は入力ファイルの処理中に追加のチェックを行うことができます。これらの@c
3536 チェックは実行時間を伸ばしますが、適切な結果を得るのに必要とされる手動調整を減@c
3537 らすかもしれません。テキストや歌詞の一部が余白まではみ出す場合、これらのチェッ@c
3538 クは楽譜のその行を縮めてマージンの内側に収まるようにします。
3539
3540 すべての状況下で有効にするには、以下のように、音楽の中の行ではなく @code{Score} 
3541 の @code{@bs{}with} ブロックの中にこれらのチェックのオーバライドを置くことに@c
3542 よって、動作可能な状態にする必要があります:
3543
3544 @example
3545 \new Score \with @{
3546   % Makes sure text scripts and lyrics are within the paper margins
3547   \override PaperColumn #'keep-inside-line = ##t
3548   \override NonMusicalPaperColumn #'keep-inside-line = ##t
3549 @} @{
3550    ..
3551 @}
3552 @end example
3553
3554
3555 @node Advanced tweaks with Scheme
3556 @subsection Advanced tweaks with Scheme
3557
3558 @code{@bs{}override} と @code{@bs{}tweak} コマンドを用いることで多くのことが可@c
3559 能になりますが、LilyPond のアクションを変更するもっと強力な手段が LilyPond 内@c
3560 部処理へのプログラム可能なインタフェイスを通じて利用可能です。Scheme プログラ@c
3561 ミング言語で書かれたコードは LilyPond の内部処理に直接組み込むことができます。@c
3562 もちろん、それを行うには Scheme プログラミングについての基礎知識が必要であり、@c
3563 その手引きが @ref{Scheme tutorial} で提供されています。
3564
3565 多くの実現可能なことの 1 つの例としては、プロパティに定数をセットする代わりに 
3566 Scheme プロシージャをセットすることができます。このプロパティが LilyPond に@c
3567 よってアクセスされたときに、このプロシージャが呼び出されます。このプロシージャ@c
3568 が呼び出されたときに、このプロシージャによって決定された値を動的にそのプロパ@c
3569 ティにセットすることができます。以下の例では、音符玉にその音符の譜表上での位置@c
3570 に従って色を付けています:
3571
3572 @cindex x11-color function, example of using
3573 @cindex NoteHead, example of overriding
3574 @cindex color property, setting to Scheme procedure
3575
3576 @lilypond[quote,verbatim,ragged-right]
3577 #(define (color-notehead grob)
3578   "Color the notehead according to its position on the staff."
3579   (let ((mod-position (modulo (ly:grob-property grob 'staff-position) 7)))
3580     (case mod-position
3581       ;;   Return rainbow colors
3582       ((1) (x11-color 'red    ))  ; for C
3583       ((2) (x11-color 'orange ))  ; for D
3584       ((3) (x11-color 'yellow ))  ; for E
3585       ((4) (x11-color 'green  ))  ; for F
3586       ((5) (x11-color 'blue   ))  ; for G
3587       ((6) (x11-color 'purple ))  ; for A
3588       ((0) (x11-color 'violet ))  ; for B
3589     )
3590   )
3591 )
3592
3593 \relative c' {
3594   % Arrange to obtain color from color-notehead procedure
3595   \override NoteHead #'color = #color-notehead
3596   c2 c' |
3597   b4 g8 a b4 c |
3598   c,2 a' |
3599   g1 |
3600 }
3601 \addlyrics {
3602   Some -- where o -- ver the Rain -- bow, way up high,
3603 }
3604 @end lilypond
3605
3606 @ref{Tweaking with Scheme} に、これらのプログラム可能なインタフェイスの使い方@c
3607 を示している例がもっとあります。
3608
3609