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
19 @translationof Tweaking output
21 この章では出力を変更する方法について議論します。LilyPond は本当にさまざまな設@c
22 定が可能です。もしかすると出力のすべての部分が変更されるかもしれません。
35 @translationof Tweaking basics
48 @translationof Introduction to tweaks
50 @q{調整} は入力ファイルの解釈中にとられるアクションを変更し、譜刻される音楽の@c
51 見た目を変更するためにユーザが利用可能なさまざまな手段を指す LilyPond の用語で@c
52 す。いくつかの調整はとても簡単に使うことができます。他の調整はもっと複雑です。@c
53 しかしながら、調整のために利用可能な手段を組み合わせることによって、ほとんどい@c
54 かなる望みの見た目を持った楽譜でも譜刻することが可能になります。
56 このセクションでは、調整を理解するのに必要な基礎となるコンセプトをカバーしま@c
57 す。その後、コピーするだけで効果が得られる作成準備が完了しているさまざまなコマ@c
58 ンドについての情報を提供し、同時に、あなたがあなた自身の調整を開発する方法を学@c
59 べるようにそれらのコマンドがどのように構築されるのかを示します。
61 この章を読み始める前に、あなたは @ref{コンテキストとエングラーバ} を再読することを@c
62 望むかもしれません。なぜなら、コンテキスト、エングラーバとそれらの中に含まれる@c
63 プロパティは調整について理解し、調整を構成するための基礎だからです。
67 @subsection オブジェクトとインタフェイス
68 @translationof Objects and interfaces
74 @cindex properties, object
75 @cindex object properties
77 @cindex object, layout
80 調整には LilyPond プログラムの内部オペレーションと構造体への変更も含まれます。@c
81 そのため、我々はまずそれらの内部オペレーションと構造体を記述するために使用され@c
82 るいくつかの用語を導入しなければなりません。
84 @q{オブジェクト} という用語は入力ファイルを処理している最中に LilyPond によっ@c
85 てビルドされる多くの内部構造体を参照するために使われる汎用的な用語です。LilyPond
86 が @code{@bs{}new Staff} のようなコマンドに遭遇した場合、タイプ @code{Staff}
87 の新しいオブジェクトを構築します。その @code{Staff} オブジェクトは、その譜表の@c
88 コンテキスト内部で機能するために割り当てられているエングラーバの詳細とともに、@c
89 その譜表に関連付けられているすべてのプロパティ -- 例えば、その譜表の名前、調号
90 -- を保持します。同様に、@code{Voice} オブジェクト、@code{Score} オブジェク@c
91 ト、@code{Lyrics} オブジェクトなどの他のすべてのコンテキストのプロパティを保持@c
92 するためのオブジェクトが存在し、さらに、小節線、音符の玉、タイ、強弱記号などの@c
93 すべての表記要素を表すためのオブジェクトも存在します。各オブジェクトはそれ自体@c
96 いくつかのタイプのオブジェクトには特別な名前が与えられています。音符の玉、ステ@c
97 ム、スラー、タイ、運指記号、音部記号などの譜刻される出力上の表記要素を表すオブ@c
98 ジェクトは @q{レイアウト オブジェクト} と呼ばれ、しばしば @q{グラフィカル オブ@c
99 ジェクト} あるいは短くして @q{グロッブ (Grob: GRaphical OBject)} と呼ばれま@c
100 す。これらのオブジェクトも上記の汎用的な観点から見るとオブジェクトであり、それ@c
101 ゆえ、それらもまたそれらのオブジェクトに関連付けされたプロパティ -- そのオブ@c
102 ジェクトの位置、サイズ、色など -- を持ちます。
104 いくつかのレイアウト オブジェクトも特別です。フレージング スラー、クレッシェン@c
105 ド、オッターバ (訳者: オクターブ?) 記号、他の多くのグラフィカル オブジェクト@c
106 が置かれる場所は一点ではありません -- それらは開始点、終了点、そしておそらくそ@c
107 れらの形に関係する他のプロパティを持ちます。これらのオブジェクトのように形が伸@c
108 長されるオブジェクトは @q{スパナ (Spanners)} と呼ばれます。
110 @q{インタフェイス} とは何なのかという説明が残っています。多くのオブジェクト --
111 たとえそれらが非常に異なっていたとしても -- は同じ方法で処理される必要がある共@c
112 通特徴 (common feature) を共有します。例えば、すべてのグラフィカル オブジェク@c
113 トは色、サイズ、位置などを持ち、これらのプロパティはすべて LilyPond が入力ファ@c
114 イルを構文解釈する最中に同じ方法で処理されます。これらの内部オペレーションを簡@c
115 潔にするために、これらの共通アクションとプロパティは 1 つのグループとして
116 @code{grob-interface} と呼ばれるオブジェクトにまとめられています。これと同じよ@c
117 うな共有プロパティのグループ化が他にも多くあり、それぞれに対して最後に
118 @code{interface} が付く名前が与えられています。そのようなインタフェイスの総数は
119 100 を越えます。我々は後でなぜこれがユーザにとって利益となり、役に立つのかを見@c
122 これらは、我々がこの章で使用するオブジェクトと関係する主要な用語です。
125 @node オブジェクトとプロパティの命名規約
126 @subsection オブジェクトとプロパティの命名規約
127 @translationof Naming conventions of objects and properties
129 @cindex naming conventions for objects
130 @cindex naming conventions for properties
131 @cindex objects, naming conventions
132 @cindex properties, naming conventions
134 我々は以前にも @ref{コンテキストとエングラーバ} でいくつかのオブジェクト命名規約を@c
135 見てきました。ここで参照のために、最も一般的なオブジェクトとプロパティをリスト@c
136 アップし、それに加えてそれらの命名規約と実際の名前の例を挙げます。何らかの大文@c
137 字のアルファベットを表すために @q{A} を使用し、いくつかの小文字のアルファベッ@c
138 トを表すために @q{aaa} を使用しています。他の文字は実際の命名でもそのまま使用@c
141 @multitable @columnfractions .33 .33 .33
142 @headitem オブジェクト/プロパティのタイプ
146 @tab Aaaa や AaaaAaaaAaaa
147 @tab Staff, GrandStaff
149 @tab Aaaa や AaaaAaaaAaaa
152 @tab Aaaa_aaa_engraver
153 @tab Clef_engraver, Note_heads_engraver
155 @tab aaa-aaa-interface
156 @tab grob-interface, break-aligned-interface
158 @tab aaa や aaaAaaaAaaa
159 @tab alignAboveContext, skipBars
160 @item レイアウト オブジェクト プロパティ
161 @tab aaa や aaa-aaa-aaa
162 @tab direction, beam-thickness
165 これから見ていくのですが、タイプが異なるオブジェクトのプロパティは異なるコマン@c
166 ドによって変更されます。そのため、プロパティの名前からオブジェクトの種類を識別@c
172 @translationof Tweaking methods
174 @cindex tweaking methods
176 @strong{@bs{}override コマンド}
178 @cindex override command
179 @cindex override syntax
184 我々はすでに @ref{コンテキスト プロパティを変更する} と @ref{エングラーバを追加 / 削除する} で@strong{コンテキスト}のプロパティを変更したり、@strong{エングラー@c
185 バ}を追加/削除したりするために使用するコマンド
186 @code{@bs{}set} と @code{@bs{}with} を見てきました。ここでは更に重要ないくつか@c
189 @strong{レイアウト オブジェクト}のプロパティを変更するためのコマンドは
190 @code{@bs{}override} です。このコマンドは LilyPond の奥深くにある内部プロパ@c
191 ティを変更しなければならないため、これまで見てきたコマンドのように単純な構文で@c
192 はありません。どのコンテキストの中にあるどのオブジェクトのどのプロパティを変更@c
193 しなければならないのか、そこにセットする新しい値を何にするのかを正確に知ってい@c
194 る必要があります。どのようにこれを行うのかを見ていきましょう。
196 このコマンドの一般的な構文は以下のようなものです:
199 @bs{}override @var{Context}.@var{LayoutObject} @hash{}'@var{layout-property} =
204 これは @var{Context} コンテキストのメンバである @var{LayoutObject} という名前@c
205 のレイアウトの @var{layout-property} という名前のプロパティに値 @var{value} を@c
208 必要とされているコンテキストが明白であり、それが最下位レベルのコンテキストである
209 -- つまり、@code{Voice}, @code{ChordNames} や @code{Lyrics} である -- 場合、その
210 @var{Context} は省略可能可能であり (そして通常は省略されます)、この後の例の多@c
211 くでも省略します。後ほど、コンテキストを指定しなければならない場合について見て@c
214 これから後のセクションでは広範囲に亘るプロパティとそれらの値を扱います。しかし@c
215 ながら、そのフォーマットとそれらのコマンドの使用方法を示すためには、容易に理解@c
216 できる簡単なプロパティと値を 2, 3 使用してみるだけです。
218 今や、レイアウト プロパティの前に置かれなければならない @code{@hash{}'} やプロ@c
219 パティ値の前に置かれなければならない @code{@hash{}} について心配する必要はあり@c
220 ません。これらは常にそのような形式で正確に記述されなければなりません。これは調@c
221 整では最も一般的に使用されるコマンドであり、この章の残りの部分の大半ではプロパ@c
222 ティ (変更コマンド) の使用方法を示すための例を記述しています。ここでは音符玉の@c
226 @cindex color property, example
227 @cindex NoteHead, example of overriding
229 @lilypond[quote,fragment,ragged-right,verbatim,relative=1]
231 \override NoteHead #'color = #red
233 \override NoteHead #'color = #green
238 @strong{@bs{}revert コマンド}
240 @cindex revert command
245 一旦オーバライドされると、そのプロパティは再度オーバライドされるか
246 @code{@bs{}revert} コマンドに遭遇するまで新しい値のままでいます。@c
247 @code{@bs{}revert} コマンドは以下の構文を持ち、プロパティの値をオリジナルのデ@c
248 フォルト値に戻します。何度か @code{@bs{}override} コマンドが発行されている場合@c
249 は、前の値に戻すわけではないということに注意してください。
253 @bs{}revert @var{Context}.@var{LayoutObject} @hash{}'@var{layout-property}
256 繰り返しますが、@code{@bs{}override} コマンドでの @var{Context} と同様に、多く@c
257 の場合で @var{Context} を記述する必要はありません。以下の例の多くで、@c
258 @var{Context} は省略されます。ここでは、最後の 2 つの音符の音符玉の色をデフォ@c
261 @cindex color property, example
262 @cindex NoteHead, example of overriding
264 @lilypond[quote,fragment,ragged-right,verbatim,relative=1]
266 \override NoteHead #'color = #red
268 \override NoteHead #'color = #green
270 \revert NoteHead #'color
274 @strong{@bs{}once prefix}
279 @code{@bs{}override} コマンドと @code{@bs{}set} コマンドには両方とも接頭辞
280 @code{@bs{}once} が付く可能性があります。これはその後に続く @code{@bs{}override}
281 や @code{@bs{}set} コマンドをその場一回限り有効にし、その後にそのプロパティの@c
282 値をデフォルト値に戻します。上と同じ例を使って、以下のように 1 つだけの音符の@c
285 @cindex color property, example
286 @cindex NoteHead, example of overriding
288 @lilypond[quote,fragment,ragged-right,verbatim,relative=1]
290 \once \override NoteHead #'color = #red
292 \once \override NoteHead #'color = #green
296 @strong{@bs{}overrideProperty コマンド}
298 @cindex overrideProperty command
300 @funindex \overrideProperty
301 @funindex overrideProperty
303 オーバライド コマンドには @code{@bs{}overrideProperty} というもう 1 つのフォー@c
304 マットがあり、時々必要となります。完璧を期すためにここでこれに言及しましたが、@c
305 詳細は @ruser{Difficult tweaks} を参照してください。
306 @c Maybe explain in a later iteration -td
308 @strong{@bs{}tweak コマンド}
310 @cindex tweak command
315 利用可能な最後の調整コマンドは @code{@bs{}tweak} です。これは同じタイミングで@c
316 起こるオブジェクト -- 和音の中にある音符などのように -- のプロパティを変更する@c
317 ために使用されます。@code{@bs{}override} コマンドを使用すると和音の中にあるす@c
318 べての音符に影響を与えます。一方、@code{@bs{}tweak} は入力ストリームの中でその
319 @code{@bs{}tweak} のすぐ後にある要素 1 つだけに影響を与えます。
321 ここで例を挙げます。C メジャー コードの中にある真ん中の音符 (ミドル E) の音符@c
322 玉のサイズを変更したいとします。まず最初に、@code{@bs{}once @bs{}override} だ@c
325 @cindex font-size property, example
326 @cindex NoteHead, example of overriding
328 @lilypond[quote,fragment,ragged-right,verbatim,relative=1]
330 \once \override NoteHead #'font-size = #-3
335 このオーバライドは和音の中にある@emph{すべて}の音符玉に影響を与えています。こ@c
336 れは和音の中にあるすべての音符が同じ@emph{タイミング}で起こるためであり、@c
337 @code{@bs{}once} のアクションは @code{@bs{}override} と同様に同じタイミングで@c
338 起こる、指定されたタイプすべてのレイアウト オブジェクトへのオーバライドに適用@c
341 @code{@bs{}tweak} コマンドはこれとは異なるやり方で処理されます。これは入力スト@c
342 リームの中ですぐ後に続く要素にだけ作用します。しかしながら、これは入力ストリー@c
343 ムから直接作成されるオブジェクト -- 本質的に音符玉とアーティキュレーション --
344 にだけ効果を持ちます。ステムや臨時記号などのオブジェクトは後で作成されるため、@c
345 この方法では調整できません。さらに、@code{@bs{}tweak} が音符玉に適用される場@c
346 合、それらは和音の内部になければ@emph{なりません} -- つまり、単一角括弧
347 @code{< .. >} の内部です。そのため、単一の音符 (和音ではない音符) を調整するに@c
348 は、@code{@bs{}tweak} コマンドはその音符とともに単一の角括弧で囲わなければなり@c
351 それでは例に戻り、この方法で和音の真ん中の音符のサイズを変更します:
353 @cindex font-size property, example
354 @cindex @code{@bs{}tweak}, example
356 @lilypond[quote,fragment,ragged-right,verbatim,relative=1]
358 <c \tweak #'font-size #-3 e g>4
361 @code{@bs{}tweak} の構文は @code{@bs{}override} コマンドの構文とは異なるという@c
362 ことに注意してください。コンテキストもレイアウト オブジェクトも指定されませ@c
363 ん。実際、それらを指定するとエラーになります。これらは両方とも入力ストリームの@c
364 中で後に続く要素によって示されます。さらに、イコール記号を使うべきではないとい@c
365 うことに注意してください。そのため、@code{@bs{}tweak} コマンドの一般的な構文は@c
369 @bs{}tweak @hash{}'@var{layout-property} @hash{}@var{value}
372 さらに、@code{@bs{}tweak} コマンドは一連のアーティキュレーションの中にあるただ 1
373 つのアーティキュレーションを変更されるためにも使用できます。ここに例を挙げます:
375 @cindex color property, example
376 @cindex @code{@bs{}tweak}, example
378 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
380 -\tweak #'color #red ^Red
381 -\tweak #'color #green _Green
385 @code{@bs{}tweak} コマンドは、まるでそれがアーティキュレーションの一部であるか@c
386 のように、アーティキュレーション マークの前に置かれなければならないということ@c
389 @cindex tuplets, nested
390 @cindex triplets, nested
391 @cindex bracket, tuplet
392 @cindex bracket, triplet
393 @cindex tuplet bracket
394 @cindex triplet bracket
396 @funindex TupletBracket
398 さらに、@code{@bs{}tweak} コマンドは、同時に起こるネストされた連符記号のセット@c
399 のうちの 1 つの見た目を変更するためにも使用されます。以下の例では、長い連符記@c
400 号と 3 つの短い連符記号のうちの最初の連符記号が同時に起こります。そのため、@c
401 @code{@bs{}override} コマンドだと両方の連符記号に適用されてしまいます。この例@c
402 では、@code{@bs{}tweak} は 2 つの連符記号を区別するために使用されています。最@c
403 初の @code{@bs{}tweak} コマンドは長い連符記号を音符の上に置くことを指定してい@c
404 て、2 番目の @code{@bs{}tweak} コマンドは最初の短い連符記号の数字を赤で描くこ@c
407 @cindex @code{@bs{}tweak}, example
408 @cindex direction property, example
409 @cindex color property, example
411 @lilypond[quote,ragged-right,verbatim,fragment,relative=2]
412 \tweak #'direction #up
415 \times 2/3 { c8[ c8 c8] }
416 \times 2/3 { c8[ c8 c8] }
417 \times 2/3 { c8[ c8 c8] }
421 ネストされた連符が同時に起こらない場合、それらの見た目は @code{@bs{}override}
422 コマンドを用いた通常通りの方法で変更されるかもしれません:
424 @cindex text property, example
425 @cindex tuplet-number function, example
426 @cindex transparent property, example
427 @cindex TupletNumber, example of overriding
429 @c NOTE Tuplet brackets collide if notes are high on staff
431 @lilypond[quote,ragged-right,verbatim,fragment,relative=1]
432 \times 2/3 { c8[ c c]}
433 \once \override TupletNumber
434 #'text = #tuplet-number::calc-fraction-text
438 \once \override TupletNumber #'transparent = ##t
439 \times 2/3 { c8[ c c] }
440 \times 2/3 { c8[ c c]}
447 @ruser{The tweak command}
450 @section 内部リファレンス マニュアル
451 @translationof The Internals Reference manual
455 * レイアウト オブジェクトのプロパティ::
456 * インタフェイスの中で見つかるプロパティ::
460 @node レイアウト オブジェクトのプロパティ
461 @subsection レイアウト オブジェクトのプロパティ
462 @translationof Properties of layout objects
464 @cindex properties of layout objects
465 @cindex properties of grobs
466 @cindex grobs, properties of
467 @cindex layout objects, properties of
468 @cindex Internals Reference manual
470 あなたがスラーを楽譜に描き、そのスラーが細すぎるためにもう少し太くしたいと思っ@c
471 たとします。どうやってスラーを太くしますか?以前に LilyPond の自由度の高さにつ@c
472 いて述べたので、そのようなことが可能であることは知っています。あなたはおそらく
473 @code{@bs{}override} コマンドが必要であると推測するでしょう。しかしながら、ス@c
474 ラーの太さプロパティは存在するのでしょうか?そして、それが存在するならどうやっ@c
475 て変更するのでしょうか?このようなことに内部リファレンス マニュアルは触れてい@c
476 ます。内部リファレンス マニュアルには、あなたがスラーを太くするために必要な情@c
477 報、他のすべての @code{@bs{}override} コマンドを構築するために必要な情報が含ま@c
480 内部リファレンスを見ていく前に一言警告です。これは@strong{リファレンス} ドキュ@c
481 メントであり、説明はほんの少しかまったく含まれていません: リファレンスの目的は@c
482 情報を正確に、かつ簡潔に提供することです。そのため、内部リファレンスを一見して@c
483 ひるんでしまうかもしれません。しかし、心配しないでください!ここにあるガイダン@c
484 スと説明を読めば、少し練習するだけで、内部リファレンスから必要な情報を取り出せ@c
487 @cindex override example
488 @cindex Internals Reference, example of using
489 @cindex @code{@bs{}addlyrics} example
491 実際の音楽からの簡単な断片を持つ具体例を使用していきましょう:
493 @lilypond[quote,verbatim,relative=2]
498 g[( e]) e d[( f]) a |
502 The man who feels love's sweet e -- mo -- tion
507 ここで、スラーをもう少し太くしようと決めたことにします。それは可能でしょうか?@c
508 スラーは確かにレイアウト オブジェクトです。そのため、その疑問は @q{スラーに属@c
509 していて、太さを制御するプロパティは存在するのか?} ということになります。その@c
510 答えを得るために内部リファレンス -- 縮めて IR -- を見なければなりません。
512 あなたが使用しているバージョンの LilyPond のための内部リファレンスは LilyPond
513 ウェブサイト @uref{http://lilypond.org} で見つかるでしょう。ドキュメント ペー@c
514 ジに行き、内部リファレンスへのリンクをクリックしてください。学習目的のためには@c
515 標準の HTML バージョンを使うべきであり、@q{one big page} (@q{大きな 1 ページに@c
516 まとめたもの}) や PDF を使うべきではありません。次の数段落を読めば、あなたが内@c
517 部リファレンスを読むときに実際にすべきことがわかるでしょう。
519 内部リファレンスの@strong{トップ ページ}下には 5 つのリンクがあります。@c
520 @emph{バックエンド} へのリンクを選択してください。そこにはレイアウト オブジェ@c
521 クトについての情報があります。@strong{バックエンド} 下にある @emph{すべてのレ@c
522 イアウト オブジェクト} へのリンクを選択してください。そのページには、あなたが@c
523 使用しているバージョンの LilyPond で使用されるすべてのレイアウト オブジェクト@c
524 がアルファベット順でリストアップされています。Slur へのリンクを選択すると、@c
525 Slur のプロパティがリスト アップされます。
527 表記リファレンスからこのページを見つける方法もあります。スラーについて扱ってい@c
528 るページで、内部リファレンスへのリンクがを見つかるかもしれません。このリンクで@c
529 このページに直接行くことができます。しかしながら、あなたが調整するレイアウト
530 オブジェクトの名前を想像できる場合は、すぐに内部リファレンスに行ってそこで探す@c
533 内部リファレンスの Slur ページでは、まず Slur オブジェクトは
534 @code{Slur_engraver} によって作成されるということが述べられています。それか@c
535 ら、標準設定がをリストアップされています。標準設定はアルファベット順にはなっ@c
536 て@strong{いない}ということに注意してください。太さを制御していそうなプロパ@c
537 ティを探してブラウザをスクロール ダウンさせていくと、以下が見つかります:
540 @code{thickness} (number)
542 Line thickness, generally measured in @code{line-thickness}
545 これが太さを変更するプロパティのようです。@code{thickness} の値は@emph{数}であ@c
546 り、デフォルト値は 1.2、この値は他のプロパティでは @code{line-thickness} と呼@c
549 前にも言ったように、内部リファレンスには説明がほとんど、あるいはまったくありま@c
550 せん。しかしながら、すでにスラーの太さを変えるための十分な情報を持っています。@c
551 レイアウト オブジェクトの名前は @code{Slur} であり、変更するプロパティの名前は
552 @code{thickness} であり、スラーをもっと太くするには新しい値を 1.2 よりも大きく@c
555 今度は、レイアウト オブジェクト名で見つけた値を置き換えることによって
556 @code{@bs{}override} コマンドを構築することができます。コンテキストは省略しま@c
557 す。最初は太さに非常に大きな値を割り当ててみます。それによって、そのコマンドが@c
558 確かに機能していることを確かめることができます。実行するコマンドは以下のように@c
562 @bs{}override Slur @hash{}'thickness = @hash{}5.0
565 プロパティ名の前に @code{@hash{}'} を付けること、新しい値の前に @code{@hash{}}
568 最後の疑問は @q{このコマンドをどこに置くべきか?} ということです。そのことにつ@c
569 いて不確かであり、学んでいる最中であるのならば、ベストな答えはこうです @q{音楽@c
570 表記の内部で、最初のスラーの直前}。ではやってみましょう:
572 @cindex Slur example of overriding
573 @cindex thickness property, example
575 @lilypond[quote,verbatim,relative=2]
579 % Increase thickness of all following slurs from 1.2 to 5.0
580 \override Slur #'thickness = #5.0
582 g[( e]) e d[( f]) a |
586 The man who feels love's sweet e -- mo -- tion
594 これが @code{@bs{}override} コマンドを構築する基本的な方法です。これより後のセ@c
595 クションで遭遇するものはもう少し複雑ですが、必要な要点はすべて知っています --
596 しかしながら、まだ練習が必要でしょう。これは以下の例で提供されます。
599 @subheading コンテキストを見つけ出す
601 @cindex context, finding
602 @cindex context, identifying correct
604 しかしながら、まず最初にコンテキストを指定しなければならないとしたらどうでしょ@c
605 うか?指定すべきコンテキストは何でしょうか?スラーとボイスは音楽表記の各行で明@c
606 らかに関係が深いので、スラーは @code{Voice} コンテキストの中にあると推測できる@c
607 かもしれません。しかし、それは確かでしょうか?この問題を解決するには、Slur に@c
608 ついて記述している内部リファレンス ページの先頭に戻ります。@c
609 そこには @q{Slur オブジェクトは Slur エングラーバによって作成される} と書かれ@c
610 ています。そのため、スラーは @code{Slur_engraver} が存在しているコンテキストの@c
611 どれかで作成されるということになります。@code{Slur_engraver} へのリンクを辿り@c
612 ます。そのページの最後の方で @code{Slur_engraver} は 5 つのボイス コンテキスト
613 -- 標準のボイス コンテキストである @code{Voice} を含む -- の一部であることが述@c
614 べられています。ですから、推測は正しかったのです。そして、@code{Voice} は最下@c
615 位のコンテキストの 1 つである -- このことは、そこに音符を入力するという事実に@c
616 よって明らかに示されています -- ため、ここではそのコンテキストを省略することが@c
620 @subheading 1 回だけオーバライドする
622 @cindex overriding once only
623 @cindex once override
628 上記の最後の例では@emph{すべて}のスラーが太くなっています。しかし、最初のス@c
629 ラーだけを太くしたい場合はどうでしょうか?これは @code{@bs{}once} コマンドを使@c
630 うことによって達成されます。@code{@bs{}override} コマンドの直前に
631 @code{@bs{}once} コマンドを置くことによって、@code{@bs{}override} コマンド@c
632 は@strong{直後にある}音符から始まるスラーだけを変更するようになります。直後に@c
633 ある音符がスラーの開始点ではない場合、そのコマンドはまったく機能しません -- そ@c
634 れがスラーに遭遇するまで保持されるということはなく、ただ切り捨てられるだけで@c
635 す。そのため、@code{@bs{}once} コマンド付きの @code{@bs{}override} コマンドは@c
636 以下のように上記の例とは異なる場所に置かなくてはなりません:
638 @cindex Slur, example of overriding
639 @cindex thickness property, example
641 @lilypond[quote,verbatim,relative=2]
646 % Increase thickness of immediately following slur only
647 \once \override Slur #'thickness = #5.0
649 g[( e]) e d[( f]) a |
653 The man who feels love's sweet e -- mo -- tion
659 今度は、最初のスラーだけが太くなりました。
661 @code{@bs{}once} コマンドは @code{@bs{}set} コマンドの前でも使用される可能性が@c
668 @cindex default properties, reverting to
673 最後に、最初の 2 つだけのスラーを太くしたい場合はどうでしょうか?その場合、2
674 つのコマンド -- それぞれの前に @code{@bs{}once} を付けた -- をスラーが始まる音@c
677 @cindex Slur, example of overriding
678 @cindex thickness property, example
680 @lilypond[quote,verbatim,relative=2]
685 % Increase thickness of immediately following slur only
686 \once \override Slur #'thickness = #5.0
688 % Increase thickness of immediately following slur only
689 \once \override Slur #'thickness = #5.0
690 g[( e]) e d[( f]) a |
694 The man who feels love's sweet e -- mo -- tion
700 あるいは、@code{@bs{}once} コマンドを省略して、2 番目のスラーの後に
701 @code{thickness} プロパティをデフォルト値に戻すために @code{@bs{}revert} コマ@c
704 @cindex Slur, example of overriding
705 @cindex thickness property, example
707 @lilypond[quote,verbatim,relative=2]
712 % Increase thickness of all following slurs from 1.2 to 5.0
713 \override Slur #'thickness = #5.0
716 % Revert thickness of all following slurs to default of 1.2
717 \revert Slur #'thickness
722 The man who feels love's sweet e -- mo -- tion
728 @code{@bs{}revert} コマンドは @code{@bs{}override} コマンドで変更されたどのプ@c
729 ロパティでもデフォルト値に戻すことができます。状況に相応しい方を使用してくださ@c
732 これで内部リファレンスと調整の基本的な方法についての紹介を終わりにします。この@c
733 章で後に続くセクションの中にあるいくつのかの例でも一部では、内部リファレンスの@c
734 特徴についての追加の紹介や、そこから情報を取り出すための更なる練習を提供しま@c
735 す。それらの例ではガイダンスや説明のための言葉はずっと少ないでしょう。
738 @node インタフェイスの中で見つかるプロパティ
739 @subsection インタフェイスの中で見つかるプロパティ
740 @translationof Properties found in interfaces
743 @cindex interface properties
744 @cindex properties in interfaces
746 今度は歌詞をイタリック体で譜刻したいということにします。そうするには
747 @code{@bs{}override} コマンドをどのように使う必要があるのでしょうか?以前と同@c
748 様に、まず @q{すべてのレイアウト オブジェクト} をリストアップしている内部リ@c
749 ファレンス ページを開き、歌詞をコントロールしていそうなオブジェクトを探しま@c
750 す。@code{LyricText} がそれであるようです。これをクリックすると、歌詞のテキス@c
751 トに対してセットすることができるプロパティが表示されます。そこには
752 @code{font-series} と @code{font-size} が含まれますが、歌詞をイタリック体にす@c
753 るためのプロパティらしきものはありません。これは、形に関するプロパティはすべて@c
754 のフォント オブジェクトに共通なものであり、そのため、各レイアウト オブジェクト@c
755 に含まれているのではなく、他の同様な共通プロパティと一緒にグループ化されてい@c
756 て、@strong{インタフェイス}の 1 つ @code{font-interface} の中に置かれているか@c
759 そのため、インタフェイスのプロパティを見つける方法と、どのオブジェクトがこれら@c
760 のインタフェイス プロパティを使うのかを調べる方法を学ぶ必要があります。
762 @code{LyricText} について記述している内部リファレンスのページを再び開いてくだ@c
763 さい。そのページの最後に @code{LyricText} がサポートするインタフェイスへのリン@c
764 クがリスト アップされています。そのリストには @code{font-interface} を含むいく@c
765 つかの要素があります。このリンクをクリックすると、このインタフェイスに関連付け@c
766 されているプロパティのところに行きます。これらのプロパティは @code{LyricText}
767 を含む @code{font-interface} をサポートするすべてのオブジェクトのプロパティで@c
770 @code{font-shape(symbol)} を含むフォントを制御するユーザが設定可能なプロパティ@c
771 をすべて見つけました。@code{font-shape(symbol)} では @code{symbol} を
772 @code{upright}, @code{italics}, あるいは @code{caps} にセットすることができま@c
775 そこには、@code{font-series} と @code{font-size} もリスト アップされていること@c
776 に気づくでしょう。そこで次のような疑問が湧いてきます: 共通フォントプロパティ
777 @code{font-series} と @code{font-size} は @code{LyricText} とインタフェイス
778 @code{font-interface} の両方でリスト アップされているのに、なぜ
779 @code{font-shape} はそうでないのか?その答えは、@code{font-series} と
780 @code{font-size} は、@code{LyricText} オブジェクトが作成されるときに、それらの@c
781 グローバルなデフォルト値から変更されるのに対して、@code{font-shape} はそうでは@c
782 ないからです。@code{LyricText} の中にあるエントリから @code{LyricText} に適用@c
783 されるそれら 2 つのプロパティの値がわかります。@code{font-interface} をサポー@c
784 トする他のオブジェクトは、それらのオブジェクトが作成されるときに、それらのプロ@c
787 今度は歌詞をイタリック体に変更するように @code{@bs{}override} コマンドを構築で@c
788 きるかどうかを見ていきましょう。オブジェクトは @code{LyricText} であり、プロパ@c
789 ティは @code{font-shape} であり、セットする値は @code{italic} です。前と同様@c
792 話は逸れますが重要なことを 1 つ挙げます。@code{font-shape} の値はシンボルなの@c
793 で、シングル アポストロフィ @code{'} を付ける必要があるということに注意してく@c
794 ださい。その理由は、以前の例での @code{thickness} や @code{font-shape} の前に@c
795 アポストロフィを付ける必要がある理由と同じです。それらも両方ともシンボルです。@c
796 シンボルは LilyPond によって内部的に読み取られます。それらのいくつかは
797 @code{thickness} や @code{font-shape} のようなプロパティの名前であり、他のものは
798 @code{italic} のようにプロパティに与えられる値として使用されます。任意のテキス@c
799 ト文字列との違い -- 任意のテキスト文字列は @code{"a text string"} のような形で@c
800 表記されます -- に注意してください。シンボルと文字列についてのより詳細な説明@c
801 は、@ref{Scheme tutorial} を参照してください。
803 さて、それでは歌詞をイタリック体で譜刻するために必要となる @code{@bs{}override}
807 \override LyricText @hash{}'font-shape = @hash{}'italic
811 そして、これは以下のように影響を与える歌詞の前に、そして近くに置くべきです:
813 @cindex font-shape property, example
814 @cindex italic, example
815 @cindex LyricText, example of overriding
816 @cindex @code{\addlyrics}, example
818 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
823 g[( e]) e d[( f]) a |
827 \override LyricText #'font-shape = #'italic
828 The man who feels love's sweet e -- mo -- tion
834 これで歌詞がすべてイタリック体で譜刻されました。
837 @subheading 歌詞モードの中でコンテキストを指定する
839 @cindex context, specifying in lyric mode
840 @cindex lyric mode, specifying context
842 歌詞の場合、以前のようなコマンドの発行の仕方の中でコンテキストを指定しようとし@c
843 ても失敗するでしょう。歌詞モードの中で入力される音節はスペース、改行、数字のい@c
844 ずれかで区切られます。他のすべての文字は音節の一部と見なされます。これが、終端の
845 @code{@}} の前にはスペースか改行を置かなければならない理由です。そうしないと、@c
846 終端の @code{@}} は最後の音節の一部に含まれてしまいます。同様に、コンテキスト@c
847 名とオブジェクト名を区切るために、ピリオドまたはドット @q{.} の前と後ろにス@c
848 ペースを挿入しなければなりません。さもないと 2 つの名前は一緒になってしまい、@c
849 インタプリタはそれらを認識できなくなります。そのため、コマンドは以下のようにす@c
853 @bs{}override Lyrics . LyricText @hash{}'font-shape = @hash{}'italic
856 @warning{歌詞の中では、最後の音節と終端の中括弧の間に常にスペースを置いてくだ@c
859 @warning{歌詞の中のオーバライドでは、コンテキスト名とオブジェクト名の間にある@c
860 ドットの両側に常にスペースを置いてください。}
864 学習マニュアル: @ref{Scheme tutorial}
868 @subsection プロパティのタイプ
869 @translationof Types of properties
871 @cindex property types
873 これまでにプロパティのタイプを 2 つ見てきました: @code{number} と @code{symbol}
874 です。プロパティに与える値が有効であるためには、その値は正しいタイプであり、そ@c
875 のタイプのルールに従っていなければなりません。プロパティのタイプは内部リファレ@c
876 ンスの中で常にプロパティ名の後の括弧の中に表示されています。ここに、あなたが必@c
877 要になるであろうプロパティのタイプを、そのタイプのルールといくつかの例と共にリ@c
878 スト アップします。もちろん、@code{@bs{}override} コマンドの中でプロパティの値@c
879 を入力する時は、常にそれらの値の前にハッシュ記号 @code{@hash{}} を付け加える必@c
882 @multitable @columnfractions .2 .45 .35
887 @tab 真か偽のどちらかで、それぞれ @hash{}t と @hash{}f で表されます
888 @tab @code{@hash{}t}, @code{@hash{}f}
889 @item Dimension (譜表スペース)
891 @tab @code{2.5}, @code{0.34}
893 @tab 有効な向きを表す定数またはそれと等価な数値 (-1 から 1 までの小数が許可@c
895 @tab @code{LEFT}, @code{CENTER}, @code{UP},
899 @tab @code{3}, @code{1}
901 @tab 値のセット。セットの値はスペースで区切られ、前にアポストロフィが付いた@c
903 @tab @code{'(left-edge staff-bar)}, @code{'(1)},
904 @code{'(1.0 0.25 0.5)}
907 @tab @code{@bs{}markup @{ \italic "cresc." @}}
909 @tab make-moment 関数で構築される全音符の分数
910 @tab @code{(ly:make-moment 1 4)},
911 @code{(ly:make-moment 3 8)}
914 @tab @code{3.5}, @code{-2.45}
916 @tab @q{スペース . スペース} で区切られ、前にアポストロフィが付いた括弧で囲@c
918 @tab @code{'(2 . 3.5)}, @code{'(0.1 . -3.2)}
920 @tab プロパティに許可されているシンボルのセットのいずれかであり、前にアポロ@c
922 @tab @code{'italic}, @code{'inside}
924 @tab 手続き。何のアクションも起こさない場合は @code{@hash{}f}
925 @tab @code{bend::print}, @code{ly:text-interface::print},
928 @tab 前にアポストロフィ-ハッシュ @code{'@hash{}} が付いた括弧で囲まれた 3 要@c
930 @tab @code{'@hash{}(@hash{}t @hash{}t @hash{}f)}
935 学習マニュアル: @ref{Scheme tutorial}
940 @translationof Appearance of objects
942 いくつかの例を使ってこれまでに学んだことを練習して、譜刻される楽譜の見た目を変@c
943 更するためにどのように調整が使われるのかを見ていきましょう。
954 @subsection オブジェクトの可視性と色
955 @translationof Visibility and color of objects
957 教育目的の楽譜では、ある要素を省略した楽譜を譜刻して、学生にそれを付け足させる@c
958 という訓練にしたいと思うかもしれません。簡単な例として、その訓練とは小節線の無@c
959 い楽譜だと仮定してみましょう。しかしながら、通常、小節線は自動的に挿入されま@c
960 す。どうやって小節線が譜刻されることを防ぐのでしょうか?
962 このことに挑戦する前に、オブジェクト プロパティは@emph{インタフェイス}と呼ばれ@c
963 るものにグループ化されているということを思い出してください -- @ref{インタフェイスの中で見つかるプロパティ} を参照してください。これはあるグラフィカル オブジェクトを@c
964 調整するために一緒に使用されるかもしれないプロパティをグループ化したものです --
965 あるオブジェクトに対してインタフェイス内のプロパティの 1 つを使うことが許可さ@c
966 れるのなら、他のプロパティも許可されます。あるオブジェクトはいくつかのインタ@c
967 フェイス内にあるプロパティを使用し、別のオブジェクトはそれとは別のインタフェイ@c
968 ス内にあるプロパティを使用します。ある特定のグラフィカルオブジェクトによって使@c
969 用されるプロパティを保持しているインタフェイスは、そのグラフィカル オブジェク@c
970 トについて記述している内部リファレンス ページの最後にリスト アップされていて、@c
971 それらのプロパティはそれらのインタフェイスを参照することによって閲覧できます。
973 グラフィカル オブジェクトについての情報を見つけ出す方法を @ref{レイアウト オブジェクトのプロパティ} で説明しました。同じアプローチを使って、内部リファレンスで小節@c
974 線を譜刻するレイアウト オブジェクトを見つけ出します。@emph{バックエンド}を経由@c
975 して@emph{すべてのレイアウト オブジェクト}に行くと、そこに @code{BarLine} と呼@c
976 ばれるレイアウト オブジェクトがあることがわかります。そのレイアウト オブジェク@c
977 トのプロパティには小節線の可視性をコントロールする 2 つのプロパティが含まれて@c
978 います: @code{break-visibility} と @code{stencil} です。さらに、@code{BarLine}
979 はインタフェイスのいくつかをサポートしています。@code{grob-interface} もサポー@c
980 トされていて、そこには @code{transparent} プロパティと @code{color} プロパティ@c
981 が含まれています。これらすべてが小節線の可視性に影響を与えます (そしてもちろ@c
982 ん、拡大解釈すれば他の多くのレイアウト オブジェクトにも影響を与えます)。次はこ@c
983 れらのプロパティをそれぞれ見ていきましょう。
986 @subheading ステンシル (stencil)
988 @cindex stencil property
990 このプロパティは譜刻すべきシンボル (グリフ) を指定することによって小節線の見た@c
991 目を制御します。他の多くのプロパティでも共通に言えますが、このプロパティの値に
992 @code{@hash{}f} をセットすることによって何も譜刻させなくすることができます。で@c
993 はやってみましょう。以前と同様に、暗黙のコンテキスト @code{Voice} は省略します:
995 @cindex BarLine, example of overriding
996 @cindex stencil property, example
998 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1001 \override BarLine #'stencil = ##f
1003 g, a16 b8 c d4 e16 |
1008 小節線はまだ譜刻されています。何が間違っているのでしょうか?内部リファレンスに@c
1009 戻って、@code{BarLine} のプロパティを記述しているページを読み返してください。@c
1010 そのページの先頭に @qq{BarLine オブジェクトは Bar_engraver によって作成されます}
1011 と記述されています。@code{Bar_engraver} ページに行ってください。そのページの最@c
1012 後で、@code{Bar_engraver} を保持するコンテキストがリスト アップされています。@c
1013 それらのコンテキストのタイプはすべて @code{Staff} です。ですから、@c
1014 @code{@bs{}override} コマンドが予期したように機能しなかったのは、@code{BarLine}
1015 はデフォルトの @code{Voice} コンテキストの中にはいなかったからなのです。コンテ@c
1016 キストが間違って指定された場合、そのコマンドは機能しません。エラー メッセージ@c
1017 は生成されず、ログ ファイルには何もログが残りません。正しいコンテキストを付け@c
1018 加えることによってコマンドを修正してみましょう:
1020 @cindex BarLine, example of overriding
1021 @cindex stencil property, example
1023 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1026 \override Staff.BarLine #'stencil = ##f
1028 g, a16 b8 c d4 e16 |
1036 @subheading 可視性の破棄 (break-visibility)
1038 @cindex break-visibility property
1040 内部リファレンスの @code{BarLine} のプロパティから @code{break-visibility} プ@c
1041 ロパティには 3 つのブール値からなるベクトルが必要であることがわかります。これ@c
1042 らはそれぞれ、小節線が行の最後、行の途中、行の最初に譜刻されるかどうかを制御し@c
1043 ます。以下の例ではすべての小節線を消したいので、必要となる値は
1044 @code{'@hash{}(@hash{}f @hash{}f @hash{}f)} です。それではやってみましょう。@c
1045 @code{Staff} コンテキストを含めることを忘れないでください。また、この値を書く@c
1046 ときに括弧を始める前に @code{@hash{}'@hash{}} を付ける必要があることにも注意し@c
1047 てください。@code{'@hash{}} はベクトルを導入するときに値の一部として必要とさ@c
1048 れ、先頭の @code{@hash{}} は @code{@bs{}override} コマンドの中で常に値の前に置@c
1051 @cindex BarLine, example of overriding
1052 @cindex break-visibility property, example
1054 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1057 \override Staff.BarLine #'break-visibility = #'#(#f #f #f)
1059 g, a16 b8 c d4 e16 |
1067 @subheading 透過性 (transparent)
1069 @cindex transparent property
1070 @cindex transparency
1072 内部リファレンスの @code{grob-interface} ページにあるプロパティから
1073 @code{transparent} プロパティはブール値であることがわかります。これはグラフィ@c
1074 カル オブジェクトを透明にする場合には @code{@hash{}t} にセットします。次の例で@c
1075 は、小節線ではなく拍子記号を不可視にしてみましょう。そうするには、まず、拍子記@c
1076 号のグラフィカル オブジェクト名を見つける必要があります。@code{TimeSignature}
1077 レイアウト オブジェクトのプロパティを見つけるために内部リファレンスの @q{すべ@c
1078 てのレイアウト オブジェクト} ページに戻ってください。@code{TimeSigunature} は
1079 @code{Time_signature_engraver} によって作り出され、さらに、@c
1080 @code{Time_signature_engraver} は @code{Staff} コンテキストに含まれ、さらに、@c
1081 @code{Staff} コンテキストは @code{grob-interface} をサポートしているということ@c
1082 がわかります。そのため、拍子記号を透明にするためのコマンドは以下のようになりま@c
1085 @cindex TimeSignature, example of overriding
1086 @cindex transparent property, example
1088 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1091 \override Staff.TimeSignature #'transparent = ##t
1093 g, a16 b8 c d4 e16 |
1099 拍子記号は消えました。しかしながら、このコマンドは拍子記号があるべき場所に隙間@c
1100 を残しています。たぶん、これは学生がその部分を埋めるための練習としては望ましい@c
1101 でしょうが、他の状況ではこの隙間は望ましくありません。この隙間を取り除くには、@c
1102 拍子記号の @code{transparent} の代わりにステンシル (型、型紙) を @code{@hash{}f}
1105 @cindex TimeSignature, example of overriding
1106 @cindex stencil property, example
1108 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1111 \override Staff.TimeSignature #'stencil = ##f
1113 g, a16 b8 c d4 e16 |
1119 違いは明白です: ステンシルを @code{@hash{}f} にセットすると、オブジェクト自体@c
1120 が削除されます。一方、オブジェクトを @code{transparent} (透明) にするとそのオ@c
1121 ブジェクトは消えますが、オブジェクトは不可視になっただけです。
1124 @subheading 色 (color)
1126 @cindex color property
1128 最後に、小節線の色を白にすることによって小節線を不可視にしてみましょう。(これ@c
1129 には白い小節線が譜表線と交差したところで譜表線を見えたり見えなくしてしまうかも@c
1130 しれないという問題があります。以下のいくつかの例で、このことを予測することはで@c
1131 きないと思うかもしれません。そうなる理由と、それを制御する方法についての詳細@c
1132 は、@ruser{Painting objects white} でカバーされています。しかしここでは色につ@c
1133 いて学んでいるところなので、オブジェクトを白で描くことの限界を受け入れるだけに@c
1136 @code{grob-interface} はカラー プロパティの値はリストであると指定しています。@c
1137 しかしながら、そのリストが何であるべきなのかの説明はありません。カラー プロパ@c
1138 ティで必要とされるリストは実際のところ内部ユニットの中にある値のリストです。し@c
1139 かし、内部ユニットの中にある値を知らなくても済むように、カラーを指定するための@c
1140 手段がいくつか用意されています。最初の方法は @ruser{List of colors} にある最初@c
1141 の表でリスト アップされている @q{標準} のカラーの 1 つを使用する方法です。小節@c
1142 線を白にするには以下のように記述します:
1144 @cindex BarLine, example of overriding
1145 @cindex color property, example
1147 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1150 \override Staff.BarLine #'color = #white
1152 g, a16 b8 c d4 e16 |
1158 今度も再び小節線は見えなくなりました。@emph{white} の前にアポストロフィは付か@c
1159 ないということに注意してください -- これはシンボルではなく@emph{関数}です。こ@c
1160 の関数が呼び出されると、この関数はカラーを白にセットするために必要とされる内部@c
1161 値のリストを提供します。標準カラー リストにある他のカラーもまた関数です。これ@c
1162 が機能していることをあなた自身が納得するために、カラーをこのリストの中にある他@c
1163 の関数の 1 に変更しようと思うかもしれません。
1170 カラーを変えるための 2 番目の方法は、@ruser{List of colors} の 2 番目のリスト@c
1171 の中にある X11 カラー名のリストを使用する方法です。しかしながら、以下のよう@c
1172 に、これらの前には X11 カラー名を内部値のリストに変更するもう 1 つの関数 --
1173 @code{x11-color} -- がなければなりません:
1175 @cindex BarLine, example of overriding
1176 @cindex color property, example
1178 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1181 \override Staff.BarLine #'color = #(x11-color 'white)
1183 g, a16 b8 c d4 e16 |
1189 この場合、関数 @code{x11-color} はシンボルを引数として扱うので、シンボルの前に@c
1190 はアポストロフィをつけなくてはならず、@code{x11-color} とシンボルは括弧で囲ま@c
1191 れていなければならないということに注意してください。
1198 まだ 3 番目の方法が残っています。これは RGB 値を内部カラーに変換する
1199 @code{rgb-color} 関数を使用する方法です。この関数は赤、緑、青の輝度を表す 3 つ@c
1200 の引数をとります。これらの引数は 0 から 1 までの値をとります。ですから、カラー@c
1201 を赤にセットする場合の値は @code{(rgb-color 1 0 0)} となり、白の場合は
1202 @code{(rgb-color 1 1 1)} となります:
1204 @cindex BarLine, example of overriding
1205 @cindex color property, example
1207 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1210 \override Staff.BarLine #'color = #(rgb-color 1 1 1)
1212 g, a16 b8 c d4 e16 |
1217 最後に、X11 カラー セットの一部であるグレー スケールを用いる方法もあります。グ@c
1218 レー スケールの範囲は黒 @code{'grey0'} から白 @code{'grey100'} まで 1 段階ずつ@c
1219 あります。グレー スケールの使用方法を示すために、例の中にあるすべてのレイアウト
1220 オブジェクトのカラーをさまざまな濃度のグレーにセットしてみましょう:
1222 @cindex StaffSymbol, example of overriding
1223 @cindex TimeSignature, example of overriding
1224 @cindex Clef, example of overriding
1225 @cindex NoteHead, example of overriding
1226 @cindex Stem, example of overriding
1227 @cindex BarLine, example of overriding
1228 @cindex color property, example
1229 @cindex x11-color, example of using
1231 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1234 \override Staff.StaffSymbol #'color = #(x11-color 'grey30)
1235 \override Staff.TimeSignature #'color = #(x11-color 'grey60)
1236 \override Staff.Clef #'color = #(x11-color 'grey60)
1237 \override Voice.NoteHead #'color = #(x11-color 'grey85)
1238 \override Voice.Stem #'color = #(x11-color 'grey85)
1239 \override Staff.BarLine #'color = #(x11-color 'grey10)
1241 g, a16 b8 c d4 e16 |
1247 各レイアウト オブジェクトに関連付けされているコンテキストに注意してください。@c
1248 これらのコンテキストを正しく取得することが重要であり、そうしなければコマンドは@c
1249 機能しません!コンテキストの中には特定のエングラーバが置かれているということを@c
1250 忘れないでください。エングラーバに対するデフォルト コンテキストを見つけ出すに@c
1251 は、内部リファレンスのレイアウト オブジェクトからスタートして、そこからそれを@c
1252 作り出すエングラーバのページに行きます。エングラーバのページには、通常はどのコ@c
1253 ンテキストにそのエングラーバが含まれているのかが記述されています。
1257 @subsection オブジェクトのサイズ
1258 @translationof Size of objects
1260 @cindex changing size of objects
1261 @cindex size of objects
1262 @cindex objects, size of
1263 @cindex objects, changing size of
1265 以前の例を見直すことから始めてみましょう (@ref{音楽表記のネスト} を参@c
1266 照してください)。そこでは @rglos{ossia} として新たに一時的な譜表を導入する方法@c
1269 @cindex alignAboveContext property, example
1270 @cindex @code{\with}, example
1272 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1273 \new Staff ="main" {
1280 alignAboveContext = #"main" }
1288 通常、オッシアは音部記号と拍子記号無しで記述され、メインの譜表よりもわずかに小@c
1289 さく譜刻されます。今度は、すでに音部記号と拍子記号を削除する方法を知っています
1290 -- 以下のようにそれぞれのステンシルを @code{@hash{}f} にセットするだけです:
1292 @cindex alignAboveContext property, example
1293 @cindex @code{\with}, example
1294 @cindex stencil property, example
1295 @cindex Clef, example of overriding
1296 @cindex TimeSignature, example of overriding
1298 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1299 \new Staff ="main" {
1306 alignAboveContext = #"main"
1309 \override Staff.Clef #'stencil = ##f
1310 \override Staff.TimeSignature #'stencil = ##f
1320 ここで、@code{@bs{}with} 節の後にある追加の括弧のペアが、その括弧に囲まれてい@c
1321 るオーバライドと音楽がオッシア譜表に適用されることを保証するために、必要となり@c
1324 しかし、@code{@bs{}with} を使った譜表コンテキストの変更と @code{@bs{}override}
1325 を使った音部記号と拍子記号のステンシルの変更との違いは何なのでしょうか?主な違@c
1326 いは、@code{@bs{}with} 節の中で行われた変更はそのコンテキストが作成されるとき@c
1327 に行われ、そのコンテキストでは@strong{デフォルト}値として残ります。一方、音楽@c
1328 の中に埋め込まれた @code{@bs{}set} コマンドや @code{@bs{}override} コマンドは@c
1329 動的です -- それらは音楽のある特定のポイントに同期して変更を行います。変更が
1330 @code{@bs{}unset} や @code{@bs{}revert} を使ってセットを解除されたり元に戻され@c
1331 た場合、デフォルト値 -- これは @code{@bs{}with} 節でセットされていた場合はその@c
1332 値、そうでない場合は通常のデフォルト値 -- に戻ります。
1334 いくつかのコンテキスト プロパティは @code{@bs{}with} 節でのみ変更可能です。こ@c
1335 れらは、コンテキストが作成された後では、変更されることのないプロパティです。@c
1336 @code{alignAboveContext} とそのパートナー @code{alignBelowContext} がそのよう@c
1337 なプロパティです -- いったん譜表が作成されると、譜表のアラインメントは決定さ@c
1338 れ、それを後で変更しようとすることには意味がありません。
1340 レイアウト オブジェクトのデフォルト値は @code{@bs{}with} 節でセットすることも@c
1341 できます。通常の @code{@bs{}override} コマンドをコンテキスト名を省いて使用する@c
1342 だけです。コンテキスト名を省略するのは、そのコンテキストは明らかに
1343 @code{@bs{}with} 節が変更しようとしているコンテキストだからです。実際、@c
1344 @code{@bs{}with} 節の中でコンテキストを指定するとエラーが発生します。
1346 それでは上記の例を以下のように書き換えます:
1348 @cindex alignAboveContext property, example
1349 @cindex @code{\with}, example
1350 @cindex Clef, example of overriding
1351 @cindex TimeSignature, example of overriding
1353 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1354 \new Staff ="main" {
1361 alignAboveContext = #"main"
1362 % Don't print clefs in this staff
1363 \override Clef #'stencil = ##f
1364 % Don't print time signatures in this staff
1365 \override TimeSignature #'stencil = ##f
1374 最後に、レイアウト オブジェクトのサイズを変更してみます。
1376 いくつかのレイアウト オブジェクトはある書体から選択されたグリフとして作成され@c
1377 ます。これには音符の玉、臨時記号、マークアップ、音部記号、拍子記号、強弱記号、@c
1378 歌詞が含まれます。それらのサイズは、これから見ていくように、@code{font-size}
1379 プロパティを変更することによって変更されます。スラーやタイのような他のレイアウト
1380 オブジェクト -- 一般には、スパナ オブジェクト (spanner objects) -- は個々に描@c
1381 かれるため、@code{font-size} プロパティとは関係がありません。一般に、それらの@c
1382 オブジェクトはそれらを取り付けられるオブジェクトからサイズを決定する (訳者: 例@c
1383 えば、スラーはそのスラーが付着する音符からそのスラーのサイズを決定する) ので、@c
1384 通常はサイズを手動で変更する必要はありません。さらに、ステムや小節線の長さ、@c
1385 ビームや他の線の太さ、譜表線の間隔などといった他のプロパティはすべて特別な方法@c
1388 オッシアの例に戻って、まず @code{font-size} を変更してみましょう。これを行うには
1389 2 通りの方法があります。以下のようなコマンドで @code{NoteHead} のような各オブ@c
1390 ジェクト タイプのフォント サイズを変更する:
1393 \override NoteHead #'font-size = #-2
1396 あるいは、@code{@bs{}set} を使って特別なプロパティ @code{fontSize} を設定する@c
1397 か、それを @code{@bs{}with} 節に含める (ただし、@code{@bs{}set} は含めません)
1398 ことによってすべてのフォントのサイズを変更します:
1404 これらの命令文は両方ともフォント サイズを前の値から 2 段階減らします。各段階で@c
1407 それではオッシアの例でフォント サイズを変更してみましょう:
1409 @cindex alignAboveContext property, example
1410 @cindex @code{\with}, example
1411 @cindex Clef, example of overriding
1412 @cindex TimeSignature, example of overriding
1413 @cindex fontSize property, example
1415 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1416 \new Staff ="main" {
1423 alignAboveContext = #"main"
1424 \override Clef #'stencil = ##f
1425 \override TimeSignature #'stencil = ##f
1426 % Reduce all font sizes by ~24%
1436 これでもまだ完璧ではありません。音符の玉とフラグは小さくなりましたが、ステムは@c
1437 それに対して長すぎ、譜表線は離れすぎています。これらをフォント サイズの減少に@c
1438 比例してスケール ダウンさせる必要があります。次のサブ セクションでそれを行う方@c
1443 @subsection オブジェクトの長さと太さ
1444 @translationof Length and thickness of objects
1450 @cindex size, changing
1451 @cindex stem length, changing
1452 @cindex staff line spacing, changing
1454 LilyPond では距離と長さは一般に譜表スペース -- 譜表の中の隣り合う線の間隔 --
1455 で測ります (特別な場合では、譜表スペースの半分で測ることもあります)。一方、た@c
1456 いていの @code{thickness} プロパティは @code{line-thickness} と呼ばれる内部プ@c
1457 ロパティを単位として測ります。例えば、デフォルトでは、ヘアピン (訳者: 強弱記号)
1458 の線の太さは 1 単位の @code{line-thickness} であり、音符のステムの
1459 @code{thickness} は 1.3 です。けれども、それとは単位の異なる太さプロパティがあ@c
1460 るということにも注意してください。例えば、ビームの太さプロパティは譜表スペース@c
1463 それでは、どうやって長さをフォント サイズに比例させるのでしょうか?これは、ま@c
1464 さにこの目的のために提供されている @code{magstep} と呼ばれる特別な関数の助けを@c
1465 借りることによって達成できます。この関数は引数を 1 つ -- フォント サイズの変化
1466 (前の例では @hash{}-2) -- をとり、他のオブジェクトの縮小に比例したスケーリング
1467 ファクタを返します。以下のように使用します:
1469 @cindex alignAboveContext property, example
1470 @cindex @code{\with}, example
1471 @cindex Clef, example of overriding
1472 @cindex TimeSignature, example of overriding
1473 @cindex fontSize property, example
1474 @cindex StaffSymbol, example of overriding
1475 @cindex magstep function, example of using
1476 @cindex staff-space property, example
1477 @cindex stencil property, example
1479 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1480 \new Staff ="main" {
1487 alignAboveContext = #"main"
1488 \override Clef #'stencil = ##f
1489 \override TimeSignature #'stencil = ##f
1491 % Reduce stem length and line spacing to match
1492 \override StaffSymbol #'staff-space = #(magstep -2)
1502 ステムの長さと他の多くの長さに関係するプロパティは常に @code{staff-space} プロ@c
1503 パティの値と比例関係になるよう算出されるため、それらの長さも自動的にスケール
1504 ダウンされます。これはオッシアの垂直方向のスケールだけに効果を及ぼすということ@c
1505 に注意してください -- 水平方向のスケールは、メインの音楽と同期するよう、メイン@c
1506 の音楽のレイアウトによって決定されるため、水平方向のスケールは
1507 @code{staff-space} の変更によっていかなる影響も受けません。もちろん、メインの@c
1508 音楽のすべてのスケールがこの方法で変更された場合、水平方向のスペースも影響を受@c
1509 けます。このことについては、後のレイアウト セクションで議論します。
1511 そして、これでオッシアの作成は完了です。他のすべてのオブジェクトのサイズと長さ@c
1512 が類似の方法で変更されるかもしれません。
1514 上記の例のようなスケールのちょっとした変更に対して、小節線、ビーム、ヘアピン、@c
1515 スラーなどのさまざまな描画線の太さは通常はグローバルな調節を必要としません。あ@c
1516 る特定のレイアウト オブジェクトの太さを調節する必要がある場合、それを達成する@c
1517 最良の方法はそのオブジェクトの @code{thickness} プロパティをオーバライドするこ@c
1518 とです。スラーの太さを変更する例は @ref{レイアウト オブジェクトのプロパティ} で示され@c
1519 ています。すべての描画オブジェクト (つまり、フォントから作り出されるオブジェク@c
1520 トではないもの) の太さが同様の方法で変更されるかもしれません。
1525 @translationof Placement of objects
1537 @translationof Automatic behavior
1539 @cindex within-staff objects
1540 @cindex outside-staff objects
1541 @cindex objects, within-staff
1542 @cindex objects, outside-staff
1544 音楽表記には譜表に属するオブジェクトがいくつかあり、他のオブジェクトは譜表の外@c
1545 側に置かれるべきです。それらはそれぞれ譜表内部オブジェクトと譜表外部オブジェク@c
1548 譜表内部オブジェクトは譜表上に置かれます -- 音符の玉、ステム、臨時記号などで@c
1549 す。通常、それらの位置は音楽自体によって決定されます -- 譜表内部オブジェクトは@c
1550 譜表のある特定の線と同じ垂直位置に置かれたり、そこに置かれるべき他のオブジェク@c
1551 トにくっつけられたりします。近接する和音の中にある音符の玉、ステム、臨時記号の@c
1552 衝突は普通は自動的に回避されます。これから見ていくように、この自動配置を変更す@c
1553 ることができるコマンドとオーバライドがあります。
1555 譜表の外部にあるオブジェクトには、リハーサル記号、テキスト、強弱記号などがあり@c
1556 ます。LilyPond が持つ譜表外部オブジェクトの垂直位置のルールは、譜表外部オブ@c
1557 ジェクトをできるだけ譜表の近くに、しかし他のオブジェクトと衝突しない程度の近さ@c
1558 に置くというものです。以下で示すように、LilyPond はオブジェクトを配置する順番@c
1559 を決定するために @code{outside-staff-priority} プロパティを使用します。
1561 最初に、LilyPond はすべての譜表内部オブジェクトを配置します。それから、@c
1562 @code{outside-staff-priority} に従って譜表外部オブジェクトを並べます。譜表外部@c
1563 オブジェクトは最小の @code{outside-staff-priority} を持つオブジェクトから順番に
1564 1 つずつ並べられ、すでに配置されたオブジェクトと衝突しないように配置されます。@c
1565 つまり、2 つの譜表外部オブジェクトが同じスペースを巡って競合する場合、より小さな
1566 @code{outside-staff-priority} を持つオブジェクトが譜表の近くに配置されます。2
1567 つのオブジェクトが同じ @code{outside-staff-priority} を持つ場合、先に発生する@c
1568 オブジェクトが譜表の近くに配置されます。
1570 以下の例では、すべてのマークアップ テキストが同じ優先度を持っています (なぜな@c
1571 ら、優先度が明示的にセットされていないからです)。@q{Text3} が自動的に譜表の近@c
1572 く、@q{Text2} のすぐ下に納まるよう配置されていることに注意してください。
1574 @cindex markup example
1576 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1583 デフォルトでは、譜も互いにできるだけ近くなるよう配置されます (最小間隔に従いま@c
1584 す)。音符が隣接する譜表に向かって長く突き出てている場合、譜を離さないと表記が@c
1585 重なり合ってしまう場合にのみ譜は離されます。以下の例は譜の調整によって音符が
1586 @q{ぴったりと納まる} 様子を示しています:
1588 @lilypond[quote,ragged-right,verbatim]
1591 \relative c' { c a, }
1594 \relative c'''' { c a, }
1601 @subsection 譜表内部オブジェクト
1602 @translationof Within-staff objects
1604 これまでにコマンド @code{\voiceXXX} がスラー、タイ、運指法記号、ステムの向きに@c
1605 依存する他のすべてに対してどのように影響を与えるかを見てきました。これらのコマ@c
1606 ンドは、多声部音楽を記述しているときに上下する旋律を見分けられるようにすること@c
1607 を可能にするために不可欠なものです。しかしながら、この自動機能をオーバライドす@c
1608 る必要がある場合もあります。このオーバライドは音楽全体に対しても、個々の音符に@c
1609 対してもできます。この自動機能を制御しているプロパティは各レイアウト オブジェ@c
1610 クトの @code{direction} プロパティです。まず、これは何をするのかを説明し、それ@c
1611 から、作成済みのコマンドをいくつか紹介します。それらのコマンドを使うと、一般的@c
1612 な変更のための明示的なオーバライドをコードしなくて済みます。
1615 スラーやタイのようなレイアウト オブジェクトはカーブを描き、曲がり、上下しま@c
1616 す。ステムやフラグのような他のオブジェクトも上下の向きによって位置が左右しま@c
1617 す。@code{direction} がセットされているときは、これは自動的に制御されます。
1624 以下の例は、小節 1 でステムのデフォルトの振る舞いを示しています。高い位置にあ@c
1625 る音符のステムは下向きで、低い位置にある音符のステムは上向きです。続いて 4 つ@c
1626 の音符のステムをすべて強制的に下向きにし、4 つの音符のステムをすべて強制的に上@c
1627 向きにし、最後に 4 つの音符のステムをデフォルトに戻します。
1629 @cindex Stem, example of overriding
1630 @cindex direction property, example
1632 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1634 \override Stem #'direction = #DOWN
1636 \override Stem #'direction = #UP
1638 \revert Stem #'direction
1642 ここで定数 @code{DOWN} と @code{UP} を使っています。これらはそれぞれ値 @code{-1}
1643 と @code{+1} を持ち、定数の代わりにそれらの数値を使うこともできまはす。さらに値
1644 @code{0} を使う場合もあります。この値はステムでは @code{UP} を意味するものとし@c
1645 て扱われますが、いくつかのオブジェクトでは @q{center} という意味になります。値
1646 @code{0} を持つ定数に @code{CENTER} があります。
1648 しかしながら、これらの明示的なオーバライドは普通は使われません。もっと簡単で定@c
1649 義済みのコマンドが利用可能だからです。ここに一般的なコマンドの表を挙げます。そ@c
1650 れぞれのコマンドの意味が明白でない場合は、そのコマンドの意味を述べています。
1652 @multitable @columnfractions .2 .2 .25 .35
1657 @item @code{\arpeggioArrowDown}
1658 @tab @code{\arpeggioArrowUp}
1659 @tab @code{\arpeggioNormal}
1660 @tab 矢印が下に付く、上に付く、付かない
1661 @item @code{\dotsDown}
1663 @tab @code{\dotsNeutral}
1665 @item @code{\dynamicDown}
1666 @tab @code{\dynamicUp}
1667 @tab @code{\dynamicNeutral}
1669 @item @code{\phrasingSlurDown}
1670 @tab @code{\phrasingSlurUp}
1671 @tab @code{\phrasingSlurNeutral}
1672 @tab Note: スラー コマンドとは別になります
1673 @item @code{\slurDown}
1675 @tab @code{\slurNeutral}
1677 @item @code{\stemDown}
1679 @tab @code{\stemNeutral}
1681 @item @code{\textSpannerDown}
1682 @tab @code{\textSpannerUp}
1683 @tab @code{\textSpannerNeutral}
1684 @tab スパナとして挿入されるテキストが譜表の下/上にくる
1685 @item @code{\tieDown}
1687 @tab @code{\tieNeutral}
1689 @item @code{\tupletDown}
1690 @tab @code{\tupletUp}
1691 @tab @code{\tupletNeutral}
1695 これらの定義済みコマンドの前には @code{@bs{}once} が付か@strong{ない}かもしれ@c
1696 ません。コマンドの効果を単一の音符に制限したい場合、等価の @code{@bs{}once
1697 @bs{}override} コマンドを使用するか、あるいは、定義済みコマンドを使用して、効@c
1698 果を受けた音符の後に対応する @code{@bs{}xxxNeutral} コマンドを置かなければなり@c
1701 @subheading 運指法記号 (Fingering)
1703 @cindex fingering, placement
1704 @cindex fingering, chords
1706 単一の音符に対する運指法記号の配置も @code{direction} プロパティによって制御で@c
1707 きますが、@code{direction} を変更しても和音の運指法記号は影響を受けません。こ@c
1708 れから見ていくように、和音の中の個々の音符の運指法記号を制御するための特別なコ@c
1709 マンドがあります。このコマンドを使うことで運指法記号を各音符の上、下、左、右に@c
1712 まず、単一の音符の運指法記号に対する @code{direction} を効果を示します。最初の@c
1713 小節はデフォルト状態で、その後で @code{DOWN} と @code{UP} を指定したときの効果@c
1716 @cindex Fingering, example of overriding
1717 @cindex direction property, example
1719 @lilypond[quote,verbatim,relative=2]
1721 \override Fingering #'direction = #DOWN
1723 \override Fingering #'direction = #UP
1727 しかしながら、@code{direction} プロパティをオーバライドすることは、手動で運指@c
1728 法記号を音符の上または下に配置するもっとも簡単な方法ではありません。運指法番号@c
1729 の前に @code{-} の代わりに @code{_} または @code{^} を使う方が普通は適切です。@c
1730 ここで、上記の例にこの方法を用いた例を挙げます:
1732 @cindex fingering example
1734 @lilypond[quote,verbatim,relative=2]
1740 @code{direction} プロパティは和音では無視されますが、方向を示す接頭辞 @code{_}
1741 と @code{^} は機能します。以下で示すように、デフォルトでは、運指法記号は和音の@c
1742 音符の上と下の両方に自動的に配置されます:
1744 @cindex fingering example
1746 @lilypond[quote,verbatim,relative=2]
1753 しかし、以下で示すように、運指法番号のすべてまたはいずれかを手動で強制的に和音@c
1754 の上または下に配置するために、これはオーバライドされるかもしれません:
1756 @cindex fingering example
1758 @lilypond[quote,verbatim,relative=2]
1764 @code{\set fingeringOrientations} コマンドを使うことによって和音の中にある個々@c
1765 の音符の運指法記号の配置をより細かく制御することさえできます。このコマンドの@c
1769 @code{\set fingeringOrientations = #'([up] [left/right] [down])}
1773 @code{fingeringOrientations} は @code{Voice} コンテキストのプロパティであり、@c
1774 @code{New_fingering_engraver} によって作成、使用されるため、@code{\set} が使用@c
1777 このプロパティには 1 つから 3 つまでの値のリストがセットされるかもしれません。@c
1778 このプロパティは運指法記号を上 (リストに @code{up} がある場合)、下 (リストに
1779 @code{down} がある場合)、左 (リストに @code{left} がある場合。リストに
1780 @code{right} がある場合は右) に配置します。逆に配置位置がリストされていない場@c
1781 合、その位置に運指法記号は配置されません。LilyPond はこれらの制約を受け取り、@c
1782 後に続く和音の音符への運指法記号をうまく配置します。@code{left} と @code{right}
1783 は相互排他的であるということに注意してください -- 運指法記号は左右のどちらかに@c
1784 しか配置されないか、どちらにも配置されません。
1786 @warning{このコマンドを使って単一の音符への運指法記号の配置をコントロールする@c
1787 には、その音符を角括弧で囲んで単一音符の和音として記述する必要があります。}
1791 @cindex fingering example
1792 @cindex @code{\set}, example of using
1793 @cindex fingeringOrientations property, example
1795 @lilypond[quote,fragment,ragged-right,verbatim,relative=1]
1796 \set fingeringOrientations = #'(left)
1798 < c-1 e-2 g-3 b-5 > 4
1799 \set fingeringOrientations = #'(left)
1801 < c-1 e-2 g-3 b-5 > 4
1802 \set fingeringOrientations = #'(up left down)
1804 < c-1 e-2 g-3 b-5 > 4
1805 \set fingeringOrientations = #'(up left)
1807 < c-1 e-2 g-3 b-5 > 4
1808 \set fingeringOrientations = #'(right)
1810 < c-1 e-2 g-3 b-5 > 4
1814 運指法記号が少し込み合っているように見える場合は、@code{font-size} でサイズを@c
1815 下げることができます。デフォルト値は内部リファレンスの @code{Fingering} オブ@c
1816 ジェクトのページから @code{-5} であることがわかるので、@code{-7} にセットして@c
1819 @lilypond[quote,fragment,ragged-right,verbatim,relative=1]
1820 \override Fingering #'font-size = #-7
1821 \set fingeringOrientations = #'(left)
1823 < c-1 e-2 g-3 b-5 > 4
1824 \set fingeringOrientations = #'(left)
1826 < c-1 e-2 g-3 b-5 > 4
1827 \set fingeringOrientations = #'(up left down)
1829 < c-1 e-2 g-3 b-5 > 4
1830 \set fingeringOrientations = #'(up left)
1832 < c-1 e-2 g-3 b-5 > 4
1833 \set fingeringOrientations = #'(right)
1835 < c-1 e-2 g-3 b-5 > 4
1840 @subsection 譜表外部オブジェクト
1841 @translationof Outside-staff objects
1843 譜表外部オブジェクトは自動的に衝突を回避するよう配置されます。小さな値の
1844 @code{outside-staff-priority} プロパティを持つオブジェクトは譜表の近くに配置さ@c
1845 れ、他の譜表外部オブジェクトは衝突を避けるのに必要な分だけ離されます。@c
1846 @code{outside-staff-priority} は @code{grob-interface} の中で定義されているた@c
1847 め、すべてのレイアウト オブジェクトのプロパティです。デフォルトでは、すべての@c
1848 譜表内部オブジェクトの @code{outside-staff-priority} は @code{@hash{}f} にセッ@c
1849 トされていて、譜表外部オブジェクトが作成されたときにその譜表外部オブジェクトの
1850 @code{outside-staff-priority} に適当な数値がセットされます。以下の表はデフォル@c
1851 トで @code{Staff} コンテキストまたは @code{Voice} コンテキストの中に配置される@c
1852 いくつかの一般的な譜表外部オブジェクトのデフォルトの
1853 @code{outside-staff-priority} 値を示しています。
1855 @multitable @columnfractions .3 .3 .3
1856 @headitem レイアウト オブジェクト
1858 @tab 以下のオブジェクトの配置を制御する:
1859 @item @code{MultiMeasureRestText}
1862 @item @code{TextScript}
1865 @item @code{OttavaBracket}
1867 @tab オッターバ (オクターブを上下させる記号) の囲み
1868 @item @code{TextSpanner}
1871 @item @code{DynamicLineSpanner}
1874 @item @code{VoltaBracketSpanner}
1876 @tab Volta (番号付きのリピート) の囲み
1877 @item @code{TrillSpanner}
1882 これらのうちのいくつかのデフォルトでの配置を示している例を挙げます。
1884 @cindex text spanner
1885 @cindex ottava bracket
1887 @funindex \startTextSpan
1888 @funindex startTextSpan
1889 @funindex \stopTextSpan
1890 @funindex stopTextSpan
1892 @cindex TextSpanner, example of overriding
1893 @cindex bound-details property, example
1895 @lilypond[quote,fragment,ragged-right,verbatim,relative=1]
1896 % Set details for later Text Spanner
1897 \override TextSpanner #'(bound-details left text)
1898 = \markup { \small \bold Slower }
1899 % Place dynamics above staff
1901 % Start Ottava Bracket
1906 % Add Dynamic Line Spanner
1912 c\ff c \stopTextSpan
1913 % Stop Ottava Bracket
1918 この例はテキスト スパナ -- 音楽の上に置かれる延長線付きのテキスト -- の作成方@c
1919 法についても示しています。スパナは @code{@bs{}startTextSpan} コマンドから
1920 @code{@bs{}stopTextSpan} コマンドまで延び、テキストのフォーマットは
1921 @code{@bs{}override TextSpanner} コマンドによって定義されます。詳細は
1922 @ruser{Text spanners} を参照してください。
1924 この例はさらにオッターバ囲みを作成する方法についても示しています。
1926 @cindex tweaking bar number placement
1927 @cindex bar numbers, tweaking placement
1928 @cindex tweaking metronome mark placement
1929 @cindex metronome mark, tweaking placement
1930 @cindex tweaking rehearsal mark placement
1931 @cindex rehearsal marks, tweaking placement
1933 小節番号、メトロノーム記号、リハーサル記号は示されていないということに注意して@c
1934 ください。デフォルトでは、それらは @code{Score} コンテキストの中で作成され、そ@c
1935 れらの @code{outside-staff-priority} は @code{Staff} コンテキストの中で作成さ@c
1936 れるレイアウト オブジェクトとは異なり無視されます。小節番号、メトロノーム記号@c
1937 あるいはリハーサル記号をそれらの @code{outside-staff-priority} に従って配置し@c
1938 たいのなら、@code{Score} コンテキストからそれぞれ @code{Bar_number_engraver},
1939 @code{Metronome_mark_engraver}, @code{Mark_engraver} を削除して最上位の
1940 @code{Staff} コンテキストに置く必要があります。そうした場合、それらの記号には@c
1941 以下のデフォルトの @code{outside-staff-priority} 値が与えられます:
1943 @multitable @columnfractions .3 .3
1944 @headitem レイアウト オブジェクト @tab 優先度
1945 @item @code{RehearsalMark} @tab @code{1500}
1946 @item @code{MetronomeMark} @tab @code{1000}
1947 @item @code{BarNumber} @tab @code{ 100}
1950 @code{outside-staff-priority} のデフォルト値による配置があなたの望みに合わない@c
1951 場合、いずれかのオブジェクトの優先度をオーバライドすることになるかもしれませ@c
1952 ん。上記の例で、オッターバ囲みをテキスト スパナの下に配置したいとします。すべ@c
1953 きことは、@code{OttavaBracket} は @code{Staff} コンテキストの中に作成されると@c
1954 いうことを思い出し、@code{OttavaBracket} の優先度を内部リファレンスか上記の表@c
1955 で調べて、それを @code{TextSpanner} の値よりも小さくすることです:
1957 @cindex TextSpanner, example of overriding
1958 @cindex bound-details property, example
1960 @lilypond[quote,fragment,ragged-right,verbatim,relative=1]
1961 % Set details for later Text Spanner
1962 \override TextSpanner #'(bound-details left text)
1963 = \markup { \small \bold Slower }
1964 % Place dynamics above staff
1966 %Place following Ottava Bracket below Text Spanners
1967 \once \override Staff.OttavaBracket #'outside-staff-priority = #340
1968 % Start Ottava Bracket
1973 % Add Dynamic Line Spanner
1979 c\ff c \stopTextSpan
1980 % Stop Ottava Bracket
1985 @cindex slurs and outside-staff-priority
1986 @cindex slurs and articulations
1987 @cindex articulations and slurs
1989 スラーはデフォルトでは譜表内部オブジェクトに分類されています。しかしながら、譜@c
1990 表の上部に配置された音符に付くスラーはしばしば譜表の上に表示されます。このこと@c
1991 は、スラーがまず最初に配置されるため、アーティキュレーションなどの譜表外部オブ@c
1992 ジェクトをあまりにも高い位置に押し上げる可能性があります。アーティキュレーショ@c
1993 ンの @code{avoid-slur} プロパティに @code{'inside} をセットすることでアーティ@c
1994 キュレーションをスラーよりも内側に配置することができます。しかし、@c
1995 @code{avoid-slur} プロパティはアーティキュレーションの
1996 @code{outside-staff-priority} が @code{@hash{}f} にセットされている場合にのみ@c
1997 効果を持ちます。代替手段として、スラーの @code{outside-staff-priority} に数値@c
1998 をセットすることによって、スラーを他の譜表外部オブジェクトとともに
1999 @code{outside-staff-priority} 値に従って配置することができます。ここで、2 つの@c
2002 @lilypond[quote,verbatim,relative=2]
2003 c4( c^\markup\tiny\sharp d4.) c8
2005 \once \override TextScript #'avoid-slur = #'inside
2006 \once \override TextScript #'outside-staff-priority = ##f
2007 c^\markup\tiny\sharp d4.) c8
2008 \once \override Slur #'outside-staff-priority = #500
2009 c4( c^\markup\tiny\sharp d4.) c8
2012 @code{outside-staff-priority} は、個々のオブジェクトの垂直方向の配置を制御する@c
2013 ために使用することもできます。しかしながら、その結果は常に望み通りになるわけで@c
2014 はありません。@ref{自動配置} にある例で @qq{Text3} を @qq{Text4} の@c
2015 上に配置したいとします。すべきことは @code{TextScript} の優先度を内部リファレ@c
2016 ンスか上記の表で調べて、@qq{Text3} の優先度を大きくすることです:
2018 @cindex TextScript, example of overriding
2019 @cindex outside-staff-priority property, example
2021 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
2024 \once \override TextScript #'outside-staff-priority = #500
2029 これはたしかに @qq{Text3} を @qq{Text4} の上に配置しています。しかし、@c
2030 @qq{Text3}を @qq{Text2} の上に配置して、@qq{Text4} を押し下げてもいます。おそ@c
2031 らく、これはそれほど望ましい結果ではないでしょう。本当に望んでいることは、すべ@c
2032 ての注釈を譜表の上に譜表から同じ距離だけ離して配置することです。そうするには明@c
2033 らかに、テキストのためにもっと広いスペースを確保するために、音符を水平方向に広@c
2034 げる必要があります。これは @code{@bs{}textLengthOn} コマンドを用いることで達成@c
2037 @subheading \textLengthOn
2039 @cindex notes, spreading out with text
2041 @funindex \textLengthOn
2042 @funindex textLengthOn
2043 @funindex \textLengthOff
2044 @funindex textLengthOff
2046 デフォルトでは、音楽のレイアウトが考慮されている限り、マークアップによって作り@c
2047 出されるテキストは水平方向のスペースと関係しません。@code{@bs{}textLengthOn}
2048 コマンドはこの動作を逆にして、テキストの配置に便宜をはかる必要がある限り、音符@c
2051 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
2052 \textLengthOn % Cause notes to space out to accommodate text
2059 デフォルトの動作に戻すためのコマンドは @code{@bs{}textLengthOff} です。@c
2060 @code{@bs{}once} は @code{@bs{}override}, @code{@bs{}set}, @code{@bs{}revert}
2061 それに @code{@bs{}unset} だけに付けることができるということを思い出してくださ@c
2062 い。そのため、@code{@bs{}textLengthOn} で @code{@bs{}once} を使うことはできま@c
2065 @cindex markup text, allowing collisions
2067 マークアップ テキストは譜表の上に突き出している音符を避けます。このことが望ま@c
2068 しくない場合、優先度を @code{@hash{}f} にセットすることによって上方向への自動@c
2069 再配置を Off にすることになるかもしれません。ここで、マークアップ テキストがそ@c
2070 のような音符とどのように相互作用するかを示す例を挙げます。
2072 @cindex TextScript, example of overriding
2073 @cindex outside-staff-priority property, example
2075 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
2076 % This markup is short enough to fit without collision
2080 % This is too long to fit, so it is displaced upwards
2084 % Turn off collision avoidance
2085 \once \override TextScript #'outside-staff-priority = ##f
2089 % Turn off collision avoidance
2090 \once \override TextScript #'outside-staff-priority = ##f
2091 \textLengthOn % and turn on textLengthOn
2092 c,,2^"Long Text " % Spaces at end are honored
2099 @cindex tweaking dynamics placement
2100 @cindex dynamics, tweaking placement
2102 通常、強弱記号は譜表の下に配置されます。しかしながら、@code{dynamicUp} コマン@c
2103 ドを使うことで上に配置されるかもしれません。強弱記号は、その記号が付いている音@c
2104 符と垂直方向の関係で配置され、フレージング スラーや小節番号などの譜表内部オブ@c
2105 ジェクトのすべてよりも下 (あるいは上) に配置されます。このことは、以下の例のよ@c
2106 うに、到底受け入れられない結果を生み出す可能性があります:
2108 @lilypond[quote,fragment,ragged-right,verbatim,relative=1]
2113 bes4.~\f\< \( bes4 bes8 des4\ff\> c16 bes\! |
2114 ees,2.~\)\mf ees4 r8 |
2117 しかしながら、音符とそれに付けられた強弱記号が互いに近い場合、自動配置は後の方@c
2118 にある強弱記号を譜表から離すことによって衝突を避けます。しかし、以下のかなり不@c
2119 自然な例が示すように、それは最適な配置ではないかもしれません:
2121 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
2127 @q{実際} の音楽で同じような状況があった場合、音符の間隔をもう少し広げて、すべ@c
2128 ての強弱記号が譜表から垂直方向に同じだけ離れるようにする方が望ましいかもしれま@c
2129 せん。マークアップ テキストの場合は @code{@bs{}textLengthOn} コマンドを用いる@c
2130 ことによってそうすることができますが、強弱記号には等価のコマンドがありません。@c
2131 そのため、@code{@bs{}override} コマンドを用いてそれを達成する方法を見出す必要@c
2134 @subheading グラフィカル オブジェクトのサイズ
2137 @cindex sizing grobs
2139 まず最初に、グラフィカル オブジェクトのサイズがどのように決定されるかを学ばな@c
2140 くてはなりません。すべてのグラフィカル オブジェクトの内部では参照ポイントが定@c
2141 義され、それはそれらの親オブジェクトとの相対位置を決定するために使用されます。@c
2142 このポイントは親オブジェクトから垂直方向に @code{X-offset}、垂直方向に
2143 @code{Y-offset} 離れた位置になります。オブジェクトの水平方向の広がりは数値のペア
2144 @code{X-extent} で与えられ、そのペアはオブジェクトの左端と右端の参照ポイントと@c
2145 の相対関係について述べています。垂直方向の広がりも同様に数値のペア
2146 @code{Y-extent} によって与えられます。これらは @code{grob-interface} をサポー@c
2147 トするすべてのグラフィカル オブジェクトが持つプロパティです。
2149 @cindex @code{extra-spacing-width}
2151 デフォルトでは、譜表外部オブジェクトには 0 の幅が与えられているため、水平方向@c
2152 で重なる可能性があります。これは @code{extra-spacing-width} に @code{'(+inf.0 .
2153 -inf.0)} をセットすることによって、左端の広がりにプラス無限大、右端の広がりに@c
2154 マイナス無限大を付け加えるというトリックによって達成されています。そのため、譜@c
2155 表外部オブジェクトが水平方向で重ならないことを保証するには、@c
2156 @code{extra-spacing-width} の値を @code{'(0 . 0)} にオーバライドする必要があり@c
2157 ます。これにより、本当の幅が明らかになります。以下は強弱記号テキストに対してこ@c
2161 \override DynamicText #'extra-spacing-width = #'(0 . 0)
2165 これが前の例で機能するかどうかを見てみましょう:
2167 @cindex DynamicText, example of overriding
2168 @cindex extra-spacing-width property, example
2170 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
2172 \override DynamicText #'extra-spacing-width = #'(0 . 0)
2177 確かに強弱記号の再配置をストップさせています。しかし、2 つの問題が残っていま@c
2178 す。強弱記号を互いにもう少し離すべきであり、それらは譜表から同じ距離にあるほう@c
2179 が望ましいです。最初の問題は簡単に解決できます。@code{extra-spacing-width} を 0
2180 にする代わりに、もう少し大きな値を与えるのです。単位は 2 本の譜表線の間隔なの@c
2181 で、左端を 1 単位の半分だけ左に移動させ、右端を 1 単位の半分だけ右に移動させる@c
2184 @cindex DynamicText, example of overriding
2185 @cindex extra-spacing-width property, example
2187 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
2189 % Extend width by 1 staff space
2190 \override DynamicText #'extra-spacing-width = #'(-0.5 . 0.5)
2195 これで前よりも良くなりました。しかし、強弱記号が音符に合わせて上下するよりも、@c
2196 同じベースラインで揃っている方が望ましいでしょう。それを行うためのプロパティは
2197 @code{staff-padding} であり、後に続くセクションでカバーされています。
2202 @translationof Collisions of objects
2213 @subsection オブジェクトを移動させる
2214 @translationof Moving objects
2216 @cindex moving overlapping objects
2217 @cindex moving colliding objects
2218 @cindex moving colliding grobs
2219 @cindex objects, moving colliding
2220 @cindex grobs, moving colliding
2222 これを聞いて驚くかもしれませんが、LilyPond は完璧ではありません。いくつかの表@c
2223 記要素が重なりある可能性があります。これは遺憾なことですが、実際にはごく稀で@c
2224 す。通常、オブジェクトを移動させる必要性は読みやすさや美しさのためです -- オブ@c
2225 ジェクトの周りにもう少しスペースを多く/少なくとった方がより良くなるといった場@c
2228 表記の重なりを解決する主要なアプローチが 3 つあります。それらは以下の順番で考@c
2233 重なり合っているオブジェクトの 1 つの @strong{direction} を @ref{譜表内部オブジェクト} でリストアップした内部オブジェクトのための定義済みコマンドを用いて変@c
2234 更することになるかもしれません。ステム、スラー、ビーム、タイ、強弱記号、テキス@c
2235 ト、連符はこの方法で容易に再配置できるかもしれません。この方法の限界は配置の仕@c
2236 方の選択肢が 2 つしかないことであり、どちらも適当でないかもしれません。
2239 LilyPond がレイアウト オブジェクトを配置するときに使用する@strong{オブジェクト
2240 プロパティ}を @code{@bs{}override} を用いて変更することになるかもしれません。@c
2241 オブジェクト プロパティに変更を加えることの利点は、(a) スペースをとる必要があ@c
2242 る場合に他のいくつかのオブジェクトは自動的に移動させられます、(b) 1 回のオーバ@c
2243 ライドを同じオブジェクト タイプのインスタンスすべてに適用することができます。@c
2244 変更するプロパティには以下のものが含まれます:
2251 これはすでに詳しくカバーされています -- @ref{譜表内部オブジェクト} を参照して@c
2255 @code{padding}, @code{left-padding},
2256 @code{right-padding}, @code{staff-padding}
2259 @cindex left-padding property
2260 @cindex padding property
2261 @cindex right-padding property
2262 @cindex staff-padding property
2264 あるオブジェクトが配置されるとき、そのオブジェクトの @code{padding} プロパティ@c
2265 が、そのオブジェクトとそのオブジェクトに最も隣接するオブジェクトの端との間に置@c
2266 かれる間隔を指定します。@strong{配置される最中}のオブジェクトの @code{padding}
2267 値が使用されるということに注意してください。すでに配置されたオブジェクトの
2268 @code{padding} 値は無視されます。@code{padding} によって指定された間隔は
2269 @code{side-position-interface} をサポートするオブジェクトすべてに適用すること@c
2272 臨時記号のグループの配置は、@code{padding} の代わりに、@code{left-padding} と
2273 @code{right-padding} によって制御されます。これらのプロパティは
2274 @code{AccidentalPlacement} オブジェクトの中にあり、注意すべきことに、そのオブ@c
2275 ジェクトは @strong{Staff} コンテキストの中にあります。譜刻プロセスでは、音符の@c
2276 玉が最初に譜刻され、臨時記号 (がある場合は) が次に音符の玉の左側に付け加えられ@c
2277 ます。このとき、臨時記号と音符の玉の間隔は @code{right-padding} プロパティに@c
2278 よって指定されます。そのため、@code{AccidentalPlacement} オブジェクトの
2279 @code{right-padding} プロパティだけが臨時記号の配置に影響を与えます。
2281 @code{staff-padding} プロパティは @code{padding} プロパティと深い関わりがあり@c
2282 ます: @code{padding} プロパティは、@code{side-position-interface} をサポートす@c
2283 るオブジェクトとそれに最隣接する他のオブジェクト (一般には音符や譜表線) との間@c
2284 のスペースの最小量を制御します。一方、@code{staff-padding} は常に譜表の外側に@c
2285 配置されるレイアウト オブジェクトにのみ適用されます -- これは譜表の外側に配置@c
2286 されるオブジェクトと譜表の間に挿入されるべきスペースの最小量を制御します。@c
2287 @code{staff-paddin} は譜表ではなく音符との相対関係で配置されるオブジェクトには@c
2288 影響を与えないということに注意してください。そのようなオブジェクトに対して
2289 @code{staff-padding} のオーバライドを行ったとしてもエラーは起きないかもしれま@c
2292 あなたが再配置しようとしているオブジェクトに対して求められる @code{padding} プ@c
2293 ロパティはどれなのかを見つけるには、内部リファレンスに戻ってそのオブジェクトの@c
2294 プロパティを調べる必要があります。@code{padding} プロパティはあなたが再配置し@c
2295 ようとしているオブジェクトの中には無いかもしれないということに注意してくださ@c
2296 い。その場合は、そのオブジェクトに関係があるオブジェクトを調べてください。
2298 すべての @code{padding} 値は譜表スペースで測られます。たいていのオブジェクトで@c
2299 は、この値はデフォルトで約 1.0 かそれ以下にセットされています (それぞれのオブ@c
2300 ジェクトで値はさまざまです)。間隔を大きく (あるいは小さく) する必要がある場@c
2301 合、その値はオーバライドされるかもしれません。
2304 @code{self-alignment-X}
2306 @cindex self-alignment-X property
2308 このプロパティを使うことで、親オブジェクトの参照ポイントに従って、オブジェクト@c
2309 を左、右、中央に揃えることができます。このプロパティは
2310 @code{self-alignment-interface} をサポートするオブジェクトすべてに対して使用す@c
2311 ることができます。一般に、テキストを保持するオブジェクトです。値は @code{Left},
2312 @code{RIGHT}, @code{CENTER} です。代替手段として、@code{-1} から @code{+1} ま@c
2313 での数値を指定することもできます。@code{-1} は左揃えであり、@code{+1} は右揃@c
2314 え、その間の数値は左揃えから右揃えへのテキストを移動させます (訳者: @code{-0.5}
2315 であれば、左揃えと中央揃えの中間ということ)。@code{1} よりも大きな数値を指定す@c
2316 ることでテキストをさらに左へ、@code{-1} よりも小さな数値を指定することでテキス@c
2317 トをさらに右へ移動させることができます。この値を @code{1} 増減することによる移@c
2321 @code{extra-spacing-width}
2323 @cindex extra-spacing-width property
2325 このプロパティは @code{item-interface} をサポートするオブジェクトすべてで利用@c
2326 可能です。このプロパティは 2 つの数値をとり、最初の数値はオブジェクトの左側に@c
2327 余白を追加し、2 番目の数値はオブジェクトの右側に余白を追加します。負値はオブ@c
2328 ジェクトの端を左に移動させ、正値は右に移動させます。そのため、オブジェクトを広@c
2329 くするには、最初の数値を負値にして、2 番目の数値を正値にする必要があります。す@c
2330 べてのオブジェクトが両方の数値を遵守するわけではないということに注意してくださ@c
2331 い。例えば、@code{Accidental} オブジェクトは最初の数値 (左端) にしか注意を払い@c
2335 @code{staff-position}
2337 @cindex staff-position property
2339 @code{staff-position} は @code{staff-symbol-referencer-interface} のプロパティ@c
2340 です。これは、譜表との相対関係で配置されるオブジェクトによってサポートされま@c
2341 す。このプロパティはオブジェクトの垂直方向の位置を、譜表の中央にある譜表線から@c
2342 譜表スペースの半分を単位として、指定します。このプロパティは複数小節に亘る休@c
2343 符、タイ、異なるボイスの中にある音符といったレイアウト オブジェクトの衝突を解@c
2349 @cindex force-hshift property
2351 和音の中で近接して配置された音符や異なるボイスの中にあって同時に起こる音符は、@c
2352 音符の玉の衝突を避けるために、2 つ (場合によってはそれ以上) の列に配置されま@c
2353 す。この列は音符列と呼ばれ、その列に音符をレイアウトするために @code{NoteColumn}
2356 @code{force-hshift} プロパティは @code{NoteColumn} のプロパティです (実際には
2357 @code{note-column-interface} のプロパティです)。このプロパティを変更することで@c
2358 音符列を、音符列特有の単位 -- すなわち、最初のボイスの中にある音符の音符玉の幅
2359 -- に従って、移動させることができます。このプロパティは、通常の
2360 @code{@bs{}shiftOn} コマンド (@ref{ボイスの明示的なインスタンス化} を参照して@c
2361 ください) が音符の衝突を解決できないような複雑な状況で使用されるべきです。この@c
2362 目的のためには、@code{extra-offset} プロパティを用いるよりも @code{force-hshift}
2363 プロパティを用いる方が好ましいです。なぜなら、譜表スペースを単位とした距離を算@c
2364 出する必要が無く、@code{NoteColumn} の内外に音符を移動させることは音符玉のマー@c
2365 ジといった他のアクションに影響を与えるからです。
2370 最後に、他の方法がすべて失敗した場合、オブジェクトを手動で譜表の中央線からの垂@c
2371 直方向の相対位置に従って、あるいは新たに設定した位置との距離に従って、再配置す@c
2372 ることになるかもしれません。この方法の欠点は、再配置のための正確な値を算出する@c
2373 必要がある -- しばしば、その算出はそれぞれのオブジェクトに対して個々に、トライ@c
2374 &エラーで行われます -- 必要があるということ、さらに、この方法による移動は
2375 LilyPond が他のオブジェクトをすべて配置した後に行われるため、ユーザはその結果@c
2376 として起こるかもしれない衝突をすべて回避する責任があるということです。しかし、@c
2377 この方法の最大の問題点は、音楽が後で変更された場合に、再配置用の値を再び算出す@c
2378 る必要があるということです。このタイプの手動再配置のために使用されるプロパティ@c
2384 @cindex extra-offset property
2386 このプロパティは @code{grob-interface} をサポートするレイアウト オブジェクトの@c
2387 いずれかに適用されます。このプロパティはペアになった数値をとり、それぞれの数値@c
2388 は水平方向と垂直方向の移動を指定します。負値はオブジェクトを左または下へ移動さ@c
2389 せます。単位は譜表スペースです。この移動はオブジェクトの譜刻が完了した後に行わ@c
2390 れるため、あるオブジェクトを、任意の位置へ、他のオブジェクトに影響を与えること@c
2395 @cindex positions property
2397 このプロパティは、ビーム、スラー、連符の傾きと高さを手動で調節するために最も有@c
2398 用なプロパティです。このプロパティはペアになった数値をとり、それぞれの数値は@c
2399 ビーム、スラーなどの左端と右端の位置を譜表の中央線との距離で指定します。単位は@c
2400 譜表スペースです。けれども、スラーとフレージング スラーを任意の値で再配置する@c
2401 ことはできないということに注意してください。LilyPond はまずスラーが取り得る位@c
2402 置のリストを生成し、それからデフォルトでは @qq{最良に見える} スラーを探しま@c
2403 す。@code{positions} がオーバライドされていた場合、そのリストの中からリクエス@c
2404 トされた位置に最も近いスラーが選択されます。
2409 あるオブジェクトがこれらのプロパティすべてを持っているわけではありません。内部@c
2410 リファレンスに行き、そのオブジェクトではどのプロパティが利用可能なのかを調べる@c
2413 @multitable @columnfractions .5 .5
2414 @headitem オブジェクト タイプ
2416 @item アーティキュレーション (Articulation)
2420 @item 強弱記号 (Dynamic) (垂直方向)
2421 @tab @code{DynamicLineSpanner}
2422 @item 強弱記号 (Dynamic) (水平方向)
2423 @tab @code{DynamicText}
2424 @item 運指法記号 (Fingering)
2425 @tab @code{Fingering}
2426 @item リハーサル / テキスト記号 (Rehearsal / Text mark)
2427 @tab @code{RehearsalMark}
2430 @item テキスト -- つまり、@code{^"text"} (Text)
2431 @tab @code{TextScript}
2435 @tab @code{TupletBracket}
2440 @subsection 表記の重なりを修正する
2441 @translationof Fixing overlapping notation
2443 今度は、前のセクションで扱ったプロパティが表記の重なりを解決する手助けをどのよ@c
2446 @subheading padding プロパティ
2449 @cindex fixing overlapping notation
2450 @cindex overlapping notation
2452 @code{padding} プロパティに値をセットすることによって、音符とその上または下に@c
2453 譜刻される記号との間の距離を増減することができます。
2455 @cindex Script, example of overriding
2456 @cindex padding property, example
2458 @lilypond[quote,fragment,relative=1,verbatim]
2460 \override Script #'padding = #3
2464 @cindex MetronomeMark, example of overriding
2465 @cindex padding property, example
2467 @lilypond[quote,fragment,relative=1,verbatim]
2468 % This will not work, see below:
2469 \override MetronomeMark #'padding = #3
2473 \override Score.MetronomeMark #'padding = #3
2478 2 番目の例では、ある特定のオブジェクトを扱うのはどのコンテキストなのかを突き止@c
2479 めることが重要であるということに注意してください。@code{MetronomeMark} オブ@c
2480 ジェクトは @code{Score} コンテキストの中で処理されるため、@code{Voice} コンテ@c
2481 キストの中でのプロパティの変更は無視されます。更に詳細を知りたければ、@c
2482 @ruser{Modifying properties} を参照してください。
2484 @code{outside-staff-priority} に従って配置されているオブジェクトの並びの中のあ@c
2485 るオブジェクトの @code{padding} プロパティが増やされた場合、そのオブジェクトと@c
2486 それよりも外側にあるすべてオブジェクトが移動させられます。
2489 @subheading left-padding と right-padding
2491 @cindex left-padding property
2492 @cindex right-padding property
2494 @code{right-padding} プロパティは臨時記号とそれが適用される音符との間のスペー@c
2495 スに影響を与えます。このプロパティを変更することは必ずしも必要ではありません@c
2496 が、以下の例は変更を必要とする状況の 1 つを示しています。B ナチュラルと B フ@c
2497 ラットの両方を保持する和音を譜刻したいとします。あいまいさ (あるいは多義: ここ@c
2498 では B が B ナチュラルと B フラットの両方に解釈できるということ) を避けるため@c
2499 に、音符の前にナチュラル記号とフラット記号の両方を置くことにします。以下に、そ@c
2500 れを達成するための試みをいくつか挙げます:
2502 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
2508 どれもうまくいっていません。2 番目と 3 番目の (和) 音符では 2 つの記号が衝突し@c
2511 これを達成するための方法の 1 つは、臨時記号のステンシルを、ナチュラル記号とフ@c
2512 ラット記号を望んでいる並びで保持しているマークアップでオーバライドすることで@c
2515 @cindex Accidental, example of overriding
2516 @cindex text property, example
2517 @cindex stencil property, example
2518 @cindex AccidentalPlacement, example of overriding
2519 @cindex right-padding property, example
2521 @lilypond[quote,ragged-right,verbatim]
2522 naturalplusflat = \markup { \natural \flat }
2524 \once \override Accidental
2525 #'stencil = #ly:text-interface::print
2526 \once \override Accidental #'text = #naturalplusflat
2527 \once \override Score.AccidentalPlacement #'right-padding = #1.5
2533 これは必然的に臨時記号のステンシルをオーバライドすることになります。このオーバ@c
2534 ライドについては後々までカバーされません。ステンシル タイプは手続きでなければならず、@c
2535 ここでは @code{Accidental} の @code{text} プロパティの内容 -- フラット記号が後@c
2536 に続くナチュラル記号 -- を譜刻するように変更されています。それらの記号は
2537 @code{right-padding} のオーバライドによって音符の玉からさらに遠くへ移動させら@c
2542 @subheading staff-padding プロパティ
2544 @cindex aligning objects on a baseline
2545 @cindex objects, aligning on a baseline
2547 @code{staff-padding} を使うことで、強弱記号などのオブジェクトを、それらが取り@c
2548 付けられる音符の位置に依存した高さではなく、譜表上のある固定した高さのベースラ@c
2549 インに揃えることができます。このプロパティは @code{DynamicText} のプロパティで@c
2550 はなく、@code{DynamicSpanner} のプロパティです。この理由は、このベースラインは@c
2551 延長スパナを含む@strong{すべて}の強弱起動に等しく適用されるべきだからです。そ@c
2552 のため、これは以前のセクションでの例の中にある強弱記号を揃えるための方法になり@c
2555 @cindex DynamicText, example of overriding
2556 @cindex extra-spacing-width property, example
2557 @cindex DynamicLineSpanner, example of overriding
2558 @cindex staff-padding property, example
2560 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
2562 % Extend width by 1 unit
2563 \override DynamicText #'extra-spacing-width = #'(-0.5 . 0.5)
2564 % Align dynamics to a base line 2 units above staff
2565 \override DynamicLineSpanner #'staff-padding = #2
2570 @subheading self-alignment-X プロパティ
2572 弦楽器の運指法記号オブジェクトと音符のステムとの衝突を、このプロパティが運指法@c
2573 記号オブジェクトの右端を親の音符の参照ポイントに揃えることによって解決している@c
2576 @cindex StringNumber, example of overriding
2577 @cindex self-alignment-X property, example
2579 @lilypond[quote,fragment,ragged-right,verbatim,relative=3]
2582 \once \override StringNumber #'self-alignment-X = #RIGHT
2586 @subheading staff-position プロパティ
2588 @cindex object collision within a staff
2590 あるボイスの中にある複数小節に亘る休符は他のボイスの中にある音符と衝突する可能@c
2591 性があります。このような休符は小節線と小節線の間の中央に譜刻されるため、LilyPond
2592 がそれと衝突するかもしれない音符を突き止めるのは非常に困難です。なぜなら、現在@c
2593 の音符間それに音符-休符間の衝突対応は、同時に起こる音符と休符に対してのみ行わ@c
2594 れるからです。以下に、このタイプの衝突の例を挙げます:
2596 @lilypond[quote,verbatim,fragment,ragged-right, relative=1]
2597 << {c c c c} \\ {R1} >>
2600 ここでの最良の解決策は、複数小節に亘る休符を下へ移動させることです。なぜなら、@c
2601 その休符はボイス 2 の中にあるからです。@code{\voiceTwo} (すなわち、@c
2602 @code{<<@{...@} \\ @{...@}>>} 構造の 2 番目のボイス) のデフォルト状態では、@c
2603 @code{MultiMeasureRest} の @code{staff-position} は @code{-4} にセットされてい@c
2604 ます。そのため、そのプロパティを、例えば半譜表スペース 4 つ分押し下げるには、@c
2605 @code{-8} に変更する必要があります。
2607 @cindex MultiMeasureRest, example of overriding
2608 @cindex staff-position property, example
2610 @lilypond[quote,verbatim,fragment,ragged-right, relative=1]
2614 \override MultiMeasureRest #'staff-position = #-8
2619 これは、例えば @code{extra-offset} を使うよりも良い解決方法です。なぜなら、そ@c
2620 の休符の上に加線が自動的に挿入されるからです。
2622 @subheading extra-offset プロパティ
2624 @cindex positioning objects
2625 @cindex positioning grobs
2626 @cindex objects, positioning
2627 @cindex grobs, positioning
2629 @code{extra-offset} プロパティは、あるオブジェクトの水平方向と垂直方向の配置を@c
2632 以下の例では、2 番目の運指法記号が少し左に、そして 1.8 譜表スペース下に移動さ@c
2636 @cindex Fingering, example of overriding
2637 @cindex extra-offset property, example
2639 @lilypond[quote,fragment,relative=1,verbatim]
2642 \once \override Fingering
2643 #'extra-offset = #'(-0.3 . -1.8)
2648 @subheading positions プロパティ
2650 @cindex controlling tuplets, slurs, phrasing slurs, and beams manually
2651 @cindex manually controlling tuplets, slurs, phrasing slurs, and beams
2652 @cindex tuplet beams, controlling manually
2653 @cindex slurs, controlling manually
2654 @cindex phrasing slurs, controlling manually
2655 @cindex beams, controlling manually
2657 @code{positions} プロパティは連符、スラー、フレージング スラー、ビームの位置と@c
2658 傾きを手動で制御することを可能にします。ここで、装飾音符に付いたスラーを避けよ@c
2659 うとしているために醜いフレージング スラーを持つ例を挙げます。
2661 @lilypond[quote,verbatim,fragment,ragged-right,relative=1]
2662 r4 \acciaccatura e8\( d8 c ~c d c d\)
2666 フレージング スラーを音符の上へ移動させることで、より良い結果が得られます:
2668 @lilypond[quote,verbatim,fragment,ragged-right,relative=1]
2671 \acciaccatura e8\( d8 c ~c d c d\)
2675 しかし、何らかの理由でそうすることができない場合、それに代わる解決策は、@c
2676 @code{positions} プロパティを使ってフレージング スラーの左端を少し下げることで@c
2677 す。この方法でも見栄えの悪さを解決できます。
2679 @cindex PhrasingSlur, example of overriding
2680 @cindex positions property, example
2682 @lilypond[quote,verbatim,fragment,ragged-right,relative=1]
2684 \once \override PhrasingSlur #'positions = #'(-4 . -3)
2686 e8\( d8 c ~c d c d\)
2689 さらに、Chopin の 前奏曲 Op 28 No. 2 の左手の譜の開始部分から取った例を挙げま@c
2690 す。ビームが上部にある音符と衝突しています:
2692 @lilypond[quote,verbatim,fragment,ragged-right]
2695 << {b,8 ais, b, g,} \\ {e, g e, g} >>
2696 << {b,8 ais, b, g,} \\ {e, g e, g} >>
2701 これは、譜表の中央線から 2 譜表スペース上の位置にあるビームの両端を、例えば、3
2702 に手動で上げることによって解決することができます:
2704 @cindex Beam, example of overriding
2705 @cindex positions property, example
2707 @lilypond[quote,verbatim,fragment,ragged-right]
2711 \override Beam #'positions = #'(3 . 3)
2716 << {b,8 ais, b, g,} \\ {e, g e, g} >>
2721 オーバライドの効果は継続して 2 番目のブロックのボイス 1 にも適用されています@c
2722 が、ボイス 2 のビームにはまったく適用されていないということに注意してください。
2724 @subheading force-hshift プロパティ
2726 @c FIXME: formatting stuff (ie not important right now IMO)
2727 @c @a nchor Chopin finally corrected TODOgp
2729 今や、@ref{私はボイスを聴いている} の最後で挙げた Chopin の例にどのように修正を加@c
2730 えるべきかを知っています。この例は以下のような状態でした:
2732 @lilypond[quote,verbatim,fragment,ragged-right]
2733 \new Staff \relative c'' {
2736 { c2 aes4. bes8 } \\
2748 最初の和音の下の方にある 2 つの音符 (つまり、3 番目のボイス (ボイス 4) の音符)
2749 を上の方にある 2 つの音符の音符列からずらすべきではありません。これを修正する@c
2750 には、下の音符の @code{force-hshift} -- これは @code{NoteColumn} のプロパティ@c
2751 です -- を 0 にセットします。2 番目の和音の下の方の音符は、上の方の音符のすぐ@c
2752 右に置くのが最良です。そうするには、この音符の @code{force-hshift} を 0.5 に@c
2753 セットします -- つまり、上の方の音符の音符列から音符玉の幅の半分だけ右にずらし@c
2758 @cindex NoteColumn, example of overriding
2759 @cindex force-hshift property, example
2761 @lilypond[quote,verbatim,fragment,ragged-right]
2762 \new Staff \relative c'' {
2765 { c2 aes4. bes8 } \\
2768 \once \override NoteColumn #'force-hshift = #0 <ees c>2
2769 \once \override NoteColumn #'force-hshift = #0.5 des2
2778 @subsection 実際の音楽からの例
2779 @translationof Real music example
2781 調整についてのセクションを、望みの出力を作り出すためにいくつかの調整を必要とす@c
2782 るトリッキーな例を処理するときにとられるステップを示すことで締めくくります。こ@c
2783 の例は、表記についての普通ではない問題を解決するための表記リファレンスの使い方@c
2784 を示すために慎重に選ばれたものです。この例は一般的な譜刻プロセスを代表するもの@c
2785 ではありません。ですから、この例の複雑さでやる気を失わないでください!幸いなこ@c
2786 とに、このように複雑な問題は非常に稀です!
2788 この例は Chopin の Première Ballade, Op. 23 の第 6 - 9 小節からとりました。序@c
2789 盤の Lento から Moderato へと移調する部分です。まず最初に望んでいる出力挙げま@c
2790 すが、例があまりにも複雑になり過ぎないように強弱記号、運指法記号、ペダル記号は@c
2793 @c The following should appear as music without code
2794 @c This example should not be indexed
2795 @lilypond[quote,ragged-right]
2796 rhMusic = \relative c'' {
2799 \once \override Tie #'staff-position = #3.5
2803 \mergeDifferentlyHeadedOn
2804 \mergeDifferentlyDottedOn
2805 bes2.^\markup {\bold "Moderato"} r8
2807 {c,8[ d fis bes a] | }
2809 % Reposition the c2 to the right of the merged note
2810 {c,8~ \once \override NoteColumn #'force-hshift = #1.0
2811 % Move the c2 out of the main note column so the merge will work
2814 % Stem on the d2 must be down to permit merging
2815 {s8 \stemDown \once \override Stem #'transparent = ##t d2}
2819 \mergeDifferentlyHeadedOff
2820 \mergeDifferentlyDottedOff
2824 lhMusic = \relative c' {
2826 <d g, d>1)\arpeggio |
2833 \new Staff = "RH" <<
2837 \new Staff = "LH" <<
2846 まず、第 3 小節の右手パートには 4 つのボイスが必要であることに注目します。それ@c
2847 ぞれのボイスは、ビームでつながれた 5 つの 8 分音符、タイで結ばれた C、半音符の D
2848 -- これは 8 分音符の D とマージされています、付点 4 分音符の F シャープ -- こ@c
2849 れも同じ音高の 8 分音符とマージされています -- です。他の部分はすべて単一のボ@c
2850 イスなので、最も容易な方法は 4 つのボイスを必要になったときに一時的に導入する@c
2851 方法です。一時的に多声にする方法を忘れてしまったのならば、@ref{私はボイスを聴いている} を見てください。音符を 2 つの変数として入力し、譜表構造を @code{Score}
2852 ブロックの中でセットアップすることから始めて、それで LilyPond がデフォルトでど@c
2853 のような出力を作り出すのか見てみましょう:
2855 @lilypond[quote,verbatim,ragged-right]
2856 rhMusic = \relative c'' {
2861 % Start polyphonic section of four voices
2863 {c,8 d fis bes a | }
2874 lhMusic = \relative c' {
2883 \new Staff = "RH" <<
2887 \new Staff = "LH" <<
2896 すべての音符は間違っていません。しかしながら、見た目は満足とは程遠いものです。@c
2897 タイは移調する拍子記号と衝突していて、第 3 小節のビームの付け方は間違ってい@c
2898 て、音符はマージされておらず、いくつかの表記要素は欠けています。簡単なものから@c
2899 片付けていきましょう。ビームの付け方は手動でビームを挿入することで修正でき、左@c
2900 手パートのスラーと右手パートのフレージング スラーは簡単に追加できます -- なぜ@c
2901 なら、これらはすべてチュートリアルでカバーされているからです。これらの修正を加@c
2904 @lilypond[quote,verbatim,ragged-right]
2905 rhMusic = \relative c'' {
2910 % Start polyphonic section of four voices
2912 {c,8[ d fis bes a] | }
2923 lhMusic = \relative c' {
2932 \new Staff = "RH" <<
2936 \new Staff = "LH" <<
2945 第 1 小節は正しくなりました。第 2 小節にはアルペジオが含まれていて、2 重の小節@c
2946 線で終わります。この学習マニュアルではこれらのことは言及されてこなかったのに、@c
2947 どうやってやればいいのでしょうか?ここで、表記リファレンスに移行する必要があり@c
2948 ます。索引で @q{arpeggio} と @q{bar line} を探せばすぐに、アルペジオは
2949 @code{@bs{}arpeggio} を和音の後に付け加えることによって作り出され、2 重小節線は
2950 @code{@bs{}bar "||"} コマンドによって作り出されることがわかります。それは簡単@c
2951 にできます。次に、タイと拍子記号の衝突を修正する必要があります。これはタイを上@c
2952 に移動させる方法が最善です。オブジェクトの移動については以前に @ref{オブジェクトを移動させる} でカバーしました。そこでは、譜表との相対位置で配置されるオブジェクト@c
2953 は、そのオブジェクトの @code{staff-position} プロパティをオーバライドすること@c
2954 によって、移動させることができると述べられています。このプロパティは譜表スペー@c
2955 スの半分を単位として、譜表の中央線からの距離で指定されます。ですから、以下の以@c
2956 下のオーバライドをタイで結ばれる最初の音符の前に置けば、タイは中央線から 3.5
2957 半譜表スペースだけ上の位置に移動させられます:
2959 @code{\once \override Tie #'staff-position = #3.5}
2961 これで第 2 小節の修正も完了で、以下のようになります:
2963 @lilypond[quote,verbatim,ragged-right]
2964 rhMusic = \relative c'' {
2966 \once \override Tie #'staff-position = #3.5
2971 % Start polyphonic section of four voices
2973 {c,8[ d fis bes a] | }
2984 lhMusic = \relative c' {
2986 <d g, d>1)\arpeggio |
2993 \new Staff = "RH" <<
2997 \new Staff = "LH" <<
3006 第 3 小節 -- Moderato セクションの開始部分 -- に取り掛かります。チュートリアルで
3007 @code{@bs{}markup} コマンドを使ってボールド体のテキストを付け加える方法を示し@c
3008 ましたので、@q{Moderato} をボールド体で付け加えることは容易です。しかし、異な@c
3009 るボイスの中にある音符をマージするにはどうするのでしょうか?ここで、助けを求め@c
3010 て表記リファレンスに移行する必要があります。表記リファレンスで @qq{merge} を探@c
3011 せばすぐに、@ruser{Collision resolution} で玉や付点の付き方が異なる音符をマー@c
3012 ジするためのコマンドにたどり着きます。今回の例では、多声部セクションで両方のタ@c
3013 イプの音符をマージする (異なる玉を持つ音符のマージと、付点の付き方が異なる音符@c
3014 のマージ) 必要があるので、表記リファレンスで見つけた情報を使って、以下のコマン@c
3018 \mergeDifferentlyHeadedOn
3019 \mergeDifferentlyDottedOn
3023 を多声部セクションの開始点に置き、以下のコマンド:
3026 \mergeDifferentlyHeadedOff
3027 \mergeDifferentlyDottedOff
3031 をセクションの終了点に置きます。これで、例は以下のようになります:
3033 @lilypond[quote,verbatim,ragged-right]
3034 rhMusic = \relative c'' {
3036 \once \override Tie #'staff-position = #3.5
3040 bes2.^\markup {\bold "Moderato"} r8
3041 \mergeDifferentlyHeadedOn
3042 \mergeDifferentlyDottedOn
3043 % Start polyphonic section of four voices
3045 {c,8[ d fis bes a] | }
3053 \mergeDifferentlyHeadedOff
3054 \mergeDifferentlyDottedOff
3058 lhMusic = \relative c' {
3060 <d g, d>1)\arpeggio |
3067 \new Staff = "RH" <<
3071 \new Staff = "LH" <<
3080 オーバライドは 2 つの F シャープの音符をマージしましたが、2 つの D をマージし@c
3081 ませんでした。なぜマージしなかったのでしょうか?その答えは表記リファレンスの同@c
3082 じセクションにあります -- マージされる音符は反対向きのステムを持っていなくては@c
3083 ならず、同じ音符列に 3 つ目の音符がある場合は 2 つの音符をマージさせることはで@c
3084 きません。今回の例では、2 つの D は両方とも上向きのステムを持っていて、3 つ目@c
3085 の音符 -- C -- が存在します。我々は @code{@bs{}stemDown} を用いてステムの向き@c
3086 を変更する方法を知っていて、表記リファレンスも C を移動させる方法について述べ@c
3087 ています -- @code{@bs{}shift} コマンドの 1 つを用いてシフトを行います。しか@c
3088 し、どのシフトを行えばよいのでしょうか?C はシフト off のボイス 2 の中にあり、2
3089 つの D はボイス 1 とボイス 3 -- それぞれ、シフト off とシフト on -- の中にあり@c
3090 ます。ですから、C が 2 つの D と衝突するのを避けるために、@code{@bs{}shiftOnn}
3091 を用いて C を更にシフトさせる必要があります。これらの変更を加えると、以下のよ@c
3094 @cindex Tie, example of overriding
3095 @cindex staff-position property, example
3097 @lilypond[quote,verbatim,ragged-right]
3098 rhMusic = \relative c'' {
3100 \once \override Tie #'staff-position = #3.5
3104 bes2.^\markup {\bold "Moderato"} r8
3105 \mergeDifferentlyHeadedOn
3106 \mergeDifferentlyDottedOn
3107 % Start polyphonic section of four voices
3109 {c,8[ d fis bes a] | }
3111 % Move the c2 out of the main note column so the merge will work
3112 {c,8~ \shiftOnn c2 | }
3114 % Stem on the d2 must be down to permit merging
3115 {s8 \stemDown d2 | }
3119 \mergeDifferentlyHeadedOff
3120 \mergeDifferentlyDottedOff
3124 lhMusic = \relative c' {
3126 <d g, d>1)\arpeggio |
3133 \new Staff = "RH" <<
3137 \new Staff = "LH" <<
3146 もうちょっとです。残っている問題は 2 つだけです: マージされた D の下向きのステ@c
3147 ムはあるべきではなく、C は D の右側に配置した方が良いということです。以前に@c
3148 行った調整からこれらを行う方法を両方とも知っています: ステムを透明にして、@c
3149 @code{force-hshift} プロパティを用いて C を移動させます。ここで、最終結果を示@c
3152 @cindex NoteColumn, example of overriding
3153 @cindex force-hshift property, example
3154 @cindex Stem, example of overriding
3155 @cindex transparent property, example
3157 @lilypond[quote,verbatim,ragged-right]
3158 rhMusic = \relative c'' {
3161 \once \override Tie #'staff-position = #3.5
3165 bes2.^\markup {\bold "Moderato"} r8
3166 \mergeDifferentlyHeadedOn
3167 \mergeDifferentlyDottedOn
3169 {c,8[ d fis bes a] | }
3171 % Reposition the c2 to the right of the merged note
3172 {c,8~ \once \override NoteColumn #'force-hshift = #1.0
3173 % Move the c2 out of the main note column so the merge will work
3176 % Stem on the d2 must be down to permit merging
3177 {s8 \stemDown \once \override Stem #'transparent = ##t d2}
3181 \mergeDifferentlyHeadedOff
3182 \mergeDifferentlyDottedOff
3186 lhMusic = \relative c' {
3188 <d g, d>1)\arpeggio |
3195 \new Staff = "RH" <<
3199 \new Staff = "LH" <<
3211 @translationof Further tweaking
3219 * Scheme を用いた高度な調整::
3223 @subsection 調整のその他の使用方法
3224 @translationof Other uses for tweaks
3226 @cindex transparent property, use of
3227 @cindex objects, making invisible
3228 @cindex removing objects
3229 @cindex objects, removing
3230 @cindex hiding objects
3231 @cindex objects, hiding
3232 @cindex invisible objects
3233 @cindex objects, invisible
3234 @cindex tying notes across voices
3236 @subheading 異なるボイスの中にある音符をタイで結ぶ
3238 以下の例は異なるボイスの中にある音符をタイで結ぶ方法を示しています。通常、タイ@c
3239 で結べるのは同じボイスの中にある 2 つ音符だけです。2 つのボイスを使い、そのう@c
3240 ちの 1 つにタイで結んだ音符を置きます:
3242 @lilypond[quote,fragment,relative=2]
3243 << { b8~ b8\noBeam }
3249 そして、そのボイスの最初の上向きステムを消します。これで、タイはボイスをまた@c
3252 @cindex Stem, example of overriding
3253 @cindex transparent property, example
3255 @lilypond[quote,fragment,relative=2,verbatim]
3258 \once \override Stem #'transparent = ##t
3266 ステムは表示されなくなっただけなので、タイの長さが十分ではありません。ステムの
3267 @code{length} を @code{8} にセットすることでステムを伸ばすことができます:
3269 @lilypond[quote,fragment,relative=2,verbatim]
3272 \once \override Stem #'transparent = ##t
3273 \once \override Stem #'length = #8
3281 @subheading MIDI でフェルマータをシミュレートする
3283 @cindex stencil property, use of
3284 @cindex fermata, implementing in MIDI
3286 譜表外部オブジェクトを出力から削除しようとする場合、そのオブジェクトの
3287 @code{transparent} プロパティではなく @code{stencil} プロパティをオーバライド@c
3288 する方が通常は望ましいです。あるオブジェクトの @code{stencil} プロパティを
3289 @code{@hash{}f} にセットすると、そのオブジェクトは出力から完全に削除されます。@c
3290 このことは、削除されたオブジェクトがそのオブジェクトとの相対位置で配置される他@c
3291 のオブジェクトの配置にまったく影響を及ぼさないということを意味します。
3293 例えば、MIDI 出力でフェルマータをシミュレートするためにメトロノーム設定を変更@c
3294 したいとします。その場合、メトロノーム記号を出力に表示させたくありません。そし@c
3295 て、それが 2 つのシステム (小節とその中にある表記) 間のスペースと、譜表上にあ@c
3296 る隣接する注釈の位置に影響を与えることを望みません。そのため、そのメトロノーム@c
3297 記号の @code{stencil} プロパティを @code{@hash{}f} にセットする方法が最良で@c
3298 す。ここで、2 つの手法の結果を示します:
3300 @cindex MetronomeMark, example of overriding
3301 @cindex transparent property, example
3303 @lilypond[quote,verbatim,ragged-right]
3306 % Visible tempo marking
3309 \once \override Score.MetronomeMark #'transparent = ##t
3310 % Invisible tempo marking to lengthen fermata in MIDI
3313 % New tempo for next section
3322 @cindex MetronomeMark, example of overriding
3323 @cindex stencil property, example
3325 @lilypond[quote,verbatim,ragged-right]
3328 % Visible tempo marking
3331 \once \override Score.MetronomeMark #'stencil = ##f
3332 % Invisible tempo marking to lengthen fermata in MIDI
3335 % New tempo for next section
3345 両方の手段とも、フェルマータ部分の演奏時間を伸ばすメトロノーム記号を出力から削@c
3346 除していて、両方とも MIDI の演奏に必要な効果を与えています。しかし、1 番目の例@c
3347 の透明なメトロノーム記号がそれに続く拍子指示を上に押し上げているのに対して、2
3348 番目のメトロノーム記号 (ステンシルが削除されたもの) は押し上げていません。
3352 @subsection 調整のために変数を使用する
3353 @translationof Using variables for tweaks
3355 @cindex variables, using for tweaks
3356 @cindex using variables for tweaks
3357 @cindex tweaks, using variables for
3359 オーバライド コマンドはしばしば長く、入力するのが大変なものになります。そし@c
3360 て、それらは完全に正しく記述されなければなりません。同じオーバライドが何度も使@c
3361 用される場合、それらを保持する変数を定義すると非常に役に立ちます。
3363 歌詞の中のある特定の単語をボールド イタリック体で譜刻することによって、それら@c
3365 歌詞の中では、@code{@bs{}italic} と @code{@bs{}bold} は (書式を) 変更したい単@c
3366 語や文と一緒に @code{@bs{}markup} ブロックの中に入れた場合にのみ機能しますが、@c
3368 埋め込む必要のある単語自体が、2 つのコマンドを簡単な変数を用いて使うことを妨げ@c
3369 ます。代替手段として、@code{@bs{}override} コマンドと @code{@bs{}revert} コマ@c
3373 @code{\override Lyrics . LyricText #'font-shape = #'italic}
3374 @code{\override Lyrics . LyricText #'font-series = #'bold}
3376 @code{\revert Lyrics . LyricText #'font-shape}
3377 @code{\revert Lyrics . LyricText #'font-series}
3380 これらも、強調する必要のある単語がたくさんある場合、入力するのが非常に大変で@c
3381 す。しかしながら、これらは 2 つの変数として定義することが@emph{でき}、それらの@c
3382 変数で単語を囲むことによって使ってその単語を強調することが@emph{できます}。こ@c
3383 れらのオーバライドに変数を用いることのもう 1 つの利点は、ドットの両側にスペー@c
3384 スを置く必要が無いことです。なぜなら、これらのオーバライドは
3385 @code{@bs{}lyricmode} の中で直接解釈されるわけではないからです。ここで変数を用@c
3386 いる例を挙げますが、実際には早く打ち込めるようにもっと短い変数名を使用します:
3388 @cindex LyricText, example of overriding
3389 @cindex font-shape property, example
3390 @cindex font-series property, example
3392 @lilypond[quote,verbatim]
3394 \override Lyrics.LyricText #'font-shape = #'italic
3395 \override Lyrics.LyricText #'font-series = #'bold
3398 \revert Lyrics.LyricText #'font-shape
3399 \revert Lyrics.LyricText #'font-series
3402 global = { \time 4/4 \partial 4 \key c \major}
3403 SopranoMusic = \relative c' { c4 | e4. e8 g4 g | a a g }
3404 AltoMusic = \relative c' { c4 | c4. c8 e4 e | f f e }
3405 TenorMusic = \relative c { e4 | g4. g8 c4. b8 | a8 b c d e4 }
3406 BassMusic = \relative c { c4 | c4. c8 c4 c | f8 g a b c4 }
3407 VerseOne = \lyrics { E -- | ter -- nal \emphasize Fa -- ther, \normal | strong to save, }
3408 VerseTwo = \lyricmode { O | \emphasize Christ, \normal whose voice the | wa -- ters heard, }
3409 VerseThree = \lyricmode { O | \emphasize Ho -- ly Spi -- rit, \normal | who didst brood }
3410 VerseFour = \lyricmode { O | \emphasize Tri -- ni -- ty \normal of | love and pow'r }
3416 \new Voice = "Soprano" { \voiceOne \global \SopranoMusic }
3417 \new Voice = "Alto" { \voiceTwo \AltoMusic }
3418 \new Lyrics \lyricsto "Soprano" { \VerseOne }
3419 \new Lyrics \lyricsto "Soprano" { \VerseTwo }
3420 \new Lyrics \lyricsto "Soprano" { \VerseThree }
3421 \new Lyrics \lyricsto "Soprano" { \VerseFour }
3425 \new Voice = "Tenor" { \voiceOne \TenorMusic }
3426 \new Voice = "Bass" { \voiceTwo \BassMusic }
3435 @translationof Other sources of information
3437 内部リファレンスは LilyPond についての多くの情報を持っていますが、LilyPond の@c
3438 内部ファイルを調べることによってさらに多くの情報を収集することができます。内部@c
3439 ファイルを探究するには、まずあなたの使っているシステム特有のディレクトリを見つ@c
3440 け出す必要があります。このディレクトリの場所は、(a) あなたが lilypond.org から@c
3441 コンパイル済みのバイナリをダウンロードすることによって LilyPond を手に入れたの@c
3442 か、それとも、パッケージ マネージャから LilyPond をインストールした (つまり、@c
3443 Linux と一緒に配布されたか、fink や cygwin でインストールされた) のか、(b)
3444 LilyPond はどの OS 上で使用されているのか、に依存します:
3446 @strong{lilypond.org からダウンロードした}
3451 @file{@var{INSTALLDIR}/lilypond/usr/share/lilypond/current/} に進んでください
3455 @file{@var{INSTALLDIR}/LilyPond.app/Contents/Resources/share/lilypond/current/}
3456 に進んでください。ターミナルからこのディレクトリへ @code{cd} で移動するか、@c
3457 LilyPond アプリケーション上でコントロール クリックして @q{Show Package Contents}
3462 @file{@var{INSTALLDIR}/LilyPond/usr/share/lilypond/current/} に進んでくださ@c
3463 い。Windows Explorer を使います。
3468 @strong{パッケージ マネージャからインストールした、あるいは、ソースからコンパ@c
3471 @file{@var{PREFIX}/share/lilypond/@var{X.Y.Z}/} に進んでください。@var{PREFIX}
3472 はパッケージ マネージャか @code{configure} スクリプトによってセットされるもの@c
3473 であり、@var{X.Y.Z} は LilyPond のバージョン番号です。
3477 このディレクトリの中に 2 つの興味深いサブディレクトリがあります:
3480 @item @file{ly/} - LilyPond フォーマットに関するファイルを保持しています
3481 @item @file{scm/} -Scheme フォーマットに関するファイルを保持しています
3484 @file{ly/} の中にあるファイルから見ていきましょう。@file{ly/property-init.ly}
3485 をテキスト エディタで開いてください。@c
3486 エディタはあなたが普段 @code{.ly} ファイルを編集するために使っているもので結構です。@c
3487 このファイルは標準の LilyPond 定義済みコマンド -- @code{@bs{}stemUp} や
3488 @code{@bs{}slurDotted} など -- のすべての定義を保持しています。1 つまたは複数の
3489 @code{@bs{}override} コマンドを保持している変数の定義以外のものはないというこ@c
3490 とがわかるでしょう。例えば、@code{@bs{}tieDotted} は以下のように定義されていま@c
3495 \override Tie #'dash-period = #0.75
3496 \override Tie #'dash-fraction = #0.1
3500 あなたがこれらのデフォルト値を好まない場合、これらの定義済みコマンドを容易に再@c
3501 定義することができます -- 他の変数と同様に、入力ファイルの先頭で定義します。
3503 以下のファイルは @file{ly/} で見つかる有用なファイルです:
3505 @multitable @columnfractions .4 .6
3508 @item @file{ly/engraver-init.ly}
3509 @tab エングラーバ コンテキストの定義
3510 @item @file{ly/paper-defaults-init.ly}
3512 @item @file{ly/performer-init.ly}
3513 @tab パフォーマ コンテキストの定義
3514 @item @file{ly/property-init.ly}
3515 @tab すべての共通定義済みコマンドの定義
3516 @item @file{ly/spanner-init.ly}
3517 @tab スパナ関係の定義済みコマンドの定義
3520 他の設定 (マークアップ コマンドの定義など) は @code{.scm} (Scheme) ファイルと@c
3521 して保存されています。Scheme プログラミング言語は、LilyPond 内部処理へのプログ@c
3522 ラム可能なインタフェイスを提供するために使用されます。これらのファイルについて@c
3523 の詳しい説明は、Scheme 言語についての知識が必要となるため、このマニュアルの範@c
3524 囲外です。Scheme 言語とこれらのファイルを理解するには、十分な知識や時間が必要@c
3525 であるということを知っておくべきです (@ref{Scheme tutorial} を参照してくださ@c
3528 あなたがこの知識を持っているのなら、興味を持つかもしれない Scheme ファイルは以@c
3531 @multitable @columnfractions .4 .6
3534 @item @file{scm/auto-beam.scm}
3535 @tab サブ ビームのデフォルト (訳者: 8 分音符にはビームだけが使用され、16 分@c
3536 音符やそれよりも短い音符にはビームとサブ ビームが使われるのだと思います)
3537 @item @file{scm/define-grobs.scm}
3538 @tab Grob (グラフィカル オブジェクト) プロパティのデフォルト設定
3539 @item @file{scm/define-markup-commands.scm}
3540 @tab すべてのマークアップ コマンドの仕様
3541 @item @file{scm/midi.scm}
3542 @tab MIDI 出力のデフォルト設定
3543 @item @file{scm/output-lib.scm}
3544 @tab フレット、色、臨時記号、小節線などの見た目に影響を与える設定
3545 @item @file{scm/parser-clef.scm}
3547 @item @file{scm/script.scm}
3548 @tab アーティキュレーションのデフォルト設定
3552 @node 処理に時間のかかる調整を避ける
3553 @subsection 処理に時間のかかる調整を避ける
3554 @translationof Avoiding tweaks with slower processing
3556 LilyPond は入力ファイルの処理中に追加のチェックを行うことができます。これらの@c
3557 チェックは実行時間を伸ばしますが、適切な結果を得るのに必要とされる手動調整を減@c
3558 らすかもしれません。テキストや歌詞の一部が余白まではみ出す場合、これらのチェッ@c
3559 クは楽譜のその行を縮めてマージンの内側に収まるようにします。
3561 すべての状況下で有効にするには、以下のように、音楽の中の行ではなく @code{Score}
3562 の @code{@bs{}with} ブロックの中にこれらのチェックのオーバライドを置くことに@c
3563 よって、動作可能な状態にする必要があります:
3567 % Makes sure text scripts and lyrics are within the paper margins
3568 \override PaperColumn #'keep-inside-line = ##t
3569 \override NonMusicalPaperColumn #'keep-inside-line = ##t
3576 @node Scheme を用いた高度な調整
3577 @subsection Scheme を用いた高度な調整
3578 @translationof Advanced tweaks with Scheme
3580 @code{@bs{}override} と @code{@bs{}tweak} コマンドを用いることで多くのことが可@c
3581 能になりますが、LilyPond のアクションを変更するもっと強力な手段が LilyPond 内@c
3582 部処理へのプログラム可能なインタフェイスを通じて利用可能です。Scheme プログラ@c
3583 ミング言語で書かれたコードは LilyPond の内部処理に直接組み込むことができます。@c
3584 もちろん、それを行うには Scheme プログラミングについての基礎知識が必要であり、@c
3585 その手引きが @ref{Scheme tutorial} で提供されています。
3587 多くの実現可能なことの 1 つの例としては、プロパティに定数をセットする代わりに
3588 Scheme プロシージャをセットすることができます。このプロパティが LilyPond に@c
3589 よってアクセスされたときに、このプロシージャが呼び出されます。このプロシージャ@c
3590 が呼び出されたときに、このプロシージャによって決定された値を動的にそのプロパ@c
3591 ティにセットすることができます。以下の例では、音符玉にその音符の譜表上での位置@c
3594 @cindex x11-color function, example of using
3595 @cindex NoteHead, example of overriding
3596 @cindex color property, setting to Scheme procedure
3598 @lilypond[quote,verbatim,ragged-right]
3599 #(define (color-notehead grob)
3600 "Color the notehead according to its position on the staff."
3601 (let ((mod-position (modulo (ly:grob-property grob 'staff-position) 7)))
3603 ;; Return rainbow colors
3604 ((1) (x11-color 'red )) ; for C
3605 ((2) (x11-color 'orange )) ; for D
3606 ((3) (x11-color 'yellow )) ; for E
3607 ((4) (x11-color 'green )) ; for F
3608 ((5) (x11-color 'blue )) ; for G
3609 ((6) (x11-color 'purple )) ; for A
3610 ((0) (x11-color 'violet )) ; for B
3616 % Arrange to obtain color from color-notehead procedure
3617 \override NoteHead #'color = #color-notehead
3624 Some -- where o -- ver the Rain -- bow, way up high,
3628 @ref{Tweaking with Scheme} に、これらのプログラム可能なインタフェイスの使い方@c