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