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