1 @c -*- coding: utf-8; mode: texinfo; documentlanguage: ja -*-
4 Translation of GIT committish: 499a511d4166feaada31114e097f86b5e0c56421
6 When revising a translation, copy the HEAD committish of the
7 version that you are working on. See TRANSLATION for details.
13 @c Translators: Yoshiki Sawada
14 @c Translation status: post-GDP
18 @chapter Tweaking output
20 この章では出力を変更する方法について議論します。LilyPond は本当にさまざまな設@c
21 定が可能です。もしかすると出力のすべての部分が変更されるかもしれません。
25 * The Internals Reference manual::
26 * Appearance of objects::
27 * Placement of objects::
28 * Collisions of objects::
33 @section Tweaking basics
37 * Introduction to tweaks::
38 * Objects and interfaces::
39 * Naming conventions of objects and properties::
44 @node Introduction to tweaks
45 @subsection Introduction to tweaks
47 @q{調整} は入力ファイルの解釈中にとられるアクションを変更し、譜刻される音楽の@c
48 見た目を変更するためにユーザが利用可能なさまざまな手段を指す LilyPond の用語で@c
49 す。いくつかの調整はとても簡単に使うことができます。他の調整はもっと複雑です。@c
50 しかしながら、調整のために利用可能な手段を組み合わせることによって、ほとんどい@c
51 かなる望みの見た目を持った楽譜でも譜刻することが可能になります。
53 このセクションでは、調整を理解するのに必要な基礎となるコンセプトをカバーしま@c
54 す。その後、コピーするだけで効果が得られる作成準備が完了しているさまざまなコマ@c
55 ンドについての情報を提供し、同時に、あなたがあなた自身の調整を開発する方法を学@c
56 べるようにそれらのコマンドがどのように構築されるのかを示します。
58 この章を読み始める前に、あなたは @ref{Contexts and engravers} を再読することを@c
59 望むかもしれません。なぜなら、コンテキスト、エングラーバとそれらの中に含まれる@c
60 プロパティは調整について理解し、調整を構成するための基礎だからです。
63 @node Objects and interfaces
64 @subsection Objects and interfaces
70 @cindex properties, object
71 @cindex object properties
73 @cindex object, layout
76 調整には LilyPond プログラムの内部オペレーションと構造体への変更も含まれます。@c
77 そのため、我々はまずそれらの内部オペレーションと構造体を記述するために使用され@c
78 るいくつかの用語を導入しなければなりません。
80 @q{オブジェクト} という用語は入力ファイルを処理している最中に LilyPond によっ@c
81 てビルドされる多くの内部構造体を参照するために使われる汎用的な用語です。LilyPond
82 が @code{@bs{}new Staff} のようなコマンドに遭遇した場合、タイプ @code{Staff}
83 の新しいオブジェクトを構築します。その @code{Staff} オブジェクトは、その譜表の@c
84 コンテキスト内部で機能するために割り当てられているエングラーバの詳細とともに、@c
85 その譜表に関連付けられているすべてのプロパティ -- 例えば、その譜表の名前、調号
86 -- を保持します。同様に、@code{Voice} オブジェクト、@code{Score} オブジェク@c
87 ト、@code{Lyrics} オブジェクトなどの他のすべてのコンテキストのプロパティを保持@c
88 するためのオブジェクトが存在し、さらに、小節線、音符の玉、タイ、強弱記号などの@c
89 すべての表記要素を表すためのオブジェクトも存在します。各オブジェクトはそれ自体@c
92 いくつかのタイプのオブジェクトには特別な名前が与えられています。音符の玉、ステ@c
93 ム、スラー、タイ、運指記号、音部記号などの譜刻される出力上の表記要素を表すオブ@c
94 ジェクトは @q{レイアウト オブジェクト} と呼ばれ、しばしば @q{グラフィカル オブ@c
95 ジェクト} あるいは短くして @q{グロッブ (Grob: GRaphical OBject)} と呼ばれま@c
96 す。これらのオブジェクトも上記の汎用的な観点から見るとオブジェクトであり、それ@c
97 ゆえ、それらもまたそれらのオブジェクトに関連付けされたプロパティ -- そのオブ@c
98 ジェクトの位置、サイズ、色など -- を持ちます。
100 いくつかのレイアウト オブジェクトも特別です。フレージング スラー、クレッシェン@c
101 ド、オッターバ (訳者: オクターブ?) 記号、他の多くのグラフィカル オブジェクト@c
102 が置かれる場所は一点ではありません -- それらは開始点、終了点、そしておそらくそ@c
103 れらの形に関係する他のプロパティを持ちます。これらのオブジェクトのように形が伸@c
104 長されるオブジェクトは @q{スパナ (Spanners)} と呼ばれます。
106 @q{インタフェイス} とは何なのかという説明が残っています。多くのオブジェクト --
107 たとえそれらが非常に異なっていたとしても -- は同じ方法で処理される必要がある共@c
108 通特徴 (common feature) を共有します。例えば、すべてのグラフィカル オブジェク@c
109 トは色、サイズ、位置などを持ち、これらのプロパティはすべて LilyPond が入力ファ@c
110 イルを構文解釈する最中に同じ方法で処理されます。これらの内部オペレーションを簡@c
111 潔にするために、これらの共通アクションとプロパティは 1 つのグループとして
112 @code{grob-interface} と呼ばれるオブジェクトにまとめられています。これと同じよ@c
113 うな共有プロパティのグループ化が他にも多くあり、それぞれに対して最後に
114 @code{interface} が付く名前が与えられています。そのようなインタフェイスの総数は
115 100 を越えます。我々は後でなぜこれがユーザにとって利益となり、役に立つのかを見@c
118 これらは、我々がこの章で使用するオブジェクトと関係する主要な用語です。
121 @node Naming conventions of objects and properties
122 @subsection Naming conventions of objects and properties
124 @cindex naming conventions for objects
125 @cindex naming conventions for properties
126 @cindex objects, naming conventions
127 @cindex properties, naming conventions
129 我々は以前にも @ref{Contexts and engravers} でいくつかのオブジェクト命名規約を@c
130 見てきました。ここで参照のために、最も一般的なオブジェクトとプロパティをリスト@c
131 アップし、それに加えてそれらの命名規約と実際の名前の例を挙げます。何らかの大文@c
132 字のアルファベットを表すために @q{A} を使用し、いくつかの小文字のアルファベッ@c
133 トを表すために @q{aaa} を使用しています。他の文字は実際の命名でもそのまま使用@c
136 @multitable @columnfractions .33 .33 .33
137 @headitem オブジェクト/プロパティのタイプ
141 @tab Aaaa や AaaaAaaaAaaa
142 @tab Staff, GrandStaff
144 @tab Aaaa や AaaaAaaaAaaa
147 @tab Aaaa_aaa_engraver
148 @tab Clef_engraver, Note_heads_engraver
150 @tab aaa-aaa-interface
151 @tab grob-interface, break-aligned-interface
153 @tab aaa や aaaAaaaAaaa
154 @tab alignAboveContext, skipBars
155 @item レイアウト オブジェクト プロパティ
156 @tab aaa や aaa-aaa-aaa
157 @tab direction, beam-thickness
160 これから見ていくのですが、タイプが異なるオブジェクトのプロパティは異なるコマン@c
161 ドによって変更されます。そのため、プロパティの名前からオブジェクトの種類を識別@c
165 @node Tweaking methods
166 @subsection Tweaking methods
168 @cindex tweaking methods
170 @strong{@bs{}override コマンド}
172 @cindex override command
173 @cindex override syntax
178 我々はすでに @ref{Modifying context properties} と @ref{Adding and removing
179 engravers} で@strong{コンテキスト}のプロパティを変更したり、@strong{エングラー@c
180 バ}を追加/削除したりするために使用するコマンド
181 @code{@bs{}set} と @code{@bs{}with} を見てきました。ここでは更に重要ないくつか@c
184 @strong{レイアウト オブジェクト}のプロパティを変更するためのコマンドは
185 @code{@bs{}override} です。このコマンドは LilyPond の奥深くにある内部プロパ@c
186 ティを変更しなければならないため、これまで見てきたコマンドのように単純な構文で@c
187 はありません。どのコンテキストの中にあるどのオブジェクトのどのプロパティを変更@c
188 しなければならないのか、そこにセットする新しい値を何にするのかを正確に知ってい@c
189 る必要があります。どのようにこれを行うのかを見ていきましょう。
191 このコマンドの一般的な構文は以下のようなものです:
194 @bs{}override @var{Context}.@var{LayoutObject} @hash{}'@var{layout-property} =
199 これは @var{Context} コンテキストのメンバである @var{LayoutObject} という名前@c
200 のレイアウトの @var{layout-property} という名前のプロパティに値 @var{value} を@c
203 必要とされているコンテキストが明白であり、それが最下位レベルのコンテキストである
204 -- つまり、@code{Voice}, @code{ChordNames} や @code{Lyrics} である -- 場合、その
205 @var{Context} は省略可能可能であり (そして通常は省略されます)、この後の例の多@c
206 くでも省略します。後ほど、コンテキストを指定しなければならない場合について見て@c
209 これから後のセクションでは広範囲に亘るプロパティとそれらの値を扱います。しかし@c
210 ながら、そのフォーマットとそれらのコマンドの使用方法を示すためには、容易に理解@c
211 できる簡単なプロパティと値を 2, 3 使用してみるだけです。
213 今や、レイアウト プロパティの前に置かれなければならない @code{@hash{}'} やプロ@c
214 パティ値の前に置かれなければならない @code{@hash{}} について心配する必要はあり@c
215 ません。これらは常にそのような形式で正確に記述されなければなりません。これは調@c
216 整では最も一般的に使用されるコマンドであり、この章の残りの部分の大半ではプロパ@c
217 ティ (変更コマンド) の使用方法を示すための例を記述しています。ここでは音符玉の@c
221 @cindex color property, example
222 @cindex NoteHead, example of overriding
224 @lilypond[quote,fragment,ragged-right,verbatim,relative=1]
226 \override NoteHead #'color = #red
228 \override NoteHead #'color = #green
233 @strong{@bs{}revert コマンド}
235 @cindex revert command
240 一旦オーバライドされると、そのプロパティは再度オーバライドされるか
241 @code{@bs{}revert} コマンドに遭遇するまで新しい値のままでいます。@c
242 @code{@bs{}revert} コマンドは以下の構文を持ち、プロパティの値をオリジナルのデ@c
243 フォルト値に戻します。何度か @code{@bs{}override} コマンドが発行されている場合@c
244 は、前の値に戻すわけではないということに注意してください。
248 @bs{}revert @var{Context}.@var{LayoutObject} @hash{}'@var{layout-property}
251 繰り返しますが、@code{@bs{}override} コマンドでの @var{Context} と同様に、多く@c
252 の場合で @var{Context} を記述する必要はありません。以下の例の多くで、@c
253 @var{Context} は省略されます。ここでは、最後の 2 つの音符の音符玉の色をデフォ@c
256 @cindex color property, example
257 @cindex NoteHead, example of overriding
259 @lilypond[quote,fragment,ragged-right,verbatim,relative=1]
261 \override NoteHead #'color = #red
263 \override NoteHead #'color = #green
265 \revert NoteHead #'color
269 @strong{@bs{}once prefix}
274 @code{@bs{}override} コマンドと @code{@bs{}set} コマンドには両方とも接頭辞
275 @code{@bs{}once} が付く可能性があります。これはその後に続く @code{@bs{}override}
276 や @code{@bs{}set} コマンドをその場一回限り有効にし、その後にそのプロパティの@c
277 値をデフォルト値に戻します。上と同じ例を使って、以下のように 1 つだけの音符の@c
280 @cindex color property, example
281 @cindex NoteHead, example of overriding
283 @lilypond[quote,fragment,ragged-right,verbatim,relative=1]
285 \once \override NoteHead #'color = #red
287 \once \override NoteHead #'color = #green
291 @strong{@bs{}overrideProperty コマンド}
293 @cindex overrideProperty command
295 @funindex \overrideProperty
296 @funindex overrideProperty
298 オーバライド コマンドには @code{@bs{}overrideProperty} というもう 1 つのフォー@c
299 マットがあり、時々必要となります。完璧を期すためにここでこれに言及しましたが、@c
300 詳細は @ruser{Difficult tweaks} を参照してください。
301 @c Maybe explain in a later iteration -td
303 @strong{@bs{}tweak コマンド}
305 @cindex tweak command
310 利用可能な最後の調整コマンドは @code{@bs{}tweak} です。これは同じタイミングで@c
311 起こるオブジェクト -- 和音の中にある音符などのように -- のプロパティを変更する@c
312 ために使用されます。@code{@bs{}override} コマンドを使用すると和音の中にあるす@c
313 べての音符に影響を与えます。一方、@code{@bs{}tweak} は入力ストリームの中でその
314 @code{@bs{}tweak} のすぐ後にある要素 1 つだけに影響を与えます。
316 ここで例を挙げます。C メジャー コードの中にある真ん中の音符 (ミドル E) の音符@c
317 玉のサイズを変更したいとします。まず最初に、@code{@bs{}once @bs{}override} だ@c
320 @cindex font-size property, example
321 @cindex NoteHead, example of overriding
323 @lilypond[quote,fragment,ragged-right,verbatim,relative=1]
325 \once \override NoteHead #'font-size = #-3
330 このオーバライドは和音の中にある@emph{すべて}の音符玉に影響を与えています。こ@c
331 れは和音の中にあるすべての音符が同じ@emph{タイミング}で起こるためであり、@c
332 @code{@bs{}once} のアクションは @code{@bs{}override} と同様に同じタイミングで@c
333 起こる、指定されたタイプすべてのレイアウト オブジェクトへのオーバライドに適用@c
336 @code{@bs{}tweak} コマンドはこれとは異なるやり方で処理されます。これは入力スト@c
337 リームの中ですぐ後に続く要素にだけ作用します。しかしながら、これは入力ストリー@c
338 ムから直接作成されるオブジェクト -- 本質的に音符玉とアーティキュレーション --
339 にだけ効果を持ちます。ステムや臨時記号などのオブジェクトは後で作成されるため、@c
340 この方法では調整できません。さらに、@code{@bs{}tweak} が音符玉に適用される場@c
341 合、それらは和音の内部になければ@emph{なりません} -- つまり、単一角括弧
342 @code{< .. >} の内部です。そのため、単一の音符 (和音ではない音符) を調整するに@c
343 は、@code{@bs{}tweak} コマンドはその音符とともに単一の角括弧で囲わなければなり@c
346 それでは例に戻り、この方法で和音の真ん中の音符のサイズを変更します:
348 @cindex font-size property, example
349 @cindex @code{@bs{}tweak}, example
351 @lilypond[quote,fragment,ragged-right,verbatim,relative=1]
353 <c \tweak #'font-size #-3 e g>4
356 @code{@bs{}tweak} の構文は @code{@bs{}override} コマンドの構文とは異なるという@c
357 ことに注意してください。コンテキストもレイアウト オブジェクトも指定されませ@c
358 ん。実際、それらを指定するとエラーになります。これらは両方とも入力ストリームの@c
359 中で後に続く要素によって示されます。さらに、イコール記号を使うべきではないとい@c
360 うことに注意してください。そのため、@code{@bs{}tweak} コマンドの一般的な構文は@c
364 @bs{}tweak @hash{}'@var{layout-property} @hash{}@var{value}
367 さらに、@code{@bs{}tweak} コマンドは一連のアーティキュレーションの中にあるただ 1
368 つのアーティキュレーションを変更されるためにも使用できます。ここに例を挙げます:
370 @cindex color property, example
371 @cindex @code{@bs{}tweak}, example
373 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
375 -\tweak #'color #red ^Red
376 -\tweak #'color #green _Green
380 @code{@bs{}tweak} コマンドは、まるでそれがアーティキュレーションの一部であるか@c
381 のように、アーティキュレーション マークの前に置かれなければならないということ@c
384 @cindex tuplets, nested
385 @cindex triplets, nested
386 @cindex bracket, tuplet
387 @cindex bracket, triplet
388 @cindex tuplet bracket
389 @cindex triplet bracket
391 @funindex TupletBracket
393 さらに、@code{@bs{}tweak} コマンドは、同時に起こるネストされた連符記号のセット@c
394 のうちの 1 つの見た目を変更するためにも使用されます。以下の例では、長い連符記@c
395 号と 3 つの短い連符記号のうちの最初の連符記号が同時に起こります。そのため、@c
396 @code{@bs{}override} コマンドだと両方の連符記号に適用されてしまいます。この例@c
397 では、@code{@bs{}tweak} は 2 つの連符記号を区別するために使用されています。最@c
398 初の @code{@bs{}tweak} コマンドは長い連符記号を音符の上に置くことを指定してい@c
399 て、2 番目の @code{@bs{}tweak} コマンドは最初の短い連符記号の数字を赤で描くこ@c
402 @cindex @code{@bs{}tweak}, example
403 @cindex direction property, example
404 @cindex color property, example
406 @lilypond[quote,ragged-right,verbatim,fragment,relative=2]
407 \tweak #'direction #up
410 \times 2/3 { c8[ c8 c8] }
411 \times 2/3 { c8[ c8 c8] }
412 \times 2/3 { c8[ c8 c8] }
416 ネストされた連符が同時に起こらない場合、それらの見た目は @code{@bs{}override}
417 コマンドを用いた通常通りの方法で変更されるかもしれません:
419 @cindex text property, example
420 @cindex tuplet-number function, example
421 @cindex transparent property, example
422 @cindex TupletNumber, example of overriding
424 @c NOTE Tuplet brackets collide if notes are high on staff
426 @lilypond[quote,ragged-right,verbatim,fragment,relative=1]
427 \times 2/3 { c8[ c c]}
428 \once \override TupletNumber
429 #'text = #tuplet-number::calc-fraction-text
433 \once \override TupletNumber #'transparent = ##t
434 \times 2/3 { c8[ c c] }
435 \times 2/3 { c8[ c c]}
442 @ruser{The tweak command}
444 @node The Internals Reference manual
445 @section The Internals Reference manual
449 * Properties of layout objects::
450 * Properties found in interfaces::
451 * Types of properties::
454 @node Properties of layout objects
455 @subsection Properties of layout objects
457 @cindex properties of layout objects
458 @cindex properties of grobs
459 @cindex grobs, properties of
460 @cindex layout objects, properties of
461 @cindex Internals Reference manual
463 あなたがスラーを楽譜に描き、そのスラーが細すぎるためにもう少し太くしたいと思っ@c
464 たとします。どうやってスラーを太くしますか?以前に LilyPond の自由度の高さにつ@c
465 いて述べたので、そのようなことが可能であることは知っています。あなたはおそらく
466 @code{@bs{}override} コマンドが必要であると推測するでしょう。しかしながら、ス@c
467 ラーの太さプロパティは存在するのでしょうか?そして、それが存在するならどうやっ@c
468 て変更するのでしょうか?このようなことに内部リファレンス マニュアルは触れてい@c
469 ます。内部リファレンス マニュアルには、あなたがスラーを太くするために必要な情@c
470 報、他のすべての @code{@bs{}override} コマンドを構築するために必要な情報が含ま@c
473 内部リファレンスを見ていく前に一言警告です。これは@strong{リファレンス} ドキュ@c
474 メントであり、説明はほんの少しかまったく含まれていません: リファレンスの目的は@c
475 情報を正確に、かつ簡潔に提供することです。そのため、内部リファレンスを一見して@c
476 ひるんでしまうかもしれません。しかし、心配しないでください!ここにあるガイダン@c
477 スと説明を読めば、少し練習するだけで、内部リファレンスから必要な情報を取り出せ@c
480 @cindex override example
481 @cindex Internals Reference, example of using
482 @cindex @code{@bs{}addlyrics} example
484 実際の音楽からの簡単な断片を持つ具体例を使用していきましょう:
486 @lilypond[quote,verbatim,relative=2]
491 g[( e]) e d[( f]) a |
495 The man who feels love's sweet e -- mo -- tion
500 ここで、スラーをもう少し太くしようと決めたことにします。それは可能でしょうか?@c
501 スラーは確かにレイアウト オブジェクトです。そのため、その疑問は @q{スラーに属@c
502 していて、太さを制御するプロパティは存在するのか?} ということになります。その@c
503 答えを得るために内部リファレンス -- 縮めて IR -- を見なければなりません。
505 あなたが使用しているバージョンの LilyPond のための内部リファレンスは LilyPond
506 ウェブサイト @uref{http://lilypond.org} で見つかるでしょう。ドキュメント ペー@c
507 ジに行き、内部リファレンスへのリンクをクリックしてください。学習目的のためには@c
508 標準の HTML バージョンを使うべきであり、@q{one big page} (@q{大きな 1 ページに@c
509 まとめたもの}) や PDF を使うべきではありません。次の数段落を読めば、あなたが内@c
510 部リファレンスを読むときに実際にすべきことがわかるでしょう。
512 内部リファレンスの@strong{トップ ページ}下には 5 つのリンクがあります。@c
513 @emph{バックエンド} へのリンクを選択してください。そこにはレイアウト オブジェ@c
514 クトについての情報があります。@strong{バックエンド} 下にある @emph{すべてのレ@c
515 イアウト オブジェクト} へのリンクを選択してください。そのページには、あなたが@c
516 使用しているバージョンの LilyPond で使用されるすべてのレイアウト オブジェクト@c
517 がアルファベット順でリストアップされています。Slur へのリンクを選択すると、@c
518 Slur のプロパティがリスト アップされます。
520 表記リファレンスからこのページを見つける方法もあります。スラーについて扱ってい@c
521 るページで、内部リファレンスへのリンクがを見つかるかもしれません。このリンクで@c
522 このページに直接行くことができます。しかしながら、あなたが調整するレイアウト
523 オブジェクトの名前を想像できる場合は、すぐに内部リファレンスに行ってそこで探す@c
526 内部リファレンスの Slur ページでは、まず Slur オブジェクトは
527 @code{Slur_engraver} によって作成されるということが述べられています。それか@c
528 ら、標準設定がをリストアップされています。標準設定はアルファベット順にはなっ@c
529 て@strong{いない}ということに注意してください。太さを制御していそうなプロパ@c
530 ティを探してブラウザをスクロール ダウンさせていくと、以下が見つかります:
533 @code{thickness} (number)
535 Line thickness, generally measured in @code{line-thickness}
538 これが太さを変更するプロパティのようです。@code{thickness} の値は@emph{数}であ@c
539 り、デフォルト値は 1.2、この値は他のプロパティでは @code{line-thickness} と呼@c
542 前にも言ったように、内部リファレンスには説明がほとんど、あるいはまったくありま@c
543 せん。しかしながら、すでにスラーの太さを変えるための十分な情報を持っています。@c
544 レイアウト オブジェクトの名前は @code{Slur} であり、変更するプロパティの名前は
545 @code{thickness} であり、スラーをもっと太くするには新しい値を 1.2 よりも大きく@c
548 今度は、レイアウト オブジェクト名で見つけた値を置き換えることによって
549 @code{@bs{}override} コマンドを構築することができます。コンテキストは省略しま@c
550 す。最初は太さに非常に大きな値を割り当ててみます。それによって、そのコマンドが@c
551 確かに機能していることを確かめることができます。実行するコマンドは以下のように@c
555 @bs{}override Slur @hash{}'thickness = @hash{}5.0
558 プロパティ名の前に @code{@hash{}'} を付けること、新しい値の前に @code{@hash{}}
561 最後の疑問は @q{このコマンドをどこに置くべきか?} ということです。そのことにつ@c
562 いて不確かであり、学んでいる最中であるのならば、ベストな答えはこうです @q{音楽@c
563 表記の内部で、最初のスラーの直前}。ではやってみましょう:
565 @cindex Slur example of overriding
566 @cindex thickness property, example
568 @lilypond[quote,verbatim,relative=2]
572 % Increase thickness of all following slurs from 1.2 to 5.0
573 \override Slur #'thickness = #5.0
575 g[( e]) e d[( f]) a |
579 The man who feels love's sweet e -- mo -- tion
587 これが @code{@bs{}override} コマンドを構築する基本的な方法です。これより後のセ@c
588 クションで遭遇するものはもう少し複雑ですが、必要な要点はすべて知っています --
589 しかしながら、まだ練習が必要でしょう。これは以下の例で提供されます。
592 @subheading Finding the context
594 @cindex context, finding
595 @cindex context, identifying correct
597 しかしながら、まず最初にコンテキストを指定しなければならないとしたらどうでしょ@c
598 うか?指定すべきコンテキストは何でしょうか?スラーとボイスは音楽表記の各行で明@c
599 らかに関係が深いので、スラーは @code{Voice} コンテキストの中にあると推測できる@c
600 かもしれません。しかし、それは確かでしょうか?この問題を解決するには、Slur に@c
601 ついて記述している内部リファレンス ページの先頭に戻ります。@c
602 そこには @q{Slur オブジェクトは Slur エングラーバによって作成される} と書かれ@c
603 ています。そのため、スラーは @code{Slur_engraver} が存在しているコンテキストの@c
604 どれかで作成されるということになります。@code{Slur_engraver} へのリンクを辿り@c
605 ます。そのページの最後の方で @code{Slur_engraver} は 5 つのボイス コンテキスト
606 -- 標準のボイス コンテキストである @code{Voice} を含む -- の一部であることが述@c
607 べられています。ですから、推測は正しかったのです。そして、@code{Voice} は最下@c
608 位のコンテキストの 1 つである -- このことは、そこに音符を入力するという事実に@c
609 よって明らかに示されています -- ため、ここではそのコンテキストを省略することが@c
613 @subheading Overriding once only
615 @cindex overriding once only
616 @cindex once override
621 上記の最後の例では@emph{すべて}のスラーが太くなっています。しかし、最初のス@c
622 ラーだけを太くしたい場合はどうでしょうか?これは @code{@bs{}once} コマンドを使@c
623 うことによって達成されます。@code{@bs{}override} コマンドの直前に
624 @code{@bs{}once} コマンドを置くことによって、@code{@bs{}override} コマンド@c
625 は@strong{直後にある}音符から始まるスラーだけを変更するようになります。直後に@c
626 ある音符がスラーの開始点ではない場合、そのコマンドはまったく機能しません -- そ@c
627 れがスラーに遭遇するまで保持されるということはなく、ただ切り捨てられるだけで@c
628 す。そのため、@code{@bs{}once} コマンド付きの @code{@bs{}override} コマンドは@c
629 以下のように上記の例とは異なる場所に置かなくてはなりません:
631 @cindex Slur, example of overriding
632 @cindex thickness property, example
634 @lilypond[quote,verbatim,relative=2]
639 % Increase thickness of immediately following slur only
640 \once \override Slur #'thickness = #5.0
642 g[( e]) e d[( f]) a |
646 The man who feels love's sweet e -- mo -- tion
652 今度は、最初のスラーだけが太くなりました。
654 @code{@bs{}once} コマンドは @code{@bs{}set} コマンドの前でも使用される可能性が@c
658 @subheading Reverting
661 @cindex default properties, reverting to
666 最後に、最初の 2 つだけのスラーを太くしたい場合はどうでしょうか?その場合、2
667 つのコマンド -- それぞれの前に @code{@bs{}once} を付けた -- をスラーが始まる音@c
670 @cindex Slur, example of overriding
671 @cindex thickness property, example
673 @lilypond[quote,verbatim,relative=2]
678 % Increase thickness of immediately following slur only
679 \once \override Slur #'thickness = #5.0
681 % Increase thickness of immediately following slur only
682 \once \override Slur #'thickness = #5.0
683 g[( e]) e d[( f]) a |
687 The man who feels love's sweet e -- mo -- tion
693 あるいは、@code{@bs{}once} コマンドを省略して、2 番目のスラーの後に
694 @code{thickness} プロパティをデフォルト値に戻すために @code{@bs{}revert} コマ@c
697 @cindex Slur, example of overriding
698 @cindex thickness property, example
700 @lilypond[quote,verbatim,relative=2]
705 % Increase thickness of all following slurs from 1.2 to 5.0
706 \override Slur #'thickness = #5.0
709 % Revert thickness of all following slurs to default of 1.2
710 \revert Slur #'thickness
715 The man who feels love's sweet e -- mo -- tion
721 @code{@bs{}revert} コマンドは @code{@bs{}override} コマンドで変更されたどのプ@c
722 ロパティでもデフォルト値に戻すことができます。状況に相応しい方を使用してくださ@c
725 これで内部リファレンスと調整の基本的な方法についての紹介を終わりにします。この@c
726 章で後に続くセクションの中にあるいくつのかの例でも一部では、内部リファレンスの@c
727 特徴についての追加の紹介や、そこから情報を取り出すための更なる練習を提供しま@c
728 す。それらの例ではガイダンスや説明のための言葉はずっと少ないでしょう。
731 @node Properties found in interfaces
732 @subsection Properties found in interfaces
735 @cindex interface properties
736 @cindex properties in interfaces
738 今度は歌詞をイタリック体で譜刻したいということにします。そうするには
739 @code{@bs{}override} コマンドをどのように使う必要があるのでしょうか?以前と同@c
740 様に、まず @q{すべてのレイアウト オブジェクト} をリストアップしている内部リ@c
741 ファレンス ページを開き、歌詞をコントロールしていそうなオブジェクトを探しま@c
742 す。@code{LyricText} がそれであるようです。これをクリックすると、歌詞のテキス@c
743 トに対してセットすることができるプロパティが表示されます。そこには
744 @code{font-series} と @code{font-size} が含まれますが、歌詞をイタリック体にす@c
745 るためのプロパティらしきものはありません。これは、形に関するプロパティはすべて@c
746 のフォント オブジェクトに共通なものであり、そのため、各レイアウト オブジェクト@c
747 に含まれているのではなく、他の同様な共通プロパティと一緒にグループ化されてい@c
748 て、@strong{インタフェイス}の 1 つ @code{font-interface} の中に置かれているか@c
751 そのため、インタフェイスのプロパティを見つける方法と、どのオブジェクトがこれら@c
752 のインタフェイス プロパティを使うのかを調べる方法を学ぶ必要があります。
754 @code{LyricText} について記述している内部リファレンスのページを再び開いてくだ@c
755 さい。そのページの最後に @code{LyricText} がサポートするインタフェイスへのリン@c
756 クがリスト アップされています。そのリストには @code{font-interface} を含むいく@c
757 つかの要素があります。このリンクをクリックすると、このインタフェイスに関連付け@c
758 されているプロパティのところに行きます。これらのプロパティは @code{LyricText}
759 を含む @code{font-interface} をサポートするすべてのオブジェクトのプロパティで@c
762 @code{font-shape(symbol)} を含むフォントを制御するユーザが設定可能なプロパティ@c
763 をすべて見つけました。@code{font-shape(symbol)} では @code{symbol} を
764 @code{upright}, @code{italics}, あるいは @code{caps} にセットすることができま@c
767 そこには、@code{font-series} と @code{font-size} もリスト アップされていること@c
768 に気づくでしょう。そこで次のような疑問が湧いてきます: 共通フォントプロパティ
769 @code{font-series} と @code{font-size} は @code{LyricText} とインタフェイス
770 @code{font-interface} の両方でリスト アップされているのに、なぜ
771 @code{font-shape} はそうでないのか?その答えは、@code{font-series} と
772 @code{font-size} は、@code{LyricText} オブジェクトが作成されるときに、それらの@c
773 グローバルなデフォルト値から変更されるのに対して、@code{font-shape} はそうでは@c
774 ないからです。@code{LyricText} の中にあるエントリから @code{LyricText} に適用@c
775 されるそれら 2 つのプロパティの値がわかります。@code{font-interface} をサポー@c
776 トする他のオブジェクトは、それらのオブジェクトが作成されるときに、それらのプロ@c
779 今度は歌詞をイタリック体に変更するように @code{@bs{}override} コマンドを構築で@c
780 きるかどうかを見ていきましょう。オブジェクトは @code{LyricText} であり、プロパ@c
781 ティは @code{font-shape} であり、セットする値は @code{italic} です。前と同様@c
784 話は逸れますが重要なことを 1 つ挙げます。@code{font-shape} の値はシンボルなの@c
785 で、シングル アポストロフィ @code{'} を付ける必要があるということに注意してく@c
786 ださい。その理由は、以前の例での @code{thickness} や @code{font-shape} の前に@c
787 アポストロフィを付ける必要がある理由と同じです。それらも両方ともシンボルです。@c
788 シンボルは LilyPond によって内部的に読み取られます。それらのいくつかは
789 @code{thickness} や @code{font-shape} のようなプロパティの名前であり、他のものは
790 @code{italic} のようにプロパティに与えられる値として使用されます。任意のテキス@c
791 ト文字列との違い -- 任意のテキスト文字列は @code{"a text string"} のような形で@c
792 表記されます -- に注意してください。シンボルと文字列についてのより詳細な説明@c
793 は、@ref{Scheme tutorial} を参照してください。
795 さて、それでは歌詞をイタリック体で譜刻するために必要となる @code{@bs{}override}
799 \override LyricText @hash{}'font-shape = @hash{}'italic
803 そして、これは以下のように影響を与える歌詞の前に、そして近くに置くべきです:
805 @cindex font-shape property, example
806 @cindex italic, example
807 @cindex LyricText, example of overriding
808 @cindex @code{\addlyrics}, example
810 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
815 g[( e]) e d[( f]) a |
819 \override LyricText #'font-shape = #'italic
820 The man who feels love's sweet e -- mo -- tion
826 これで歌詞がすべてイタリック体で譜刻されました。
829 @subheading Specifying the context in lyric mode
831 @cindex context, specifying in lyric mode
832 @cindex lyric mode, specifying context
834 歌詞の場合、以前のようなコマンドの発行の仕方の中でコンテキストを指定しようとし@c
835 ても失敗するでしょう。歌詞モードの中で入力される音節はスペース、改行、数字のい@c
836 ずれかで区切られます。他のすべての文字は音節の一部と見なされます。これが、終端の
837 @code{@}} の前にはスペースか改行を置かなければならない理由です。そうしないと、@c
838 終端の @code{@}} は最後の音節の一部に含まれてしまいます。同様に、コンテキスト@c
839 名とオブジェクト名を区切るために、ピリオドまたはドット @q{.} の前と後ろにス@c
840 ペースを挿入しなければなりません。さもないと 2 つの名前は一緒になってしまい、@c
841 インタプリタはそれらを認識できなくなります。そのため、コマンドは以下のようにす@c
845 @bs{}override Lyrics . LyricText @hash{}'font-shape = @hash{}'italic
848 @warning{歌詞の中では、最後の音節と終端の中括弧の間に常にスペースを置いてくだ@c
851 @warning{歌詞の中のオーバライドでは、コンテキスト名とオブジェクト名の間にある@c
852 ドットの両側に常にスペースを置いてください。}
856 学習マニュアル: @ref{Scheme tutorial}
859 @node Types of properties
860 @subsection Types of properties
862 @cindex property types
864 これまでにプロパティのタイプを 2 つ見てきました: @code{number} と @code{symbol}
865 です。プロパティに与える値が有効であるためには、その値は正しいタイプであり、そ@c
866 のタイプのルールに従っていなければなりません。プロパティのタイプは内部リファレ@c
867 ンスの中で常にプロパティ名の後の括弧の中に表示されています。ここに、あなたが必@c
868 要になるであろうプロパティのタイプを、そのタイプのルールといくつかの例と共にリ@c
869 スト アップします。もちろん、@code{@bs{}override} コマンドの中でプロパティの値@c
870 を入力する時は、常にそれらの値の前にハッシュ記号 @code{@hash{}} を付け加える必@c
873 @multitable @columnfractions .2 .45 .35
878 @tab 真か偽のどちらかで、それぞれ @hash{}t と @hash{}f で表されます
879 @tab @code{@hash{}t}, @code{@hash{}f}
880 @item Dimension (譜表スペース)
882 @tab @code{2.5}, @code{0.34}
884 @tab 有効な向きを表す定数またはそれと等価な数値 (-1 から 1 までの小数が許可@c
886 @tab @code{LEFT}, @code{CENTER}, @code{UP},
890 @tab @code{3}, @code{1}
892 @tab 値のセット。セットの値はスペースで区切られ、前にアポストロフィが付いた@c
894 @tab @code{'(left-edge staff-bar)}, @code{'(1)},
895 @code{'(1.0 0.25 0.5)}
898 @tab @code{@bs{}markup @{ \italic "cresc." @}}
900 @tab make-moment 関数で構築される全音符の分数
901 @tab @code{(ly:make-moment 1 4)},
902 @code{(ly:make-moment 3 8)}
905 @tab @code{3.5}, @code{-2.45}
907 @tab @q{スペース . スペース} で区切られ、前にアポストロフィが付いた括弧で囲@c
909 @tab @code{'(2 . 3.5)}, @code{'(0.1 . -3.2)}
911 @tab プロパティに許可されているシンボルのセットのいずれかであり、前にアポロ@c
913 @tab @code{'italic}, @code{'inside}
915 @tab 手続き。何のアクションも起こさない場合は @code{@hash{}f}
916 @tab @code{bend::print}, @code{ly:text-interface::print},
919 @tab 前にアポストロフィ-ハッシュ @code{'@hash{}} が付いた括弧で囲まれた 3 要@c
921 @tab @code{'@hash{}(@hash{}t @hash{}t @hash{}f)}
926 学習マニュアル: @ref{Scheme tutorial}
929 @node Appearance of objects
930 @section Appearance of objects
932 いくつかの例を使ってこれまでに学んだことを練習して、譜刻される楽譜の見た目を変@c
933 更するためにどのように調整が使われるのかを見ていきましょう。
937 * Visibility and color of objects::
939 * Length and thickness of objects::
943 @node Visibility and color of objects
944 @subsection Visibility and color of objects
946 教育目的の楽譜では、ある要素を省略した楽譜を譜刻して、学生にそれを付け足させる@c
947 という訓練にしたいと思うかもしれません。簡単な例として、その訓練とは小節線の無@c
948 い楽譜だと仮定してみましょう。しかしながら、通常、小節線は自動的に挿入されま@c
949 す。どうやって小節線が譜刻されることを防ぐのでしょうか?
951 このことに挑戦する前に、オブジェクト プロパティは@emph{インタフェイス}と呼ばれ@c
952 るものにグループ化されているということを思い出してください -- @ref{Properties
953 found in interfaces} を参照してください。これはあるグラフィカル オブジェクトを@c
954 調整するために一緒に使用されるかもしれないプロパティをグループ化したものです --
955 あるオブジェクトに対してインタフェイス内のプロパティの 1 つを使うことが許可さ@c
956 れるのなら、他のプロパティも許可されます。あるオブジェクトはいくつかのインタ@c
957 フェイス内にあるプロパティを使用し、別のオブジェクトはそれとは別のインタフェイ@c
958 ス内にあるプロパティを使用します。ある特定のグラフィカルオブジェクトによって使@c
959 用されるプロパティを保持しているインタフェイスは、そのグラフィカル オブジェク@c
960 トについて記述している内部リファレンス ページの最後にリスト アップされていて、@c
961 それらのプロパティはそれらのインタフェイスを参照することによって閲覧できます。
963 グラフィカル オブジェクトについての情報を見つけ出す方法を @ref{Properties of
964 layout objects} で説明しました。同じアプローチを使って、内部リファレンスで小節@c
965 線を譜刻するレイアウト オブジェクトを見つけ出します。@emph{バックエンド}を経由@c
966 して@emph{すべてのレイアウト オブジェクト}に行くと、そこに @code{BarLine} と呼@c
967 ばれるレイアウト オブジェクトがあることがわかります。そのレイアウト オブジェク@c
968 トのプロパティには小節線の可視性をコントロールする 2 つのプロパティが含まれて@c
969 います: @code{break-visibility} と @code{stencil} です。さらに、@code{BarLine}
970 はインタフェイスのいくつかをサポートしています。@code{grob-interface} もサポー@c
971 トされていて、そこには @code{transparent} プロパティと @code{color} プロパティ@c
972 が含まれています。これらすべてが小節線の可視性に影響を与えます (そしてもちろ@c
973 ん、拡大解釈すれば他の多くのレイアウト オブジェクトにも影響を与えます)。次はこ@c
974 れらのプロパティをそれぞれ見ていきましょう。
979 @cindex stencil property
981 このプロパティは譜刻すべきシンボル (グリフ) を指定することによって小節線の見た@c
982 目を制御します。他の多くのプロパティでも共通に言えますが、このプロパティの値に
983 @code{@hash{}f} をセットすることによって何も譜刻させなくすることができます。で@c
984 はやってみましょう。以前と同様に、暗黙のコンテキスト @code{Voice} は省略します:
986 @cindex BarLine, example of overriding
987 @cindex stencil property, example
989 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
992 \override BarLine #'stencil = ##f
999 小節線はまだ譜刻されています。何が間違っているのでしょうか?内部リファレンスに@c
1000 戻って、@code{BarLine} のプロパティを記述しているページを読み返してください。@c
1001 そのページの先頭に @qq{BarLine オブジェクトは Bar_engraver によって作成されます}
1002 と記述されています。@code{Bar_engraver} ページに行ってください。そのページの最@c
1003 後で、@code{Bar_engraver} を保持するコンテキストがリスト アップされています。@c
1004 それらのコンテキストのタイプはすべて @code{Staff} です。ですから、@c
1005 @code{@bs{}override} コマンドが予期したように機能しなかったのは、@code{BarLine}
1006 はデフォルトの @code{Voice} コンテキストの中にはいなかったからなのです。コンテ@c
1007 キストが間違って指定された場合、そのコマンドは機能しません。エラー メッセージ@c
1008 は生成されず、ログ ファイルには何もログが残りません。正しいコンテキストを付け@c
1009 加えることによってコマンドを修正してみましょう:
1011 @cindex BarLine, example of overriding
1012 @cindex stencil property, example
1014 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1017 \override Staff.BarLine #'stencil = ##f
1019 g, a16 b8 c d4 e16 |
1027 @subheading break-visibility
1029 @cindex break-visibility property
1031 内部リファレンスの @code{BarLine} のプロパティから @code{break-visibility} プ@c
1032 ロパティには 3 つのブール値からなるベクトルが必要であることがわかります。これ@c
1033 らはそれぞれ、小節線が行の最後、行の途中、行の最初に譜刻されるかどうかを制御し@c
1034 ます。以下の例ではすべての小節線を消したいので、必要となる値は
1035 @code{'@hash{}(@hash{}f @hash{}f @hash{}f)} です。それではやってみましょう。@c
1036 @code{Staff} コンテキストを含めることを忘れないでください。また、この値を書く@c
1037 ときに括弧を始める前に @code{@hash{}'@hash{}} を付ける必要があることにも注意し@c
1038 てください。@code{'@hash{}} はベクトルを導入するときに値の一部として必要とさ@c
1039 れ、先頭の @code{@hash{}} は @code{@bs{}override} コマンドの中で常に値の前に置@c
1042 @cindex BarLine, example of overriding
1043 @cindex break-visibility property, example
1045 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1048 \override Staff.BarLine #'break-visibility = #'#(#f #f #f)
1050 g, a16 b8 c d4 e16 |
1058 @subheading transparent
1060 @cindex transparent property
1061 @cindex transparency
1063 内部リファレンスの @code{grob-interface} ページにあるプロパティから
1064 @code{transparent} プロパティはブール値であることがわかります。これはグラフィ@c
1065 カル オブジェクトを透明にする場合には @code{@hash{}t} にセットします。次の例で@c
1066 は、小節線ではなく拍子記号を不可視にしてみましょう。そうするには、まず、拍子記@c
1067 号のグラフィカル オブジェクト名を見つける必要があります。@code{TimeSignature}
1068 レイアウト オブジェクトのプロパティを見つけるために内部リファレンスの @q{すべ@c
1069 てのレイアウト オブジェクト} ページに戻ってください。@code{TimeSigunature} は
1070 @code{Time_signature_engraver} によって作り出され、さらに、@c
1071 @code{Time_signature_engraver} は @code{Staff} コンテキストに含まれ、さらに、@c
1072 @code{Staff} コンテキストは @code{grob-interface} をサポートしているということ@c
1073 がわかります。そのため、拍子記号を透明にするためのコマンドは以下のようになりま@c
1076 @cindex TimeSignature, example of overriding
1077 @cindex transparent property, example
1079 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1082 \override Staff.TimeSignature #'transparent = ##t
1084 g, a16 b8 c d4 e16 |
1090 拍子記号は消えました。しかしながら、このコマンドは拍子記号があるべき場所に隙間@c
1091 を残しています。たぶん、これは学生がその部分を埋めるための練習としては望ましい@c
1092 でしょうが、他の状況ではこの隙間は望ましくありません。この隙間を取り除くには、@c
1093 拍子記号の @code{transparent} の代わりにステンシル (型、型紙) を @code{@hash{}f}
1096 @cindex TimeSignature, example of overriding
1097 @cindex stencil property, example
1099 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1102 \override Staff.TimeSignature #'stencil = ##f
1104 g, a16 b8 c d4 e16 |
1110 違いは明白です: ステンシルを @code{@hash{}f} にセットすると、オブジェクト自体@c
1111 が削除されます。一方、オブジェクトを @code{transparent} (透明) にするとそのオ@c
1112 ブジェクトは消えますが、オブジェクトは不可視になっただけです。
1117 @cindex color property
1119 最後に、小節線の色を白にすることによって小節線を不可視にしてみましょう。(これ@c
1120 には白い小節線が譜表線と交差したところで譜表線を見えたり見えなくしてしまうかも@c
1121 しれないという問題があります。以下のいくつかの例で、このことを予測することはで@c
1122 きないと思うかもしれません。そうなる理由と、それを制御する方法についての詳細@c
1123 は、@ruser{Painting objects white} でカバーされています。しかしここでは色につ@c
1124 いて学んでいるところなので、オブジェクトを白で描くことの限界を受け入れるだけに@c
1127 @code{grob-interface} はカラー プロパティの値はリストであると指定しています。@c
1128 しかしながら、そのリストが何であるべきなのかの説明はありません。カラー プロパ@c
1129 ティで必要とされるリストは実際のところ内部ユニットの中にある値のリストです。し@c
1130 かし、内部ユニットの中にある値を知らなくても済むように、カラーを指定するための@c
1131 手段がいくつか用意されています。最初の方法は @ruser{List of colors} にある最初@c
1132 の表でリスト アップされている @q{標準} のカラーの 1 つを使用する方法です。小節@c
1133 線を白にするには以下のように記述します:
1135 @cindex BarLine, example of overriding
1136 @cindex color property, example
1138 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1141 \override Staff.BarLine #'color = #white
1143 g, a16 b8 c d4 e16 |
1149 今度も再び小節線は見えなくなりました。@emph{white} の前にアポストロフィは付か@c
1150 ないということに注意してください -- これはシンボルではなく@emph{関数}です。こ@c
1151 の関数が呼び出されると、この関数はカラーを白にセットするために必要とされる内部@c
1152 値のリストを提供します。標準カラー リストにある他のカラーもまた関数です。これ@c
1153 が機能していることをあなた自身が納得するために、カラーをこのリストの中にある他@c
1154 の関数の 1 に変更しようと思うかもしれません。
1161 カラーを変えるための 2 番目の方法は、@ruser{List of colors} の 2 番目のリスト@c
1162 の中にある X11 カラー名のリストを使用する方法です。しかしながら、以下のよう@c
1163 に、これらの前には X11 カラー名を内部値のリストに変更するもう 1 つの関数 --
1164 @code{x11-color} -- がなければなりません:
1166 @cindex BarLine, example of overriding
1167 @cindex color property, example
1169 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1172 \override Staff.BarLine #'color = #(x11-color 'white)
1174 g, a16 b8 c d4 e16 |
1180 この場合、関数 @code{x11-color} はシンボルを引数として扱うので、シンボルの前に@c
1181 はアポストロフィをつけなくてはならず、@code{x11-color} とシンボルは括弧で囲ま@c
1182 れていなければならないということに注意してください。
1189 まだ 3 番目の方法が残っています。これは RGB 値を内部カラーに変換する
1190 @code{rgb-color} 関数を使用する方法です。この関数は赤、緑、青の輝度を表す 3 つ@c
1191 の引数をとります。これらの引数は 0 から 1 までの値をとります。ですから、カラー@c
1192 を赤にセットする場合の値は @code{(rgb-color 1 0 0)} となり、白の場合は
1193 @code{(rgb-color 1 1 1)} となります:
1195 @cindex BarLine, example of overriding
1196 @cindex color property, example
1198 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1201 \override Staff.BarLine #'color = #(rgb-color 1 1 1)
1203 g, a16 b8 c d4 e16 |
1208 最後に、X11 カラー セットの一部であるグレー スケールを用いる方法もあります。グ@c
1209 レー スケールの範囲は黒 @code{'grey0'} から白 @code{'grey100'} まで 1 段階ずつ@c
1210 あります。グレー スケールの使用方法を示すために、例の中にあるすべてのレイアウト
1211 オブジェクトのカラーをさまざまな濃度のグレーにセットしてみましょう:
1213 @cindex StaffSymbol, example of overriding
1214 @cindex TimeSignature, example of overriding
1215 @cindex Clef, example of overriding
1216 @cindex NoteHead, example of overriding
1217 @cindex Stem, example of overriding
1218 @cindex BarLine, example of overriding
1219 @cindex color property, example
1220 @cindex x11-color, example of using
1222 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1225 \override Staff.StaffSymbol #'color = #(x11-color 'grey30)
1226 \override Staff.TimeSignature #'color = #(x11-color 'grey60)
1227 \override Staff.Clef #'color = #(x11-color 'grey60)
1228 \override Voice.NoteHead #'color = #(x11-color 'grey85)
1229 \override Voice.Stem #'color = #(x11-color 'grey85)
1230 \override Staff.BarLine #'color = #(x11-color 'grey10)
1232 g, a16 b8 c d4 e16 |
1238 各レイアウト オブジェクトに関連付けされているコンテキストに注意してください。@c
1239 これらのコンテキストを正しく取得することが重要であり、そうしなければコマンドは@c
1240 機能しません!コンテキストの中には特定のエングラーバが置かれているということを@c
1241 忘れないでください。エングラーバに対するデフォルト コンテキストを見つけ出すに@c
1242 は、内部リファレンスのレイアウト オブジェクトからスタートして、そこからそれを@c
1243 作り出すエングラーバのページに行きます。エングラーバのページには、通常はどのコ@c
1244 ンテキストにそのエングラーバが含まれているのかが記述されています。
1247 @node Size of objects
1248 @subsection Size of objects
1250 @cindex changing size of objects
1251 @cindex size of objects
1252 @cindex objects, size of
1253 @cindex objects, changing size of
1255 以前の例を見直すことから始めてみましょう (@ref{Nesting music expressions} を参@c
1256 照してください)。そこでは @rglos{ossia} として新たに一時的な譜表を導入する方法@c
1259 @cindex alignAboveContext property, example
1260 @cindex @code{\with}, example
1262 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1263 \new Staff ="main" {
1270 alignAboveContext = #"main" }
1278 通常、オッシアは音部記号と拍子記号無しで記述され、メインの譜表よりもわずかに小@c
1279 さく譜刻されます。今度は、すでに音部記号と拍子記号を削除する方法を知っています
1280 -- 以下のようにそれぞれのステンシルを @code{@hash{}f} にセットするだけです:
1282 @cindex alignAboveContext property, example
1283 @cindex @code{\with}, example
1284 @cindex stencil property, example
1285 @cindex Clef, example of overriding
1286 @cindex TimeSignature, example of overriding
1288 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1289 \new Staff ="main" {
1296 alignAboveContext = #"main"
1299 \override Staff.Clef #'stencil = ##f
1300 \override Staff.TimeSignature #'stencil = ##f
1310 ここで、@code{@bs{}with} 節の後にある追加の括弧のペアが、その括弧に囲まれてい@c
1311 るオーバライドと音楽がオッシア譜表に適用されることを保証するために、必要となり@c
1314 しかし、@code{@bs{}with} を使った譜表コンテキストの変更と @code{@bs{}override}
1315 を使った音部記号と拍子記号のステンシルの変更との違いは何なのでしょうか?主な違@c
1316 いは、@code{@bs{}with} 節の中で行われた変更はそのコンテキストが作成されるとき@c
1317 に行われ、そのコンテキストでは@strong{デフォルト}値として残ります。一方、音楽@c
1318 の中に埋め込まれた @code{@bs{}set} コマンドや @code{@bs{}override} コマンドは@c
1319 動的です -- それらは音楽のある特定のポイントに同期して変更を行います。変更が
1320 @code{@bs{}unset} や @code{@bs{}revert} を使ってセットを解除されたり元に戻され@c
1321 た場合、デフォルト値 -- これは @code{@bs{}with} 節でセットされていた場合はその@c
1322 値、そうでない場合は通常のデフォルト値 -- に戻ります。
1324 いくつかのコンテキスト プロパティは @code{@bs{}with} 節でのみ変更可能です。こ@c
1325 れらは、コンテキストが作成された後では、変更されることのないプロパティです。@c
1326 @code{alignAboveContext} とそのパートナー @code{alignBelowContext} がそのよう@c
1327 なプロパティです -- いったん譜表が作成されると、譜表のアラインメントは決定さ@c
1328 れ、それを後で変更しようとすることには意味がありません。
1330 レイアウト オブジェクトのデフォルト値は @code{@bs{}with} 節でセットすることも@c
1331 できます。通常の @code{@bs{}override} コマンドをコンテキスト名を省いて使用する@c
1332 だけです。コンテキスト名を省略するのは、そのコンテキストは明らかに
1333 @code{@bs{}with} 節が変更しようとしているコンテキストだからです。実際、@c
1334 @code{@bs{}with} 節の中でコンテキストを指定するとエラーが発生します。
1336 それでは上記の例を以下のように書き換えます:
1338 @cindex alignAboveContext property, example
1339 @cindex @code{\with}, example
1340 @cindex Clef, example of overriding
1341 @cindex TimeSignature, example of overriding
1343 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1344 \new Staff ="main" {
1351 alignAboveContext = #"main"
1352 % Don't print clefs in this staff
1353 \override Clef #'stencil = ##f
1354 % Don't print time signatures in this staff
1355 \override TimeSignature #'stencil = ##f
1364 最後に、レイアウト オブジェクトのサイズを変更してみます。
1366 いくつかのレイアウト オブジェクトはある書体から選択されたグリフとして作成され@c
1367 ます。これには音符の玉、臨時記号、マークアップ、音部記号、拍子記号、強弱記号、@c
1368 歌詞が含まれます。それらのサイズは、これから見ていくように、@code{font-size}
1369 プロパティを変更することによって変更されます。スラーやタイのような他のレイアウト
1370 オブジェクト -- 一般には、スパナ オブジェクト (spanner objects) -- は個々に描@c
1371 かれるため、@code{font-size} プロパティとは関係がありません。一般に、それらの@c
1372 オブジェクトはそれらを取り付けられるオブジェクトからサイズを決定する (訳者: 例@c
1373 えば、スラーはそのスラーが付着する音符からそのスラーのサイズを決定する) ので、@c
1374 通常はサイズを手動で変更する必要はありません。さらに、ステムや小節線の長さ、@c
1375 ビームや他の線の太さ、譜表線の間隔などといった他のプロパティはすべて特別な方法@c
1378 オッシアの例に戻って、まず @code{font-size} を変更してみましょう。これを行うには
1379 2 通りの方法があります。以下のようなコマンドで @code{NoteHead} のような各オブ@c
1380 ジェクト タイプのフォント サイズを変更する:
1383 \override NoteHead #'font-size = #-2
1386 あるいは、@code{@bs{}set} を使って特別なプロパティ @code{fontSize} を設定する@c
1387 か、それを @code{@bs{}with} 節に含める (ただし、@code{@bs{}set} は含めません)
1388 ことによってすべてのフォントのサイズを変更します:
1394 これらの命令文は両方ともフォント サイズを前の値から 2 段階減らします。各段階で@c
1397 それではオッシアの例でフォント サイズを変更してみましょう:
1399 @cindex alignAboveContext property, example
1400 @cindex @code{\with}, example
1401 @cindex Clef, example of overriding
1402 @cindex TimeSignature, example of overriding
1403 @cindex fontSize property, example
1405 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1406 \new Staff ="main" {
1413 alignAboveContext = #"main"
1414 \override Clef #'stencil = ##f
1415 \override TimeSignature #'stencil = ##f
1416 % Reduce all font sizes by ~24%
1426 これでもまだ完璧ではありません。音符の玉とフラグは小さくなりましたが、ステムは@c
1427 それに対して長すぎ、譜表線は離れすぎています。これらをフォント サイズの減少に@c
1428 比例してスケール ダウンさせる必要があります。次のサブ セクションでそれを行う方@c
1432 @node Length and thickness of objects
1433 @subsection Length and thickness of objects
1439 @cindex size, changing
1440 @cindex stem length, changing
1441 @cindex staff line spacing, changing
1443 LilyPond では距離と長さは一般に譜表スペース -- 譜表の中の隣り合う線の間隔 --
1444 で測ります (特別な場合では、譜表スペースの半分で測ることもあります)。一方、た@c
1445 いていの @code{thickness} プロパティは @code{line-thickness} と呼ばれる内部プ@c
1446 ロパティを単位として測ります。例えば、デフォルトでは、ヘアピン (訳者: 強弱記号)
1447 の線の太さは 1 単位の @code{line-thickness} であり、音符のステムの
1448 @code{thickness} は 1.3 です。けれども、それとは単位の異なる太さプロパティがあ@c
1449 るということにも注意してください。例えば、ビームの太さプロパティは譜表スペース@c
1452 それでは、どうやって長さをフォント サイズに比例させるのでしょうか?これは、ま@c
1453 さにこの目的のために提供されている @code{magstep} と呼ばれる特別な関数の助けを@c
1454 借りることによって達成できます。この関数は引数を 1 つ -- フォント サイズの変化
1455 (前の例では @hash{}-2) -- をとり、他のオブジェクトの縮小に比例したスケーリング
1456 ファクタを返します。以下のように使用します:
1458 @cindex alignAboveContext property, example
1459 @cindex @code{\with}, example
1460 @cindex Clef, example of overriding
1461 @cindex TimeSignature, example of overriding
1462 @cindex fontSize property, example
1463 @cindex StaffSymbol, example of overriding
1464 @cindex magstep function, example of using
1465 @cindex staff-space property, example
1466 @cindex stencil property, example
1468 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1469 \new Staff ="main" {
1476 alignAboveContext = #"main"
1477 \override Clef #'stencil = ##f
1478 \override TimeSignature #'stencil = ##f
1480 % Reduce stem length and line spacing to match
1481 \override StaffSymbol #'staff-space = #(magstep -2)
1491 ステムの長さと他の多くの長さに関係するプロパティは常に @code{staff-space} プロ@c
1492 パティの値と比例関係になるよう算出されるため、それらの長さも自動的にスケール
1493 ダウンされます。これはオッシアの垂直方向のスケールだけに効果を及ぼすということ@c
1494 に注意してください -- 水平方向のスケールは、メインの音楽と同期するよう、メイン@c
1495 の音楽のレイアウトによって決定されるため、水平方向のスケールは
1496 @code{staff-space} の変更によっていかなる影響も受けません。もちろん、メインの@c
1497 音楽のすべてのスケールがこの方法で変更された場合、水平方向のスペースも影響を受@c
1498 けます。このことについては、後のレイアウト セクションで議論します。
1500 そして、これでオッシアの作成は完了です。他のすべてのオブジェクトのサイズと長さ@c
1501 が類似の方法で変更されるかもしれません。
1503 上記の例のようなスケールのちょっとした変更に対して、小節線、ビーム、ヘアピン、@c
1504 スラーなどのさまざまな描画線の太さは通常はグローバルな調節を必要としません。あ@c
1505 る特定のレイアウト オブジェクトの太さを調節する必要がある場合、それを達成する@c
1506 最良の方法はそのオブジェクトの @code{thickness} プロパティをオーバライドするこ@c
1507 とです。スラーの太さを変更する例は @ref{Properties of layout objects} で示され@c
1508 ています。すべての描画オブジェクト (つまり、フォントから作り出されるオブジェク@c
1509 トではないもの) の太さが同様の方法で変更されるかもしれません。
1512 @node Placement of objects
1513 @section Placement of objects
1517 * Automatic behavior::
1518 * Within-staff objects::
1519 * Outside-staff objects::
1523 @node Automatic behavior
1524 @subsection Automatic behavior
1526 @cindex within-staff objects
1527 @cindex outside-staff objects
1528 @cindex objects, within-staff
1529 @cindex objects, outside-staff
1531 音楽表記には譜表に属するオブジェクトがいくつかあり、他のオブジェクトは譜表の外@c
1532 側に置かれるべきです。それらはそれぞれ譜表内部オブジェクトと譜表外部オブジェク@c
1535 譜表内部オブジェクトは譜表上に置かれます -- 音符の玉、ステム、臨時記号などで@c
1536 す。通常、それらの位置は音楽自体によって決定されます -- 譜表内部オブジェクトは@c
1537 譜表のある特定の線と同じ垂直位置に置かれたり、そこに置かれるべき他のオブジェク@c
1538 トにくっつけられたりします。近接する和音の中にある音符の玉、ステム、臨時記号の@c
1539 衝突は普通は自動的に回避されます。これから見ていくように、この自動配置を変更す@c
1540 ることができるコマンドとオーバライドがあります。
1542 譜表の外部にあるオブジェクトには、リハーサル記号、テキスト、強弱記号などがあり@c
1543 ます。LilyPond が持つ譜表外部オブジェクトの垂直位置のルールは、譜表外部オブ@c
1544 ジェクトをできるだけ譜表の近くに、しかし他のオブジェクトと衝突しない程度の近さ@c
1545 に置くというものです。以下で示すように、LilyPond はオブジェクトを配置する順番@c
1546 を決定するために @code{outside-staff-priority} プロパティを使用します。
1548 最初に、LilyPond はすべての譜表内部オブジェクトを配置します。それから、@c
1549 @code{outside-staff-priority} に従って譜表外部オブジェクトを並べます。譜表外部@c
1550 オブジェクトは最小の @code{outside-staff-priority} を持つオブジェクトから順番に
1551 1 つずつ並べられ、すでに配置されたオブジェクトと衝突しないように配置されます。@c
1552 つまり、2 つの譜表外部オブジェクトが同じスペースを巡って競合する場合、より小さな
1553 @code{outside-staff-priority} を持つオブジェクトが譜表の近くに配置されます。2
1554 つのオブジェクトが同じ @code{outside-staff-priority} を持つ場合、先に発生する@c
1555 オブジェクトが譜表の近くに配置されます。
1557 以下の例では、すべてのマークアップ テキストが同じ優先度を持っています (なぜな@c
1558 ら、優先度が明示的にセットされていないからです)。@q{Text3} が自動的に譜表の近@c
1559 く、@q{Text2} のすぐ下に納まるよう配置されていることに注意してください。
1561 @cindex markup example
1563 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1570 デフォルトでは、譜も互いにできるだけ近くなるよう配置されます (最小間隔に従いま@c
1571 す)。音符が隣接する譜表に向かって長く突き出てている場合、譜を離さないと表記が@c
1572 重なり合ってしまう場合にのみ譜は離されます。以下の例は譜の調整によって音符が
1573 @q{ぴったりと納まる} 様子を示しています:
1575 @lilypond[quote,ragged-right,verbatim]
1578 \relative c' { c a, }
1581 \relative c'''' { c a, }
1587 @node Within-staff objects
1588 @subsection Within-staff objects
1590 これまでにコマンド @code{\voiceXXX} がスラー、タイ、運指法記号、ステムの向きに@c
1591 依存する他のすべてに対してどのように影響を与えるかを見てきました。これらのコマ@c
1592 ンドは、多声部音楽を記述しているときに上下する旋律を見分けられるようにすること@c
1593 を可能にするために不可欠なものです。しかしながら、この自動機能をオーバライドす@c
1594 る必要がある場合もあります。このオーバライドは音楽全体に対しても、個々の音符に@c
1595 対してもできます。この自動機能を制御しているプロパティは各レイアウト オブジェ@c
1596 クトの @code{direction} プロパティです。まず、これは何をするのかを説明し、それ@c
1597 から、作成済みのコマンドをいくつか紹介します。それらのコマンドを使うと、一般的@c
1598 な変更のための明示的なオーバライドをコードしなくて済みます。
1601 スラーやタイのようなレイアウト オブジェクトはカーブを描き、曲がり、上下しま@c
1602 す。ステムやフラグのような他のオブジェクトも上下の向きによって位置が左右しま@c
1603 す。@code{direction} がセットされているときは、これは自動的に制御されます。
1610 以下の例は、小節 1 でステムのデフォルトの振る舞いを示しています。高い位置にあ@c
1611 る音符のステムは下向きで、低い位置にある音符のステムは上向きです。続いて 4 つ@c
1612 の音符のステムをすべて強制的に下向きにし、4 つの音符のステムをすべて強制的に上@c
1613 向きにし、最後に 4 つの音符のステムをデフォルトに戻します。
1615 @cindex Stem, example of overriding
1616 @cindex direction property, example
1618 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1620 \override Stem #'direction = #DOWN
1622 \override Stem #'direction = #UP
1624 \revert Stem #'direction
1628 ここで定数 @code{DOWN} と @code{UP} を使っています。これらはそれぞれ値 @code{-1}
1629 と @code{+1} を持ち、定数の代わりにそれらの数値を使うこともできまはす。さらに値
1630 @code{0} を使う場合もあります。この値はステムでは @code{UP} を意味するものとし@c
1631 て扱われますが、いくつかのオブジェクトでは @q{center} という意味になります。値
1632 @code{0} を持つ定数に @code{CENTER} があります。
1634 しかしながら、これらの明示的なオーバライドは普通は使われません。もっと簡単で定@c
1635 義済みのコマンドが利用可能だからです。ここに一般的なコマンドの表を挙げます。そ@c
1636 れぞれのコマンドの意味が明白でない場合は、そのコマンドの意味を述べています。
1638 @multitable @columnfractions .2 .2 .25 .35
1643 @item @code{\arpeggioArrowDown}
1644 @tab @code{\arpeggioArrowUp}
1645 @tab @code{\arpeggioNormal}
1646 @tab 矢印が下に付く、上に付く、付かない
1647 @item @code{\dotsDown}
1649 @tab @code{\dotsNeutral}
1651 @item @code{\dynamicDown}
1652 @tab @code{\dynamicUp}
1653 @tab @code{\dynamicNeutral}
1655 @item @code{\phrasingSlurDown}
1656 @tab @code{\phrasingSlurUp}
1657 @tab @code{\phrasingSlurNeutral}
1658 @tab Note: スラー コマンドとは別になります
1659 @item @code{\slurDown}
1661 @tab @code{\slurNeutral}
1663 @item @code{\stemDown}
1665 @tab @code{\stemNeutral}
1667 @item @code{\textSpannerDown}
1668 @tab @code{\textSpannerUp}
1669 @tab @code{\textSpannerNeutral}
1670 @tab スパナとして挿入されるテキストが譜表の下/上にくる
1671 @item @code{\tieDown}
1673 @tab @code{\tieNeutral}
1675 @item @code{\tupletDown}
1676 @tab @code{\tupletUp}
1677 @tab @code{\tupletNeutral}
1681 これらの定義済みコマンドの前には @code{@bs{}once} が付か@strong{ない}かもしれ@c
1682 ません。コマンドの効果を単一の音符に制限したい場合、等価の @code{@bs{}once
1683 @bs{}override} コマンドを使用するか、あるいは、定義済みコマンドを使用して、効@c
1684 果を受けた音符の後に対応する @code{@bs{}xxxNeutral} コマンドを置かなければなり@c
1687 @subheading Fingering
1689 @cindex fingering, placement
1690 @cindex fingering, chords
1692 単一の音符に対する運指法記号の配置も @code{direction} プロパティによって制御で@c
1693 きますが、@code{direction} を変更しても和音の運指法記号は影響を受けません。こ@c
1694 れから見ていくように、和音の中の個々の音符の運指法記号を制御するための特別なコ@c
1695 マンドがあります。このコマンドを使うことで運指法記号を各音符の上、下、左、右に@c
1698 まず、単一の音符の運指法記号に対する @code{direction} を効果を示します。最初の@c
1699 小節はデフォルト状態で、その後で @code{DOWN} と @code{UP} を指定したときの効果@c
1702 @cindex Fingering, example of overriding
1703 @cindex direction property, example
1705 @lilypond[quote,verbatim,relative=2]
1707 \override Fingering #'direction = #DOWN
1709 \override Fingering #'direction = #UP
1713 しかしながら、@code{direction} プロパティをオーバライドすることは、手動で運指@c
1714 法記号を音符の上または下に配置するもっとも簡単な方法ではありません。運指法番号@c
1715 の前に @code{-} の代わりに @code{_} または @code{^} を使う方が普通は適切です。@c
1716 ここで、上記の例にこの方法を用いた例を挙げます:
1718 @cindex fingering example
1720 @lilypond[quote,verbatim,relative=2]
1726 @code{direction} プロパティは和音では無視されますが、方向を示す接頭辞 @code{_}
1727 と @code{^} は機能します。以下で示すように、デフォルトでは、運指法記号は和音の@c
1728 音符の上と下の両方に自動的に配置されます:
1730 @cindex fingering example
1732 @lilypond[quote,verbatim,relative=2]
1739 しかし、以下で示すように、運指法番号のすべてまたはいずれかを手動で強制的に和音@c
1740 の上または下に配置するために、これはオーバライドされるかもしれません:
1742 @cindex fingering example
1744 @lilypond[quote,verbatim,relative=2]
1750 @code{\set fingeringOrientations} コマンドを使うことによって和音の中にある個々@c
1751 の音符の運指法記号の配置をより細かく制御することさえできます。このコマンドの@c
1755 @code{\set fingeringOrientations = #'([up] [left/right] [down])}
1759 @code{fingeringOrientations} は @code{Voice} コンテキストのプロパティであり、@c
1760 @code{New_fingering_engraver} によって作成、使用されるため、@code{\set} が使用@c
1763 このプロパティには 1 つから 3 つまでの値のリストがセットされるかもしれません。@c
1764 このプロパティは運指法記号を上 (リストに @code{up} がある場合)、下 (リストに
1765 @code{down} がある場合)、左 (リストに @code{left} がある場合。リストに
1766 @code{right} がある場合は右) に配置します。逆に配置位置がリストされていない場@c
1767 合、その位置に運指法記号は配置されません。LilyPond はこれらの制約を受け取り、@c
1768 後に続く和音の音符への運指法記号をうまく配置します。@code{left} と @code{right}
1769 は相互排他的であるということに注意してください -- 運指法記号は左右のどちらかに@c
1770 しか配置されないか、どちらにも配置されません。
1772 @warning{このコマンドを使って単一の音符への運指法記号の配置をコントロールする@c
1773 には、その音符を角括弧で囲んで単一音符の和音として記述する必要があります。}
1777 @cindex fingering example
1778 @cindex @code{\set}, example of using
1779 @cindex fingeringOrientations property, example
1781 @lilypond[quote,fragment,ragged-right,verbatim,relative=1]
1782 \set fingeringOrientations = #'(left)
1784 < c-1 e-2 g-3 b-5 > 4
1785 \set fingeringOrientations = #'(left)
1787 < c-1 e-2 g-3 b-5 > 4
1788 \set fingeringOrientations = #'(up left down)
1790 < c-1 e-2 g-3 b-5 > 4
1791 \set fingeringOrientations = #'(up left)
1793 < c-1 e-2 g-3 b-5 > 4
1794 \set fingeringOrientations = #'(right)
1796 < c-1 e-2 g-3 b-5 > 4
1800 運指法記号が少し込み合っているように見える場合は、@code{font-size} でサイズを@c
1801 下げることができます。デフォルト値は内部リファレンスの @code{Fingering} オブ@c
1802 ジェクトのページから @code{-5} であることがわかるので、@code{-7} にセットして@c
1805 @lilypond[quote,fragment,ragged-right,verbatim,relative=1]
1806 \override Fingering #'font-size = #-7
1807 \set fingeringOrientations = #'(left)
1809 < c-1 e-2 g-3 b-5 > 4
1810 \set fingeringOrientations = #'(left)
1812 < c-1 e-2 g-3 b-5 > 4
1813 \set fingeringOrientations = #'(up left down)
1815 < c-1 e-2 g-3 b-5 > 4
1816 \set fingeringOrientations = #'(up left)
1818 < c-1 e-2 g-3 b-5 > 4
1819 \set fingeringOrientations = #'(right)
1821 < c-1 e-2 g-3 b-5 > 4
1825 @node Outside-staff objects
1826 @subsection Outside-staff objects
1828 譜表外部オブジェクトは自動的に衝突を回避するよう配置されます。小さな値の
1829 @code{outside-staff-priority} プロパティを持つオブジェクトは譜表の近くに配置さ@c
1830 れ、他の譜表外部オブジェクトは衝突を避けるのに必要な分だけ離されます。@c
1831 @code{outside-staff-priority} は @code{grob-interface} の中で定義されているた@c
1832 め、すべてのレイアウト オブジェクトのプロパティです。デフォルトでは、すべての@c
1833 譜表内部オブジェクトの @code{outside-staff-priority} は @code{@hash{}f} にセッ@c
1834 トされていて、譜表外部オブジェクトが作成されたときにその譜表外部オブジェクトの
1835 @code{outside-staff-priority} に適当な数値がセットされます。以下の表はデフォル@c
1836 トで @code{Staff} コンテキストまたは @code{Voice} コンテキストの中に配置される@c
1837 いくつかの一般的な譜表外部オブジェクトのデフォルトの
1838 @code{outside-staff-priority} 値を示しています。
1840 @multitable @columnfractions .3 .3 .3
1841 @headitem レイアウト オブジェクト
1843 @tab 以下のオブジェクトの配置を制御する:
1844 @item @code{MultiMeasureRestText}
1847 @item @code{TextScript}
1850 @item @code{OttavaBracket}
1852 @tab オッターバ (オクターブを上下させる記号) の囲み
1853 @item @code{TextSpanner}
1856 @item @code{DynamicLineSpanner}
1859 @item @code{VoltaBracketSpanner}
1861 @tab Volta (番号付きのリピート) の囲み
1862 @item @code{TrillSpanner}
1867 これらのうちのいくつかのデフォルトでの配置を示している例を挙げます。
1869 @cindex text spanner
1870 @cindex ottava bracket
1872 @funindex \startTextSpan
1873 @funindex startTextSpan
1874 @funindex \stopTextSpan
1875 @funindex stopTextSpan
1877 @cindex TextSpanner, example of overriding
1878 @cindex bound-details property, example
1880 @lilypond[quote,fragment,ragged-right,verbatim,relative=1]
1881 % Set details for later Text Spanner
1882 \override TextSpanner #'(bound-details left text)
1883 = \markup { \small \bold Slower }
1884 % Place dynamics above staff
1886 % Start Ottava Bracket
1891 % Add Dynamic Line Spanner
1897 c\ff c \stopTextSpan
1898 % Stop Ottava Bracket
1903 この例はテキスト スパナ -- 音楽の上に置かれる延長線付きのテキスト -- の作成方@c
1904 法についても示しています。スパナは @code{@bs{}startTextSpan} コマンドから
1905 @code{@bs{}stopTextSpan} コマンドまで延び、テキストのフォーマットは
1906 @code{@bs{}override TextSpanner} コマンドによって定義されます。詳細は
1907 @ruser{Text spanners} を参照してください。
1909 この例はさらにオッターバ囲みを作成する方法についても示しています。
1911 @cindex tweaking bar number placement
1912 @cindex bar numbers, tweaking placement
1913 @cindex tweaking metronome mark placement
1914 @cindex metronome mark, tweaking placement
1915 @cindex tweaking rehearsal mark placement
1916 @cindex rehearsal marks, tweaking placement
1918 小節番号、メトロノーム記号、リハーサル記号は示されていないということに注意して@c
1919 ください。デフォルトでは、それらは @code{Score} コンテキストの中で作成され、そ@c
1920 れらの @code{outside-staff-priority} は @code{Staff} コンテキストの中で作成さ@c
1921 れるレイアウト オブジェクトとは異なり無視されます。小節番号、メトロノーム記号@c
1922 あるいはリハーサル記号をそれらの @code{outside-staff-priority} に従って配置し@c
1923 たいのなら、@code{Score} コンテキストからそれぞれ @code{Bar_number_engraver},
1924 @code{Metronome_mark_engraver}, @code{Mark_engraver} を削除して最上位の
1925 @code{Staff} コンテキストに置く必要があります。そうした場合、それらの記号には@c
1926 以下のデフォルトの @code{outside-staff-priority} 値が与えられます:
1928 @multitable @columnfractions .3 .3
1929 @headitem レイアウト オブジェクト @tab 優先度
1930 @item @code{RehearsalMark} @tab @code{1500}
1931 @item @code{MetronomeMark} @tab @code{1000}
1932 @item @code{BarNumber} @tab @code{ 100}
1935 @code{outside-staff-priority} のデフォルト値による配置があなたの望みに合わない@c
1936 場合、いずれかのオブジェクトの優先度をオーバライドすることになるかもしれませ@c
1937 ん。上記の例で、オッターバ囲みをテキスト スパナの下に配置したいとします。すべ@c
1938 きことは、@code{OttavaBracket} は @code{Staff} コンテキストの中に作成されると@c
1939 いうことを思い出し、@code{OttavaBracket} の優先度を内部リファレンスか上記の表@c
1940 で調べて、それを @code{TextSpanner} の値よりも小さくすることです:
1942 @cindex TextSpanner, example of overriding
1943 @cindex bound-details property, example
1945 @lilypond[quote,fragment,ragged-right,verbatim,relative=1]
1946 % Set details for later Text Spanner
1947 \override TextSpanner #'(bound-details left text)
1948 = \markup { \small \bold Slower }
1949 % Place dynamics above staff
1951 %Place following Ottava Bracket below Text Spanners
1952 \once \override Staff.OttavaBracket #'outside-staff-priority = #340
1953 % Start Ottava Bracket
1958 % Add Dynamic Line Spanner
1964 c\ff c \stopTextSpan
1965 % Stop Ottava Bracket
1970 @cindex slurs and outside-staff-priority
1971 @cindex slurs and articulations
1972 @cindex articulations and slurs
1974 スラーはデフォルトでは譜表内部オブジェクトに分類されています。しかしながら、譜@c
1975 表の上部に配置された音符に付くスラーはしばしば譜表の上に表示されます。このこと@c
1976 は、スラーがまず最初に配置されるため、アーティキュレーションなどの譜表外部オブ@c
1977 ジェクトをあまりにも高い位置に押し上げる可能性があります。アーティキュレーショ@c
1978 ンの @code{avoid-slur} プロパティに @code{'inside} をセットすることでアーティ@c
1979 キュレーションをスラーよりも内側に配置することができます。しかし、@c
1980 @code{avoid-slur} プロパティはアーティキュレーションの
1981 @code{outside-staff-priority} が @code{@hash{}f} にセットされている場合にのみ@c
1982 効果を持ちます。代替手段として、スラーの @code{outside-staff-priority} に数値@c
1983 をセットすることによって、スラーを他の譜表外部オブジェクトとともに
1984 @code{outside-staff-priority} 値に従って配置することができます。ここで、2 つの@c
1987 @lilypond[quote,verbatim,relative=2]
1988 c4( c^\markup\tiny\sharp d4.) c8
1990 \once \override TextScript #'avoid-slur = #'inside
1991 \once \override TextScript #'outside-staff-priority = ##f
1992 c^\markup\tiny\sharp d4.) c8
1993 \once \override Slur #'outside-staff-priority = #500
1994 c4( c^\markup\tiny\sharp d4.) c8
1997 @code{outside-staff-priority} は、個々のオブジェクトの垂直方向の配置を制御する@c
1998 ために使用することもできます。しかしながら、その結果は常に望み通りになるわけで@c
1999 はありません。@ref{Automatic behavior} にある例で @qq{Text3} を @qq{Text4} の@c
2000 上に配置したいとします。すべきことは @code{TextScript} の優先度を内部リファレ@c
2001 ンスか上記の表で調べて、@qq{Text3} の優先度を大きくすることです:
2003 @cindex TextScript, example of overriding
2004 @cindex outside-staff-priority property, example
2006 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
2009 \once \override TextScript #'outside-staff-priority = #500
2014 これはたしかに @qq{Text3} を @qq{Text4} の上に配置しています。しかし、@c
2015 @qq{Text3}を @qq{Text2} の上に配置して、@qq{Text4} を押し下げてもいます。おそ@c
2016 らく、これはそれほど望ましい結果ではないでしょう。本当に望んでいることは、すべ@c
2017 ての注釈を譜表の上に譜表から同じ距離だけ離して配置することです。そうするには明@c
2018 らかに、テキストのためにもっと広いスペースを確保するために、音符を水平方向に広@c
2019 げる必要があります。これは @code{@bs{}textLengthOn} コマンドを用いることで達成@c
2022 @subheading \textLengthOn
2024 @cindex notes, spreading out with text
2026 @funindex \textLengthOn
2027 @funindex textLengthOn
2028 @funindex \textLengthOff
2029 @funindex textLengthOff
2031 デフォルトでは、音楽のレイアウトが考慮されている限り、マークアップによって作り@c
2032 出されるテキストは水平方向のスペースと関係しません。@code{@bs{}textLengthOn}
2033 コマンドはこの動作を逆にして、テキストの配置に便宜をはかる必要がある限り、音符@c
2036 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
2037 \textLengthOn % Cause notes to space out to accommodate text
2044 デフォルトの動作に戻すためのコマンドは @code{@bs{}textLengthOff} です。@c
2045 @code{@bs{}once} は @code{@bs{}override}, @code{@bs{}set}, @code{@bs{}revert}
2046 それに @code{@bs{}unset} だけに付けることができるということを思い出してくださ@c
2047 い。そのため、@code{@bs{}textLengthOn} で @code{@bs{}once} を使うことはできま@c
2050 @cindex markup text, allowing collisions
2052 マークアップ テキストは譜表の上に突き出している音符を避けます。このことが望ま@c
2053 しくない場合、優先度を @code{@hash{}f} にセットすることによって上方向への自動@c
2054 再配置を Off にすることになるかもしれません。ここで、マークアップ テキストがそ@c
2055 のような音符とどのように相互作用するかを示す例を挙げます。
2057 @cindex TextScript, example of overriding
2058 @cindex outside-staff-priority property, example
2060 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
2061 % This markup is short enough to fit without collision
2065 % This is too long to fit, so it is displaced upwards
2069 % Turn off collision avoidance
2070 \once \override TextScript #'outside-staff-priority = ##f
2074 % Turn off collision avoidance
2075 \once \override TextScript #'outside-staff-priority = ##f
2076 \textLengthOn % and turn on textLengthOn
2077 c,,2^"Long Text " % Spaces at end are honored
2082 @subheading Dynamics
2084 @cindex tweaking dynamics placement
2085 @cindex dynamics, tweaking placement
2087 通常、強弱記号は譜表の下に配置されます。しかしながら、@code{dynamicUp} コマン@c
2088 ドを使うことで上に配置されるかもしれません。強弱記号は、その記号が付いている音@c
2089 符と垂直方向の関係で配置され、フレージング スラーや小節番号などの譜表内部オブ@c
2090 ジェクトのすべてよりも下 (あるいは上) に配置されます。このことは、以下の例のよ@c
2091 うに、到底受け入れられない結果を生み出す可能性があります:
2093 @lilypond[quote,fragment,ragged-right,verbatim,relative=1]
2098 bes4.~\f\< \( bes4 bes8 des4\ff\> c16 bes\! |
2099 ees,2.~\)\mf ees4 r8 |
2102 しかしながら、音符とそれに付けられた強弱記号が互いに近い場合、自動配置は後の方@c
2103 にある強弱記号を譜表から離すことによって衝突を避けます。しかし、以下のかなり不@c
2104 自然な例が示すように、それは最適な配置ではないかもしれません:
2106 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
2112 @q{実際} の音楽で同じような状況があった場合、音符の間隔をもう少し広げて、すべ@c
2113 ての強弱記号が譜表から垂直方向に同じだけ離れるようにする方が望ましいかもしれま@c
2114 せん。マークアップ テキストの場合は @code{@bs{}textLengthOn} コマンドを用いる@c
2115 ことによってそうすることができますが、強弱記号には等価のコマンドがありません。@c
2116 そのため、@code{@bs{}override} コマンドを用いてそれを達成する方法を見出す必要@c
2119 @subheading Grob sizing
2122 @cindex sizing grobs
2124 まず最初に、グラフィカル オブジェクトのサイズがどのように決定されるかを学ばな@c
2125 くてはなりません。すべてのグラフィカル オブジェクトの内部では参照ポイントが定@c
2126 義され、それはそれらの親オブジェクトとの相対位置を決定するために使用されます。@c
2127 このポイントは親オブジェクトから垂直方向に @code{X-offset}、垂直方向に
2128 @code{Y-offset} 離れた位置になります。オブジェクトの水平方向の広がりは数値のペア
2129 @code{X-extent} で与えられ、そのペアはオブジェクトの左端と右端の参照ポイントと@c
2130 の相対関係について述べています。垂直方向の広がりも同様に数値のペア
2131 @code{Y-extent} によって与えられます。これらは @code{grob-interface} をサポー@c
2132 トするすべてのグラフィカル オブジェクトが持つプロパティです。
2134 @cindex @code{extra-spacing-width}
2136 デフォルトでは、譜表外部オブジェクトには 0 の幅が与えられているため、水平方向@c
2137 で重なる可能性があります。これは @code{extra-spacing-width} に @code{'(+inf.0 .
2138 -inf.0)} をセットすることによって、左端の広がりにプラス無限大、右端の広がりに@c
2139 マイナス無限大を付け加えるというトリックによって達成されています。そのため、譜@c
2140 表外部オブジェクトが水平方向で重ならないことを保証するには、@c
2141 @code{extra-spacing-width} の値を @code{'(0 . 0)} にオーバライドする必要があり@c
2142 ます。これにより、本当の幅が明らかになります。以下は強弱記号テキストに対してこ@c
2146 \override DynamicText #'extra-spacing-width = #'(0 . 0)
2150 これが前の例で機能するかどうかを見てみましょう:
2152 @cindex DynamicText, example of overriding
2153 @cindex extra-spacing-width property, example
2155 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
2157 \override DynamicText #'extra-spacing-width = #'(0 . 0)
2162 確かに強弱記号の再配置をストップさせています。しかし、2 つの問題が残っていま@c
2163 す。強弱記号を互いにもう少し離すべきであり、それらは譜表から同じ距離にあるほう@c
2164 が望ましいです。最初の問題は簡単に解決できます。@code{extra-spacing-width} を 0
2165 にする代わりに、もう少し大きな値を与えるのです。単位は 2 本の譜表線の間隔なの@c
2166 で、左端を 1 単位の半分だけ左に移動させ、右端を 1 単位の半分だけ右に移動させる@c
2169 @cindex DynamicText, example of overriding
2170 @cindex extra-spacing-width property, example
2172 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
2174 % Extend width by 1 staff space
2175 \override DynamicText #'extra-spacing-width = #'(-0.5 . 0.5)
2180 これで前よりも良くなりました。しかし、強弱記号が音符に合わせて上下するよりも、@c
2181 同じベースラインで揃っている方が望ましいでしょう。それを行うためのプロパティは
2182 @code{staff-padding} であり、後に続くセクションでカバーされています。
2185 @node Collisions of objects
2186 @section Collisions of objects
2191 * Fixing overlapping notation::
2192 * Real music example::
2196 @node Moving objects
2197 @subsection Moving objects
2199 @cindex moving overlapping objects
2200 @cindex moving colliding objects
2201 @cindex moving colliding grobs
2202 @cindex objects, moving colliding
2203 @cindex grobs, moving colliding
2205 これを聞いて驚くかもしれませんが、LilyPond は完璧ではありません。いくつかの表@c
2206 記要素が重なりある可能性があります。これは遺憾なことですが、実際にはごく稀で@c
2207 す。通常、オブジェクトを移動させる必要性は読みやすさや美しさのためです -- オブ@c
2208 ジェクトの周りにもう少しスペースを多く/少なくとった方がより良くなるといった場@c
2211 表記の重なりを解決する主要なアプローチが 3 つあります。それらは以下の順番で考@c
2216 重なり合っているオブジェクトの 1 つの @strong{direction} を @ref{Within-staff
2217 objects} でリストアップした内部オブジェクトのための定義済みコマンドを用いて変@c
2218 更することになるかもしれません。ステム、スラー、ビーム、タイ、強弱記号、テキス@c
2219 ト、連符はこの方法で容易に再配置できるかもしれません。この方法の限界は配置の仕@c
2220 方の選択肢が 2 つしかないことであり、どちらも適当でないかもしれません。
2223 LilyPond がレイアウト オブジェクトを配置するときに使用する@strong{オブジェクト
2224 プロパティ}を @code{@bs{}override} を用いて変更することになるかもしれません。@c
2225 オブジェクト プロパティに変更を加えることの利点は、(a) スペースをとる必要があ@c
2226 る場合に他のいくつかのオブジェクトは自動的に移動させられます、(b) 1 回のオーバ@c
2227 ライドを同じオブジェクト タイプのインスタンスすべてに適用することができます。@c
2228 変更するプロパティには以下のものが含まれます:
2235 これはすでに詳しくカバーされています -- @ref{Within-staff objects} を参照して@c
2239 @code{padding}, @code{left-padding},
2240 @code{right-padding}, @code{staff-padding}
2243 @cindex left-padding property
2244 @cindex padding property
2245 @cindex right-padding property
2246 @cindex staff-padding property
2248 あるオブジェクトが配置されるとき、そのオブジェクトの @code{padding} プロパティ@c
2249 が、そのオブジェクトとそのオブジェクトに最も隣接するオブジェクトの端との間に置@c
2250 かれる間隔を指定します。@strong{配置される最中}のオブジェクトの @code{padding}
2251 値が使用されるということに注意してください。すでに配置されたオブジェクトの
2252 @code{padding} 値は無視されます。@code{padding} によって指定された間隔は
2253 @code{side-position-interface} をサポートするオブジェクトすべてに適用すること@c
2256 臨時記号のグループの配置は、@code{padding} の代わりに、@code{left-padding} と
2257 @code{right-padding} によって制御されます。これらのプロパティは
2258 @code{AccidentalPlacement} オブジェクトの中にあり、注意すべきことに、そのオブ@c
2259 ジェクトは @strong{Staff} コンテキストの中にあります。譜刻プロセスでは、音符の@c
2260 玉が最初に譜刻され、臨時記号 (がある場合は) が次に音符の玉の左側に付け加えられ@c
2261 ます。このとき、臨時記号と音符の玉の間隔は @code{right-padding} プロパティに@c
2262 よって指定されます。そのため、@code{AccidentalPlacement} オブジェクトの
2263 @code{right-padding} プロパティだけが臨時記号の配置に影響を与えます。
2265 @code{staff-padding} プロパティは @code{padding} プロパティと深い関わりがあり@c
2266 ます: @code{padding} プロパティは、@code{side-position-interface} をサポートす@c
2267 るオブジェクトとそれに最隣接する他のオブジェクト (一般には音符や譜表線) との間@c
2268 のスペースの最小量を制御します。一方、@code{staff-padding} は常に譜表の外側に@c
2269 配置されるレイアウト オブジェクトにのみ適用されます -- これは譜表の外側に配置@c
2270 されるオブジェクトと譜表の間に挿入されるべきスペースの最小量を制御します。@c
2271 @code{staff-paddin} は譜表ではなく音符との相対関係で配置されるオブジェクトには@c
2272 影響を与えないということに注意してください。そのようなオブジェクトに対して
2273 @code{staff-padding} のオーバライドを行ったとしてもエラーは起きないかもしれま@c
2276 あなたが再配置しようとしているオブジェクトに対して求められる @code{padding} プ@c
2277 ロパティはどれなのかを見つけるには、内部リファレンスに戻ってそのオブジェクトの@c
2278 プロパティを調べる必要があります。@code{padding} プロパティはあなたが再配置し@c
2279 ようとしているオブジェクトの中には無いかもしれないということに注意してくださ@c
2280 い。その場合は、そのオブジェクトに関係があるオブジェクトを調べてください。
2282 すべての @code{padding} 値は譜表スペースで測られます。たいていのオブジェクトで@c
2283 は、この値はデフォルトで約 1.0 かそれ以下にセットされています (それぞれのオブ@c
2284 ジェクトで値はさまざまです)。間隔を大きく (あるいは小さく) する必要がある場@c
2285 合、その値はオーバライドされるかもしれません。
2288 @code{self-alignment-X}
2290 @cindex self-alignment-X property
2292 このプロパティを使うことで、親オブジェクトの参照ポイントに従って、オブジェクト@c
2293 を左、右、中央に揃えることができます。このプロパティは
2294 @code{self-alignment-interface} をサポートするオブジェクトすべてに対して使用す@c
2295 ることができます。一般に、テキストを保持するオブジェクトです。値は @code{Left},
2296 @code{RIGHT}, @code{CENTER} です。代替手段として、@code{-1} から @code{+1} ま@c
2297 での数値を指定することもできます。@code{-1} は左揃えであり、@code{+1} は右揃@c
2298 え、その間の数値は左揃えから右揃えへのテキストを移動させます (訳者: @code{-0.5}
2299 であれば、左揃えと中央揃えの中間ということ)。@code{1} よりも大きな数値を指定す@c
2300 ることでテキストをさらに左へ、@code{-1} よりも小さな数値を指定することでテキス@c
2301 トをさらに右へ移動させることができます。この値を @code{1} 増減することによる移@c
2305 @code{extra-spacing-width}
2307 @cindex extra-spacing-width property
2309 このプロパティは @code{item-interface} をサポートするオブジェクトすべてで利用@c
2310 可能です。このプロパティは 2 つの数値をとり、最初の数値はオブジェクトの左側に@c
2311 余白を追加し、2 番目の数値はオブジェクトの右側に余白を追加します。負値はオブ@c
2312 ジェクトの端を左に移動させ、正値は右に移動させます。そのため、オブジェクトを広@c
2313 くするには、最初の数値を負値にして、2 番目の数値を正値にする必要があります。す@c
2314 べてのオブジェクトが両方の数値を遵守するわけではないということに注意してくださ@c
2315 い。例えば、@code{Accidental} オブジェクトは最初の数値 (左端) にしか注意を払い@c
2319 @code{staff-position}
2321 @cindex staff-position property
2323 @code{staff-position} は @code{staff-symbol-referencer-interface} のプロパティ@c
2324 です。これは、譜表との相対関係で配置されるオブジェクトによってサポートされま@c
2325 す。このプロパティはオブジェクトの垂直方向の位置を、譜表の中央にある譜表線から@c
2326 譜表スペースの半分を単位として、指定します。このプロパティは複数小節に亘る休@c
2327 符、タイ、異なるボイスの中にある音符といったレイアウト オブジェクトの衝突を解@c
2333 @cindex force-hshift property
2335 和音の中で近接して配置された音符や異なるボイスの中にあって同時に起こる音符は、@c
2336 音符の玉の衝突を避けるために、2 つ (場合によってはそれ以上) の列に配置されま@c
2337 す。この列は音符列と呼ばれ、その列に音符をレイアウトするために @code{NoteColumn}
2340 @code{force-hshift} プロパティは @code{NoteColumn} のプロパティです (実際には
2341 @code{note-column-interface} のプロパティです)。このプロパティを変更することで@c
2342 音符列を、音符列特有の単位 -- すなわち、最初のボイスの中にある音符の音符玉の幅
2343 -- に従って、移動させることができます。このプロパティは、通常の
2344 @code{@bs{}shiftOn} コマンド (@ref{Explicitly instantiating voices} を参照して@c
2345 ください) が音符の衝突を解決できないような複雑な状況で使用されるべきです。この@c
2346 目的のためには、@code{extra-offset} プロパティを用いるよりも @code{force-hshift}
2347 プロパティを用いる方が好ましいです。なぜなら、譜表スペースを単位とした距離を算@c
2348 出する必要が無く、@code{NoteColumn} の内外に音符を移動させることは音符玉のマー@c
2349 ジといった他のアクションに影響を与えるからです。
2354 最後に、他の方法がすべて失敗した場合、オブジェクトを手動で譜表の中央線からの垂@c
2355 直方向の相対位置に従って、あるいは新たに設定した位置との距離に従って、再配置す@c
2356 ることになるかもしれません。この方法の欠点は、再配置のための正確な値を算出する@c
2357 必要がある -- しばしば、その算出はそれぞれのオブジェクトに対して個々に、トライ@c
2358 &エラーで行われます -- 必要があるということ、さらに、この方法による移動は
2359 LilyPond が他のオブジェクトをすべて配置した後に行われるため、ユーザはその結果@c
2360 として起こるかもしれない衝突をすべて回避する責任があるということです。しかし、@c
2361 この方法の最大の問題点は、音楽が後で変更された場合に、再配置用の値を再び算出す@c
2362 る必要があるということです。このタイプの手動再配置のために使用されるプロパティ@c
2368 @cindex extra-offset property
2370 このプロパティは @code{grob-interface} をサポートするレイアウト オブジェクトの@c
2371 いずれかに適用されます。このプロパティはペアになった数値をとり、それぞれの数値@c
2372 は水平方向と垂直方向の移動を指定します。負値はオブジェクトを左または下へ移動さ@c
2373 せます。単位は譜表スペースです。この移動はオブジェクトの譜刻が完了した後に行わ@c
2374 れるため、あるオブジェクトを、任意の位置へ、他のオブジェクトに影響を与えること@c
2379 @cindex positions property
2381 このプロパティは、ビーム、スラー、連符の傾きと高さを手動で調節するために最も有@c
2382 用なプロパティです。このプロパティはペアになった数値をとり、それぞれの数値は@c
2383 ビーム、スラーなどの左端と右端の位置を譜表の中央線との距離で指定します。単位は@c
2384 譜表スペースです。けれども、スラーとフレージング スラーを任意の値で再配置する@c
2385 ことはできないということに注意してください。LilyPond はまずスラーが取り得る位@c
2386 置のリストを生成し、それからデフォルトでは @qq{最良に見える} スラーを探しま@c
2387 す。@code{positions} がオーバライドされていた場合、そのリストの中からリクエス@c
2388 トされた位置に最も近いスラーが選択されます。
2393 あるオブジェクトがこれらのプロパティすべてを持っているわけではありません。内部@c
2394 リファレンスに行き、そのオブジェクトではどのプロパティが利用可能なのかを調べる@c
2397 @multitable @columnfractions .5 .5
2398 @headitem オブジェクト タイプ
2400 @item アーティキュレーション (Articulation)
2404 @item 強弱記号 (Dynamic) (垂直方向)
2405 @tab @code{DynamicLineSpanner}
2406 @item 強弱記号 (Dynamic) (水平方向)
2407 @tab @code{DynamicText}
2408 @item 運指法記号 (Fingering)
2409 @tab @code{Fingering}
2410 @item リハーサル / テキスト記号 (Rehearsal / Text mark)
2411 @tab @code{RehearsalMark}
2414 @item テキスト -- つまり、@code{^"text"} (Text)
2415 @tab @code{TextScript}
2419 @tab @code{TupletBracket}
2423 @node Fixing overlapping notation
2424 @subsection Fixing overlapping notation
2426 今度は、前のセクションで扱ったプロパティが表記の重なりを解決する手助けをどのよ@c
2429 @subheading padding property
2432 @cindex fixing overlapping notation
2433 @cindex overlapping notation
2435 @code{padding} プロパティに値をセットすることによって、音符とその上または下に@c
2436 譜刻される記号との間の距離を増減することができます。
2438 @cindex Script, example of overriding
2439 @cindex padding property, example
2441 @lilypond[quote,fragment,relative=1,verbatim]
2443 \override Script #'padding = #3
2447 @cindex MetronomeMark, example of overriding
2448 @cindex padding property, example
2450 @lilypond[quote,fragment,relative=1,verbatim]
2451 % This will not work, see below:
2452 \override MetronomeMark #'padding = #3
2456 \override Score.MetronomeMark #'padding = #3
2461 2 番目の例では、ある特定のオブジェクトを扱うのはどのコンテキストなのかを突き止@c
2462 めることが重要であるということに注意してください。@code{MetronomeMark} オブ@c
2463 ジェクトは @code{Score} コンテキストの中で処理されるため、@code{Voice} コンテ@c
2464 キストの中でのプロパティの変更は無視されます。更に詳細を知りたければ、@c
2465 @ruser{Modifying properties} を参照してください。
2467 @code{outside-staff-priority} に従って配置されているオブジェクトの並びの中のあ@c
2468 るオブジェクトの @code{padding} プロパティが増やされた場合、そのオブジェクトと@c
2469 それよりも外側にあるすべてオブジェクトが移動させられます。
2472 @subheading left-padding and right-padding
2474 @cindex left-padding property
2475 @cindex right-padding property
2477 @code{right-padding} プロパティは臨時記号とそれが適用される音符との間のスペー@c
2478 スに影響を与えます。このプロパティを変更することは必ずしも必要ではありません@c
2479 が、以下の例は変更を必要とする状況の 1 つを示しています。B ナチュラルと B フ@c
2480 ラットの両方を保持する和音を譜刻したいとします。あいまいさ (あるいは多義: ここ@c
2481 では B が B ナチュラルと B フラットの両方に解釈できるということ) を避けるため@c
2482 に、音符の前にナチュラル記号とフラット記号の両方を置くことにします。以下に、そ@c
2483 れを達成するための試みをいくつか挙げます:
2485 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
2491 どれもうまくいっていません。2 番目と 3 番目の (和) 音符では 2 つの記号が衝突し@c
2494 これを達成するための方法の 1 つは、臨時記号のステンシルを、ナチュラル記号とフ@c
2495 ラット記号を望んでいる並びで保持しているマークアップでオーバライドすることで@c
2498 @cindex Accidental, example of overriding
2499 @cindex text property, example
2500 @cindex stencil property, example
2501 @cindex AccidentalPlacement, example of overriding
2502 @cindex right-padding property, example
2504 @lilypond[quote,ragged-right,verbatim]
2505 naturalplusflat = \markup { \natural \flat }
2507 \once \override Accidental
2508 #'stencil = #ly:text-interface::print
2509 \once \override Accidental #'text = #naturalplusflat
2510 \once \override Score.AccidentalPlacement #'right-padding = #1.5
2516 これは必然的に臨時記号のステンシルをオーバライドすることになります。このオーバ@c
2517 ライドについては後々までカバーされません。ステンシル タイプは手続きでなければならず、@c
2518 ここでは @code{Accidental} の @code{text} プロパティの内容 -- フラット記号が後@c
2519 に続くナチュラル記号 -- を譜刻するように変更されています。それらの記号は
2520 @code{right-padding} のオーバライドによって音符の玉からさらに遠くへ移動させら@c
2525 @subheading staff-padding property
2527 @cindex aligning objects on a baseline
2528 @cindex objects, aligning on a baseline
2530 @code{staff-padding} を使うことで、強弱記号などのオブジェクトを、それらが取り@c
2531 付けられる音符の位置に依存した高さではなく、譜表上のある固定した高さのベースラ@c
2532 インに揃えることができます。このプロパティは @code{DynamicText} のプロパティで@c
2533 はなく、@code{DynamicSpanner} のプロパティです。この理由は、このベースラインは@c
2534 延長スパナを含む@strong{すべて}の強弱起動に等しく適用されるべきだからです。そ@c
2535 のため、これは以前のセクションでの例の中にある強弱記号を揃えるための方法になり@c
2538 @cindex DynamicText, example of overriding
2539 @cindex extra-spacing-width property, example
2540 @cindex DynamicLineSpanner, example of overriding
2541 @cindex staff-padding property, example
2543 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
2545 % Extend width by 1 unit
2546 \override DynamicText #'extra-spacing-width = #'(-0.5 . 0.5)
2547 % Align dynamics to a base line 2 units above staff
2548 \override DynamicLineSpanner #'staff-padding = #2
2553 @subheading self-alignment-X property
2555 弦楽器の運指法記号オブジェクトと音符のステムとの衝突を、このプロパティが運指法@c
2556 記号オブジェクトの右端を親の音符の参照ポイントに揃えることによって解決している@c
2559 @cindex StringNumber, example of overriding
2560 @cindex self-alignment-X property, example
2562 @lilypond[quote,fragment,ragged-right,verbatim,relative=3]
2565 \once \override StringNumber #'self-alignment-X = #RIGHT
2569 @subheading staff-position property
2571 @cindex object collision within a staff
2573 あるボイスの中にある複数小節に亘る休符は他のボイスの中にある音符と衝突する可能@c
2574 性があります。このような休符は小節線と小節線の間の中央に譜刻されるため、LilyPond
2575 がそれと衝突するかもしれない音符を突き止めるのは非常に困難です。なぜなら、現在@c
2576 の音符間それに音符-休符間の衝突対応は、同時に起こる音符と休符に対してのみ行わ@c
2577 れるからです。以下に、このタイプの衝突の例を挙げます:
2579 @lilypond[quote,verbatim,fragment,ragged-right, relative=1]
2580 << {c c c c} \\ {R1} >>
2583 ここでの最良の解決策は、複数小節に亘る休符を下へ移動させることです。なぜなら、@c
2584 その休符はボイス 2 の中にあるからです。@code{\voiceTwo} (すなわち、@c
2585 @code{<<@{...@} \\ @{...@}>>} 構造の 2 番目のボイス) のデフォルト状態では、@c
2586 @code{MultiMeasureRest} の @code{staff-position} は @code{-4} にセットされてい@c
2587 ます。そのため、そのプロパティを、例えば半譜表スペース 4 つ分押し下げるには、@c
2588 @code{-8} に変更する必要があります。
2590 @cindex MultiMeasureRest, example of overriding
2591 @cindex staff-position property, example
2593 @lilypond[quote,verbatim,fragment,ragged-right, relative=1]
2597 \override MultiMeasureRest #'staff-position = #-8
2602 これは、例えば @code{extra-offset} を使うよりも良い解決方法です。なぜなら、そ@c
2603 の休符の上に加線が自動的に挿入されるからです。
2605 @subheading extra-offset property
2607 @cindex positioning objects
2608 @cindex positioning grobs
2609 @cindex objects, positioning
2610 @cindex grobs, positioning
2612 @code{extra-offset} プロパティは、あるオブジェクトの水平方向と垂直方向の配置を@c
2615 以下の例では、2 番目の運指法記号が少し左に、そして 1.8 譜表スペース下に移動さ@c
2619 @cindex Fingering, example of overriding
2620 @cindex extra-offset property, example
2622 @lilypond[quote,fragment,relative=1,verbatim]
2625 \once \override Fingering
2626 #'extra-offset = #'(-0.3 . -1.8)
2631 @subheading positions property
2633 @cindex controlling tuplets, slurs, phrasing slurs, and beams manually
2634 @cindex manually controlling tuplets, slurs, phrasing slurs, and beams
2635 @cindex tuplet beams, controlling manually
2636 @cindex slurs, controlling manually
2637 @cindex phrasing slurs, controlling manually
2638 @cindex beams, controlling manually
2640 @code{positions} プロパティは連符、スラー、フレージング スラー、ビームの位置と@c
2641 傾きを手動で制御することを可能にします。ここで、装飾音符に付いたスラーを避けよ@c
2642 うとしているために醜いフレージング スラーを持つ例を挙げます。
2644 @lilypond[quote,verbatim,fragment,ragged-right,relative=1]
2645 r4 \acciaccatura e8\( d8 c ~c d c d\)
2649 フレージング スラーを音符の上へ移動させることで、より良い結果が得られます:
2651 @lilypond[quote,verbatim,fragment,ragged-right,relative=1]
2654 \acciaccatura e8\( d8 c ~c d c d\)
2658 しかし、何らかの理由でそうすることができない場合、それに代わる解決策は、@c
2659 @code{positions} プロパティを使ってフレージング スラーの左端を少し下げることで@c
2660 す。この方法でも見栄えの悪さを解決できます。
2662 @cindex PhrasingSlur, example of overriding
2663 @cindex positions property, example
2665 @lilypond[quote,verbatim,fragment,ragged-right,relative=1]
2667 \once \override PhrasingSlur #'positions = #'(-4 . -3)
2669 e8\( d8 c ~c d c d\)
2672 さらに、Chopin の 前奏曲 Op 28 No. 2 の左手の譜の開始部分から取った例を挙げま@c
2673 す。ビームが上部にある音符と衝突しています:
2675 @lilypond[quote,verbatim,fragment,ragged-right]
2678 << {b,8 ais, b, g,} \\ {e, g e, g} >>
2679 << {b,8 ais, b, g,} \\ {e, g e, g} >>
2684 これは、譜表の中央線から 2 譜表スペース上の位置にあるビームの両端を、例えば、3
2685 に手動で上げることによって解決することができます:
2687 @cindex Beam, example of overriding
2688 @cindex positions property, example
2690 @lilypond[quote,verbatim,fragment,ragged-right]
2694 \override Beam #'positions = #'(3 . 3)
2699 << {b,8 ais, b, g,} \\ {e, g e, g} >>
2704 オーバライドの効果は継続して 2 番目のブロックのボイス 1 にも適用されています@c
2705 が、ボイス 2 のビームにはまったく適用されていないということに注意してください。
2707 @subheading force-hshift property
2709 @c FIXME: formatting stuff (ie not important right now IMO)
2710 @c @a nchor Chopin finally corrected TODOgp
2712 今や、@ref{I'm hearing Voices} の最後で挙げた Chopin の例にどのように修正を加@c
2713 えるべきかを知っています。この例は以下のような状態でした:
2715 @lilypond[quote,verbatim,fragment,ragged-right]
2716 \new Staff \relative c'' {
2719 { c2 aes4. bes8 } \\
2731 最初の和音の下の方にある 2 つの音符 (つまり、3 番目のボイス (ボイス 4) の音符)
2732 を上の方にある 2 つの音符の音符列からずらすべきではありません。これを修正する@c
2733 には、下の音符の @code{force-hshift} -- これは @code{NoteColumn} のプロパティ@c
2734 です -- を 0 にセットします。2 番目の和音の下の方の音符は、上の方の音符のすぐ@c
2735 右に置くのが最良です。そうするには、この音符の @code{force-hshift} を 0.5 に@c
2736 セットします -- つまり、上の方の音符の音符列から音符玉の幅の半分だけ右にずらし@c
2741 @cindex NoteColumn, example of overriding
2742 @cindex force-hshift property, example
2744 @lilypond[quote,verbatim,fragment,ragged-right]
2745 \new Staff \relative c'' {
2748 { c2 aes4. bes8 } \\
2751 \once \override NoteColumn #'force-hshift = #0 <ees c>2
2752 \once \override NoteColumn #'force-hshift = #0.5 des2
2760 @node Real music example
2761 @subsection Real music example
2763 調整についてのセクションを、望みの出力を作り出すためにいくつかの調整を必要とす@c
2764 るトリッキーな例を処理するときにとられるステップを示すことで締めくくります。こ@c
2765 の例は、表記についての普通ではない問題を解決するための表記リファレンスの使い方@c
2766 を示すために慎重に選ばれたものです。この例は一般的な譜刻プロセスを代表するもの@c
2767 ではありません。ですから、この例の複雑さでやる気を失わないでください!幸いなこ@c
2768 とに、このように複雑な問題は非常に稀です!
2770 この例は Chopin の Première Ballade, Op. 23 の第 6 - 9 小節からとりました。序@c
2771 盤の Lento から Moderato へと移調する部分です。まず最初に望んでいる出力挙げま@c
2772 すが、例があまりにも複雑になり過ぎないように強弱記号、運指法記号、ペダル記号は@c
2775 @c The following should appear as music without code
2776 @c This example should not be indexed
2777 @lilypond[quote,ragged-right]
2778 rhMusic = \relative c'' {
2781 \once \override Tie #'staff-position = #3.5
2785 \mergeDifferentlyHeadedOn
2786 \mergeDifferentlyDottedOn
2787 bes2.^\markup {\bold "Moderato"} r8
2789 {c,8[ d fis bes a] | }
2791 % Reposition the c2 to the right of the merged note
2792 {c,8~ \once \override NoteColumn #'force-hshift = #1.0
2793 % Move the c2 out of the main note column so the merge will work
2796 % Stem on the d2 must be down to permit merging
2797 {s8 \stemDown \once \override Stem #'transparent = ##t d2}
2801 \mergeDifferentlyHeadedOff
2802 \mergeDifferentlyDottedOff
2806 lhMusic = \relative c' {
2808 <d g, d>1)\arpeggio |
2815 \new Staff = "RH" <<
2819 \new Staff = "LH" <<
2828 まず、第 3 小節の右手パートには 4 つのボイスが必要であることに注目します。それ@c
2829 ぞれのボイスは、ビームでつながれた 5 つの 8 分音符、タイで結ばれた C、半音符の D
2830 -- これは 8 分音符の D とマージされています、付点 4 分音符の F シャープ -- こ@c
2831 れも同じ音高の 8 分音符とマージされています -- です。他の部分はすべて単一のボ@c
2832 イスなので、最も容易な方法は 4 つのボイスを必要になったときに一時的に導入する@c
2833 方法です。一時的に多声にする方法を忘れてしまったのならば、@ref{I'm hearing
2834 Voices} を見てください。音符を 2 つの変数として入力し、譜表構造を @code{Score}
2835 ブロックの中でセットアップすることから始めて、それで LilyPond がデフォルトでど@c
2836 のような出力を作り出すのか見てみましょう:
2838 @lilypond[quote,verbatim,ragged-right]
2839 rhMusic = \relative c'' {
2844 % Start polyphonic section of four voices
2846 {c,8 d fis bes a | }
2857 lhMusic = \relative c' {
2866 \new Staff = "RH" <<
2870 \new Staff = "LH" <<
2879 すべての音符は間違っていません。しかしながら、見た目は満足とは程遠いものです。@c
2880 タイは移調する拍子記号と衝突していて、第 3 小節のビームの付け方は間違ってい@c
2881 て、音符はマージされておらず、いくつかの表記要素は欠けています。簡単なものから@c
2882 片付けていきましょう。ビームの付け方は手動でビームを挿入することで修正でき、左@c
2883 手パートのスラーと右手パートのフレージング スラーは簡単に追加できます -- なぜ@c
2884 なら、これらはすべてチュートリアルでカバーされているからです。これらの修正を加@c
2887 @lilypond[quote,verbatim,ragged-right]
2888 rhMusic = \relative c'' {
2893 % Start polyphonic section of four voices
2895 {c,8[ d fis bes a] | }
2906 lhMusic = \relative c' {
2915 \new Staff = "RH" <<
2919 \new Staff = "LH" <<
2928 第 1 小節は正しくなりました。第 2 小節にはアルペジオが含まれていて、2 重の小節@c
2929 線で終わります。この学習マニュアルではこれらのことは言及されてこなかったのに、@c
2930 どうやってやればいいのでしょうか?ここで、表記リファレンスに移行する必要があり@c
2931 ます。索引で @q{arpeggio} と @q{bar line} を探せばすぐに、アルペジオは
2932 @code{@bs{}arpeggio} を和音の後に付け加えることによって作り出され、2 重小節線は
2933 @code{@bs{}bar "||"} コマンドによって作り出されることがわかります。それは簡単@c
2934 にできます。次に、タイと拍子記号の衝突を修正する必要があります。これはタイを上@c
2935 に移動させる方法が最善です。オブジェクトの移動については以前に @ref{Moving
2936 objects} でカバーしました。そこでは、譜表との相対位置で配置されるオブジェクト@c
2937 は、そのオブジェクトの @code{staff-position} プロパティをオーバライドすること@c
2938 によって、移動させることができると述べられています。このプロパティは譜表スペー@c
2939 スの半分を単位として、譜表の中央線からの距離で指定されます。ですから、以下の以@c
2940 下のオーバライドをタイで結ばれる最初の音符の前に置けば、タイは中央線から 3.5
2941 半譜表スペースだけ上の位置に移動させられます:
2943 @code{\once \override Tie #'staff-position = #3.5}
2945 これで第 2 小節の修正も完了で、以下のようになります:
2947 @lilypond[quote,verbatim,ragged-right]
2948 rhMusic = \relative c'' {
2950 \once \override Tie #'staff-position = #3.5
2955 % Start polyphonic section of four voices
2957 {c,8[ d fis bes a] | }
2968 lhMusic = \relative c' {
2970 <d g, d>1)\arpeggio |
2977 \new Staff = "RH" <<
2981 \new Staff = "LH" <<
2990 第 3 小節 -- Moderato セクションの開始部分 -- に取り掛かります。チュートリアルで
2991 @code{@bs{}markup} コマンドを使ってボールド体のテキストを付け加える方法を示し@c
2992 ましたので、@q{Moderato} をボールド体で付け加えることは容易です。しかし、異な@c
2993 るボイスの中にある音符をマージするにはどうするのでしょうか?ここで、助けを求め@c
2994 て表記リファレンスに移行する必要があります。表記リファレンスで @qq{merge} を探@c
2995 せばすぐに、@ruser{Collision resolution} で玉や付点の付き方が異なる音符をマー@c
2996 ジするためのコマンドにたどり着きます。今回の例では、多声部セクションで両方のタ@c
2997 イプの音符をマージする (異なる玉を持つ音符のマージと、付点の付き方が異なる音符@c
2998 のマージ) 必要があるので、表記リファレンスで見つけた情報を使って、以下のコマン@c
3002 \mergeDifferentlyHeadedOn
3003 \mergeDifferentlyDottedOn
3007 を多声部セクションの開始点に置き、以下のコマンド:
3010 \mergeDifferentlyHeadedOff
3011 \mergeDifferentlyDottedOff
3015 をセクションの終了点に置きます。これで、例は以下のようになります:
3017 @lilypond[quote,verbatim,ragged-right]
3018 rhMusic = \relative c'' {
3020 \once \override Tie #'staff-position = #3.5
3024 bes2.^\markup {\bold "Moderato"} r8
3025 \mergeDifferentlyHeadedOn
3026 \mergeDifferentlyDottedOn
3027 % Start polyphonic section of four voices
3029 {c,8[ d fis bes a] | }
3037 \mergeDifferentlyHeadedOff
3038 \mergeDifferentlyDottedOff
3042 lhMusic = \relative c' {
3044 <d g, d>1)\arpeggio |
3051 \new Staff = "RH" <<
3055 \new Staff = "LH" <<
3064 オーバライドは 2 つの F シャープの音符をマージしましたが、2 つの D をマージし@c
3065 ませんでした。なぜマージしなかったのでしょうか?その答えは表記リファレンスの同@c
3066 じセクションにあります -- マージされる音符は反対向きのステムを持っていなくては@c
3067 ならず、同じ音符列に 3 つ目の音符がある場合は 2 つの音符をマージさせることはで@c
3068 きません。今回の例では、2 つの D は両方とも上向きのステムを持っていて、3 つ目@c
3069 の音符 -- C -- が存在します。我々は @code{@bs{}stemDown} を用いてステムの向き@c
3070 を変更する方法を知っていて、表記リファレンスも C を移動させる方法について述べ@c
3071 ています -- @code{@bs{}shift} コマンドの 1 つを用いてシフトを行います。しか@c
3072 し、どのシフトを行えばよいのでしょうか?C はシフト off のボイス 2 の中にあり、2
3073 つの D はボイス 1 とボイス 3 -- それぞれ、シフト off とシフト on -- の中にあり@c
3074 ます。ですから、C が 2 つの D と衝突するのを避けるために、@code{@bs{}shiftOnn}
3075 を用いて C を更にシフトさせる必要があります。これらの変更を加えると、以下のよ@c
3078 @cindex Tie, example of overriding
3079 @cindex staff-position property, example
3081 @lilypond[quote,verbatim,ragged-right]
3082 rhMusic = \relative c'' {
3084 \once \override Tie #'staff-position = #3.5
3088 bes2.^\markup {\bold "Moderato"} r8
3089 \mergeDifferentlyHeadedOn
3090 \mergeDifferentlyDottedOn
3091 % Start polyphonic section of four voices
3093 {c,8[ d fis bes a] | }
3095 % Move the c2 out of the main note column so the merge will work
3096 {c,8~ \shiftOnn c2 | }
3098 % Stem on the d2 must be down to permit merging
3099 {s8 \stemDown d2 | }
3103 \mergeDifferentlyHeadedOff
3104 \mergeDifferentlyDottedOff
3108 lhMusic = \relative c' {
3110 <d g, d>1)\arpeggio |
3117 \new Staff = "RH" <<
3121 \new Staff = "LH" <<
3130 もうちょっとです。残っている問題は 2 つだけです: マージされた D の下向きのステ@c
3131 ムはあるべきではなく、C は D の右側に配置した方が良いということです。以前に@c
3132 行った調整からこれらを行う方法を両方とも知っています: ステムを透明にして、@c
3133 @code{force-hshift} プロパティを用いて C を移動させます。ここで、最終結果を示@c
3136 @cindex NoteColumn, example of overriding
3137 @cindex force-hshift property, example
3138 @cindex Stem, example of overriding
3139 @cindex transparent property, example
3141 @lilypond[quote,verbatim,ragged-right]
3142 rhMusic = \relative c'' {
3145 \once \override Tie #'staff-position = #3.5
3149 bes2.^\markup {\bold "Moderato"} r8
3150 \mergeDifferentlyHeadedOn
3151 \mergeDifferentlyDottedOn
3153 {c,8[ d fis bes a] | }
3155 % Reposition the c2 to the right of the merged note
3156 {c,8~ \once \override NoteColumn #'force-hshift = #1.0
3157 % Move the c2 out of the main note column so the merge will work
3160 % Stem on the d2 must be down to permit merging
3161 {s8 \stemDown \once \override Stem #'transparent = ##t d2}
3165 \mergeDifferentlyHeadedOff
3166 \mergeDifferentlyDottedOff
3170 lhMusic = \relative c' {
3172 <d g, d>1)\arpeggio |
3179 \new Staff = "RH" <<
3183 \new Staff = "LH" <<
3193 @node Further tweaking
3194 @section Further tweaking
3198 * Other uses for tweaks::
3199 * Using variables for tweaks::
3200 * Other sources of information::
3201 * Avoiding tweaks with slower processing::
3202 * Advanced tweaks with Scheme::
3205 @node Other uses for tweaks
3206 @subsection Other uses for tweaks
3208 @cindex transparent property, use of
3209 @cindex objects, making invisible
3210 @cindex removing objects
3211 @cindex objects, removing
3212 @cindex hiding objects
3213 @cindex objects, hiding
3214 @cindex invisible objects
3215 @cindex objects, invisible
3216 @cindex tying notes across voices
3218 @subheading Tying notes across voices
3220 以下の例は異なるボイスの中にある音符をタイで結ぶ方法を示しています。通常、タイ@c
3221 で結べるのは同じボイスの中にある 2 つ音符だけです。2 つのボイスを使い、そのう@c
3222 ちの 1 つにタイで結んだ音符を置きます:
3224 @lilypond[quote,fragment,relative=2]
3225 << { b8~ b8\noBeam }
3231 そして、そのボイスの最初の上向きステムを消します。これで、タイはボイスをまた@c
3234 @cindex Stem, example of overriding
3235 @cindex transparent property, example
3237 @lilypond[quote,fragment,relative=2,verbatim]
3240 \once \override Stem #'transparent = ##t
3248 ステムは表示されなくなっただけなので、タイの長さが十分ではありません。ステムの
3249 @code{length} を @code{8} にセットすることでステムを伸ばすことができます:
3251 @lilypond[quote,fragment,relative=2,verbatim]
3254 \once \override Stem #'transparent = ##t
3255 \once \override Stem #'length = #8
3263 @subheading Simulating a fermata in MIDI
3265 @cindex stencil property, use of
3266 @cindex fermata, implementing in MIDI
3268 譜表外部オブジェクトを出力から削除しようとする場合、そのオブジェクトの
3269 @code{transparent} プロパティではなく @code{stencil} プロパティをオーバライド@c
3270 する方が通常は望ましいです。あるオブジェクトの @code{stencil} プロパティを
3271 @code{@hash{}f} にセットすると、そのオブジェクトは出力から完全に削除されます。@c
3272 このことは、削除されたオブジェクトがそのオブジェクトとの相対位置で配置される他@c
3273 のオブジェクトの配置にまったく影響を及ぼさないということを意味します。
3275 例えば、MIDI 出力でフェルマータをシミュレートするためにメトロノーム設定を変更@c
3276 したいとします。その場合、メトロノーム記号を出力に表示させたくありません。そし@c
3277 て、それが 2 つのシステム (小節とその中にある表記) 間のスペースと、譜表上にあ@c
3278 る隣接する注釈の位置に影響を与えることを望みません。そのため、そのメトロノーム@c
3279 記号の @code{stencil} プロパティを @code{@hash{}f} にセットする方法が最良で@c
3280 す。ここで、2 つの手法の結果を示します:
3282 @cindex MetronomeMark, example of overriding
3283 @cindex transparent property, example
3285 @lilypond[quote,verbatim,ragged-right]
3288 % Visible tempo marking
3291 \once \override Score.MetronomeMark #'transparent = ##t
3292 % Invisible tempo marking to lengthen fermata in MIDI
3295 % New tempo for next section
3304 @cindex MetronomeMark, example of overriding
3305 @cindex stencil property, example
3307 @lilypond[quote,verbatim,ragged-right]
3310 % Visible tempo marking
3313 \once \override Score.MetronomeMark #'stencil = ##f
3314 % Invisible tempo marking to lengthen fermata in MIDI
3317 % New tempo for next section
3327 両方の手段とも、フェルマータ部分の演奏時間を伸ばすメトロノーム記号を出力から削@c
3328 除していて、両方とも MIDI の演奏に必要な効果を与えています。しかし、1 番目の例@c
3329 の透明なメトロノーム記号がそれに続く拍子指示を上に押し上げているのに対して、2
3330 番目のメトロノーム記号 (ステンシルが削除されたもの) は押し上げていません。
3333 @node Using variables for tweaks
3334 @subsection Using variables for tweaks
3336 @cindex variables, using for tweaks
3337 @cindex using variables for tweaks
3338 @cindex tweaks, using variables for
3340 オーバライド コマンドはしばしば長く、入力するのが大変なものになります。そし@c
3341 て、それらは完全に正しく記述されなければなりません。同じオーバライドが何度も使@c
3342 用される場合、それらを保持する変数を定義すると非常に役に立ちます。
3344 歌詞の中のある特定の単語をボールド イタリック体で譜刻することによって、それら@c
3346 歌詞の中では、@code{@bs{}italic} と @code{@bs{}bold} は (書式を) 変更したい単@c
3347 語や文と一緒に @code{@bs{}markup} ブロックの中に入れた場合にのみ機能しますが、@c
3349 埋め込む必要のある単語自体が、2 つのコマンドを簡単な変数を用いて使うことを妨げ@c
3350 ます。代替手段として、@code{@bs{}override} コマンドと @code{@bs{}revert} コマ@c
3354 @code{\override Lyrics . LyricText #'font-shape = #'italic}
3355 @code{\override Lyrics . LyricText #'font-series = #'bold}
3357 @code{\revert Lyrics . LyricText #'font-shape}
3358 @code{\revert Lyrics . LyricText #'font-series}
3361 これらも、強調する必要のある単語がたくさんある場合、入力するのが非常に大変で@c
3362 す。しかしながら、これらは 2 つの変数として定義することが@emph{でき}、それらの@c
3363 変数で単語を囲むことによって使ってその単語を強調することが@emph{できます}。こ@c
3364 れらのオーバライドに変数を用いることのもう 1 つの利点は、ドットの両側にスペー@c
3365 スを置く必要が無いことです。なぜなら、これらのオーバライドは
3366 @code{@bs{}lyricmode} の中で直接解釈されるわけではないからです。ここで変数を用@c
3367 いる例を挙げますが、実際には早く打ち込めるようにもっと短い変数名を使用します:
3369 @cindex LyricText, example of overriding
3370 @cindex font-shape property, example
3371 @cindex font-series property, example
3373 @lilypond[quote,verbatim]
3375 \override Lyrics.LyricText #'font-shape = #'italic
3376 \override Lyrics.LyricText #'font-series = #'bold
3379 \revert Lyrics.LyricText #'font-shape
3380 \revert Lyrics.LyricText #'font-series
3383 global = { \time 4/4 \partial 4 \key c \major}
3384 SopranoMusic = \relative c' { c4 | e4. e8 g4 g | a a g }
3385 AltoMusic = \relative c' { c4 | c4. c8 e4 e | f f e }
3386 TenorMusic = \relative c { e4 | g4. g8 c4. b8 | a8 b c d e4 }
3387 BassMusic = \relative c { c4 | c4. c8 c4 c | f8 g a b c4 }
3388 VerseOne = \lyrics { E -- | ter -- nal \emphasize Fa -- ther, \normal | strong to save, }
3389 VerseTwo = \lyricmode { O | \emphasize Christ, \normal whose voice the | wa -- ters heard, }
3390 VerseThree = \lyricmode { O | \emphasize Ho -- ly Spi -- rit, \normal | who didst brood }
3391 VerseFour = \lyricmode { O | \emphasize Tri -- ni -- ty \normal of | love and pow'r }
3397 \new Voice = "Soprano" { \voiceOne \global \SopranoMusic }
3398 \new Voice = "Alto" { \voiceTwo \AltoMusic }
3399 \new Lyrics \lyricsto "Soprano" { \VerseOne }
3400 \new Lyrics \lyricsto "Soprano" { \VerseTwo }
3401 \new Lyrics \lyricsto "Soprano" { \VerseThree }
3402 \new Lyrics \lyricsto "Soprano" { \VerseFour }
3406 \new Voice = "Tenor" { \voiceOne \TenorMusic }
3407 \new Voice = "Bass" { \voiceTwo \BassMusic }
3414 @node Other sources of information
3415 @subsection Other sources of information
3417 内部リファレンスは LilyPond についての多くの情報を持っていますが、LilyPond の@c
3418 内部ファイルを調べることによってさらに多くの情報を収集することができます。内部@c
3419 ファイルを探究するには、まずあなたの使っているシステム特有のディレクトリを見つ@c
3420 け出す必要があります。このディレクトリの場所は、(a) あなたが lilypond.org から@c
3421 コンパイル済みのバイナリをダウンロードすることによって LilyPond を手に入れたの@c
3422 か、それとも、パッケージ マネージャから LilyPond をインストールした (つまり、@c
3423 Linux と一緒に配布されたか、fink や cygwin でインストールされた) のか、(b)
3424 LilyPond はどの OS 上で使用されているのか、に依存します:
3426 @strong{lilypond.org からダウンロードした}
3431 @file{@var{INSTALLDIR}/lilypond/usr/share/lilypond/current/} に進んでください
3435 @file{@var{INSTALLDIR}/LilyPond.app/Contents/Resources/share/lilypond/current/}
3436 に進んでください。ターミナルからこのディレクトリへ @code{cd} で移動するか、@c
3437 LilyPond アプリケーション上でコントロール クリックして @q{Show Package Contents}
3442 @file{@var{INSTALLDIR}/LilyPond/usr/share/lilypond/current/} に進んでくださ@c
3443 い。Windows Explorer を使います。
3448 @strong{パッケージ マネージャからインストールした、あるいは、ソースからコンパ@c
3451 @file{@var{PREFIX}/share/lilypond/@var{X.Y.Z}/} に進んでください。@var{PREFIX}
3452 はパッケージ マネージャか @code{configure} スクリプトによってセットされるもの@c
3453 であり、@var{X.Y.Z} は LilyPond のバージョン番号です。
3457 このディレクトリの中に 2 つの興味深いサブディレクトリがあります:
3460 @item @file{ly/} - LilyPond フォーマットに関するファイルを保持しています
3461 @item @file{scm/} -Scheme フォーマットに関するファイルを保持しています
3464 @file{ly/} の中にあるファイルから見ていきましょう。@file{ly/property-init.ly}
3465 をテキスト エディタで開いてください。@c
3466 エディタはあなたが普段 @code{.ly} ファイルを編集するために使っているもので結構です。@c
3467 このファイルは標準の LilyPond 定義済みコマンド -- @code{@bs{}stemUp} や
3468 @code{@bs{}slurDotted} など -- のすべての定義を保持しています。1 つまたは複数の
3469 @code{@bs{}override} コマンドを保持している変数の定義以外のものはないというこ@c
3470 とがわかるでしょう。例えば、@code{@bs{}tieDotted} は以下のように定義されていま@c
3475 \override Tie #'dash-period = #0.75
3476 \override Tie #'dash-fraction = #0.1
3480 あなたがこれらのデフォルト値を好まない場合、これらの定義済みコマンドを容易に再@c
3481 定義することができます -- 他の変数と同様に、入力ファイルの先頭で定義します。
3483 以下のファイルは @file{ly/} で見つかる有用なファイルです:
3485 @multitable @columnfractions .4 .6
3488 @item @file{ly/engraver-init.ly}
3489 @tab エングラーバ コンテキストの定義
3490 @item @file{ly/paper-defaults-init.ly}
3492 @item @file{ly/performer-init.ly}
3493 @tab パフォーマ コンテキストの定義
3494 @item @file{ly/property-init.ly}
3495 @tab すべての共通定義済みコマンドの定義
3496 @item @file{ly/spanner-init.ly}
3497 @tab スパナ関係の定義済みコマンドの定義
3500 他の設定 (マークアップ コマンドの定義など) は @code{.scm} (Scheme) ファイルと@c
3501 して保存されています。Scheme プログラミング言語は、LilyPond 内部処理へのプログ@c
3502 ラム可能なインタフェイスを提供するために使用されます。これらのファイルについて@c
3503 の詳しい説明は、Scheme 言語についての知識が必要となるため、このマニュアルの範@c
3504 囲外です。Scheme 言語とこれらのファイルを理解するには、十分な知識や時間が必要@c
3505 であるということを知っておくべきです (@ref{Scheme tutorial} を参照してくださ@c
3508 あなたがこの知識を持っているのなら、興味を持つかもしれない Scheme ファイルは以@c
3511 @multitable @columnfractions .4 .6
3514 @item @file{scm/auto-beam.scm}
3515 @tab サブ ビームのデフォルト (訳者: 8 分音符にはビームだけが使用され、16 分@c
3516 音符やそれよりも短い音符にはビームとサブ ビームが使われるのだと思います)
3517 @item @file{scm/define-grobs.scm}
3518 @tab Grob (グラフィカル オブジェクト) プロパティのデフォルト設定
3519 @item @file{scm/define-markup-commands.scm}
3520 @tab すべてのマークアップ コマンドの仕様
3521 @item @file{scm/midi.scm}
3522 @tab MIDI 出力のデフォルト設定
3523 @item @file{scm/output-lib.scm}
3524 @tab フレット、色、臨時記号、小節線などの見た目に影響を与える設定
3525 @item @file{scm/parser-clef.scm}
3527 @item @file{scm/script.scm}
3528 @tab アーティキュレーションのデフォルト設定
3532 @node Avoiding tweaks with slower processing
3533 @subsection Avoiding tweaks with slower processing
3535 LilyPond は入力ファイルの処理中に追加のチェックを行うことができます。これらの@c
3536 チェックは実行時間を伸ばしますが、適切な結果を得るのに必要とされる手動調整を減@c
3537 らすかもしれません。テキストや歌詞の一部が余白まではみ出す場合、これらのチェッ@c
3538 クは楽譜のその行を縮めてマージンの内側に収まるようにします。
3540 すべての状況下で有効にするには、以下のように、音楽の中の行ではなく @code{Score}
3541 の @code{@bs{}with} ブロックの中にこれらのチェックのオーバライドを置くことに@c
3542 よって、動作可能な状態にする必要があります:
3546 % Makes sure text scripts and lyrics are within the paper margins
3547 \override PaperColumn #'keep-inside-line = ##t
3548 \override NonMusicalPaperColumn #'keep-inside-line = ##t
3555 @node Advanced tweaks with Scheme
3556 @subsection Advanced tweaks with Scheme
3558 @code{@bs{}override} と @code{@bs{}tweak} コマンドを用いることで多くのことが可@c
3559 能になりますが、LilyPond のアクションを変更するもっと強力な手段が LilyPond 内@c
3560 部処理へのプログラム可能なインタフェイスを通じて利用可能です。Scheme プログラ@c
3561 ミング言語で書かれたコードは LilyPond の内部処理に直接組み込むことができます。@c
3562 もちろん、それを行うには Scheme プログラミングについての基礎知識が必要であり、@c
3563 その手引きが @ref{Scheme tutorial} で提供されています。
3565 多くの実現可能なことの 1 つの例としては、プロパティに定数をセットする代わりに
3566 Scheme プロシージャをセットすることができます。このプロパティが LilyPond に@c
3567 よってアクセスされたときに、このプロシージャが呼び出されます。このプロシージャ@c
3568 が呼び出されたときに、このプロシージャによって決定された値を動的にそのプロパ@c
3569 ティにセットすることができます。以下の例では、音符玉にその音符の譜表上での位置@c
3572 @cindex x11-color function, example of using
3573 @cindex NoteHead, example of overriding
3574 @cindex color property, setting to Scheme procedure
3576 @lilypond[quote,verbatim,ragged-right]
3577 #(define (color-notehead grob)
3578 "Color the notehead according to its position on the staff."
3579 (let ((mod-position (modulo (ly:grob-property grob 'staff-position) 7)))
3581 ;; Return rainbow colors
3582 ((1) (x11-color 'red )) ; for C
3583 ((2) (x11-color 'orange )) ; for D
3584 ((3) (x11-color 'yellow )) ; for E
3585 ((4) (x11-color 'green )) ; for F
3586 ((5) (x11-color 'blue )) ; for G
3587 ((6) (x11-color 'purple )) ; for A
3588 ((0) (x11-color 'violet )) ; for B
3594 % Arrange to obtain color from color-notehead procedure
3595 \override NoteHead #'color = #color-notehead
3602 Some -- where o -- ver the Rain -- bow, way up high,
3606 @ref{Tweaking with Scheme} に、これらのプログラム可能なインタフェイスの使い方@c