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