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