1 @c -*- coding: utf-8; mode: texinfo; documentlanguage: ja -*-
4 Translation of GIT committish: c1b0482f63f881bd3f67845e5f76a3e04675ef2a
6 When revising a translation, copy the HEAD committish of the
7 version that you are working on. For details, see the Contributors'
8 Guide, node Updating translation committishes..
13 @c Translators: Yoshiki Sawada
14 @c Translation status: post-GDP
19 @translationof Tweaking output
21 この章では出力を変更する方法について議論します。@c
22 LilyPond は本当にさまざまな設定が可能です。@c
23 もしかすると出力のすべての部分が変更されるかもしれません。
36 @translationof Tweaking basics
48 @translationof Introduction to tweaks
50 @q{調整} は入力ファイルの解釈中にとられるアクションを変更し、@c
51 譜刻される楽譜の見た目を変更するためにユーザが利用可能なさまざまな手段を指す
53 いくつかの調整はとても簡単に使うことができます。@c
55 しかしながら、調整のために利用可能な手段を組み合わせることによって、@c
56 ほとんどいかなる望みの見た目を持った楽譜でも譜刻することが可能になります。
58 このセクションでは、調整を理解するのに必要な基礎となるコンセプトを@c
60 その後、コピーするだけで効果が得られる作成準備が完了している@c
61 さまざまなコマンドについての情報を提供し、@c
62 同時に、あなたがあなた自身の調整を開発する方法を学べるように@c
63 それらのコマンドがどのように構築されるのかを示します。
65 この章を読み始める前に、あなたは @ref{コンテキストとエングラーバ} を@c
67 なぜなら、コンテキスト、エングラーバとそれらの中に含まれるプロパティは@c
68 調整について理解し、調整を構成するための基礎だからです。
72 @subsection オブジェクトとインタフェイス
73 @translationof Objects and interfaces
75 @cindex object (オブジェクト)
76 @cindex grob (グラフィカル オブジェクト)
78 @cindex interface (インタフェイス)
79 @cindex properties, object (オブジェクト プロパティ)
80 @cindex object properties (オブジェクト プロパティ)
81 @cindex layout object (レイアウト プロパティ)
82 @cindex object, layout (レイアウト プロパティ)
84 調整には LilyPond プログラムの内部オペレーションと構造体への変更も含まれます。@c
85 そのため、我々はまずそれらの内部オペレーションと構造体を記述するために@c
86 使用されるいくつかの用語を導入しなければなりません。
88 @q{オブジェクト} という用語は入力ファイルを処理している最中に LilyPond に@c
89 よってビルドされる多くの内部構造体を参照するために使われる汎用的な用語です。@c
90 LilyPond が @code{\new Staff} のようなコマンドに遭遇した場合、@c
91 タイプ @code{Staff} の新しいオブジェクトを構築します。@c
92 その @code{Staff} オブジェクトは、その譜のコンテキスト内部で機能するために@c
93 割り当てられているエングラーバの詳細とともに、その譜に関連付けられている@c
94 すべてのプロパティ -- 例えば、その譜の名前、調号 -- を保持します。@c
95 同様に、@code{Voice} オブジェクト、@code{Score} オブジェクト、@c
96 @code{Lyrics} オブジェクトなどの他のすべてのコンテキストのプロパティを@c
97 保持するためのオブジェクトが存在し、さらに、小節線、符頭、タイ、強弱記号などの@c
98 すべての記譜要素を表すためのオブジェクトも存在します。@c
99 各オブジェクトはそれ自体のプロパティ値のセットを持ちます。
101 いくつかのタイプのオブジェクトには特別な名前が与えられています。@c
102 符頭、符幹、スラー、タイ、運指記号、音部記号などの譜刻される出力上の記譜要素を@c
103 表すオブジェクトは @q{レイアウト オブジェクト} と呼ばれ、@c
104 しばしば @q{グラフィカル オブジェクト}
105 あるいは短くして @q{グロッブ (Grob: GRaphical OBject)} と呼ばれます。@c
106 これらのオブジェクトも上記の汎用的な観点から見るとオブジェクトであり、@c
107 それゆえ、それらもまたそれらのオブジェクトに関連付けされたプロパティ --
108 そのオブジェクトの位置、サイズ、色など -- を持ちます。
110 いくつかのレイアウト オブジェクトも特別です。@c
111 フレージング スラー、クレッシェンド、オッターバ記号、@c
112 他の多くのグラフィカル オブジェクトが置かれる場所は一点ではありません
113 -- それらは開始点、終了点、そしておそらくそれらの形に関係する@c
115 これらのオブジェクトのように形が伸長されるオブジェクトは
116 @q{スパナ (Spanners)} と呼ばれます。
118 @q{インタフェイス} とは何なのかという説明が残っています。@c
119 多くのオブジェクト -- たとえそれらが非常に異なっていたとしても --
120 は同じ方法で処理される必要がある共通特徴を共有します。@c
121 例えば、すべてのグラフィカル オブジェクトは色、サイズ、位置などを持ち、@c
122 これらのプロパティはすべて LilyPond が入力ファイルを構文解釈する最中に@c
124 これらの内部オペレーションを簡潔にするために、これらの共通アクションと@c
126 @code{grob-interface} と呼ばれるオブジェクトにまとめられています。@c
127 これと同じような共有プロパティのグループ化が他にも多くあり、@c
128 それぞれに対して最後に @code{interface} が付く名前が与えられています。@c
129 そのようなインタフェイスの総数は 100 を越えます。@c
130 我々は後でなぜこれがユーザにとって利益となり、役に立つのかを見ていきます。
132 これらは、我々がこの章で使用するオブジェクトと関係する主要な用語です。
135 @node オブジェクトとプロパティの命名規則
136 @subsection オブジェクトとプロパティの命名規則
137 @translationof Naming conventions of objects and properties
139 @cindex naming conventions for objects (オブジェクトの命名規則)
140 @cindex naming conventions for properties (プロパティの命名規則)
141 @cindex objects, naming conventions (オブジェクトの命名規則)
142 @cindex properties, naming conventions (プロパティの命名規則)
144 我々は以前にも @ref{コンテキストとエングラーバ} で@c
145 いくつかのオブジェクト命名規則を見てきました。@c
146 ここで参照のために、最も一般的なオブジェクトとプロパティをリストアップし、@c
147 それに加えてそれらの命名規則と実際の名前の例を挙げます。@c
148 何らかの大文字のアルファベットを表すために @q{A} を使用し、@c
149 いくつかの小文字のアルファベットを表すために @q{aaa} を使用しています。@c
150 他の文字は実際の命名でもそのまま使用されます。
152 @multitable @columnfractions .33 .33 .33
153 @headitem オブジェクト/プロパティのタイプ
157 @tab Aaaa や AaaaAaaaAaaa
158 @tab Staff, GrandStaff
160 @tab Aaaa や AaaaAaaaAaaa
163 @tab Aaaa_aaa_engraver
164 @tab Clef_engraver, Note_heads_engraver
166 @tab aaa-aaa-interface
167 @tab grob-interface, break-aligned-interface
169 @tab aaa や aaaAaaaAaaa
170 @tab alignAboveContext, skipBars
171 @item レイアウト オブジェクト プロパティ
172 @tab aaa や aaa-aaa-aaa
173 @tab direction, beam-thickness
176 これから見ていくのですが、タイプが異なるオブジェクトのプロパティは@c
178 そのため、名前からオブジェクトやプロパティのタイプを識別できるように@c
184 @translationof Tweaking methods
186 @cindex tweaking methods (調性手段)
192 * \overrideProperty コマンド::
197 @unnumberedsubsubsec @code{\override} コマンド
198 @translationof The \override command
200 @cindex override command (override コマンド)
201 @cindex override syntax (override 構文)
205 我々はすでに @ref{コンテキスト プロパティを変更する} と
206 @ref{エングラーバを追加 / 削除する} で @strong{コンテキスト} のプロパティを@c
207 変更したり、@strong{エングラーバ} を追加/削除したりするために使用するコマンド
208 @code{\set} と @code{\with} を見てきました。@c
209 ここでは更に重要ないくつかのコマンドについて見ていきます。
211 @strong{レイアウト オブジェクト} のプロパティを変更するためのコマンドは
212 @code{\override} です。@c
213 このコマンドは LilyPond の奥深くにある内部プロパティを@c
215 これまで見てきたコマンドのように単純な構文ではありません。@c
216 どのコンテキストの中にあるどのオブジェクトのどのプロパティを@c
217 変更しなければならないのか、そこにセットする新しい値を何にするのかを@c
219 どのようにこれを行うのかを見ていきましょう。
221 このコマンドの一般的な構文は以下のようなものです:
224 \override @var{Context}.@var{LayoutObject}.@var{layout-property} = #@var{value}
228 これは @var{Context} コンテキストのメンバである
229 @var{LayoutObject} という名前のレイアウトの
230 @var{layout-property} という名前のプロパティに値 @var{value} をセットします。
232 必要とされているコンテキストが明白であり、それが最下位レベルのコンテキストである
233 -- つまり、@code{Voice}, @code{ChordNames} や @code{Lyrics} である
234 -- 場合、その @var{Context} は省略可能であり (そして通常は省略されます)、@c
236 後ほど、コンテキストを指定しなければならない場合について見ていきます。
238 これから後のセクションでは広範囲に亘るプロパティとそれらの値を扱います
239 -- @ref{Types of properties} を参照してください。@c
240 しかしながら、このセクションではそれらのフォーマットとコマンドの使い方を示す@c
241 ために、容易に理解できる簡単なプロパティと値をいくつか使用してみるだけです。
243 LilyPond の基本的な表記は音符、演奏時間、それにマークアップなどの音楽要素@c
245 数字、文字列、それにリストなどのもっと基本的な表記は @q{Scheme モード}
246 で処理されます -- 表記の先頭に @samp{#} を記述することでこのモードが@c
248 これらの表記は LilyPond の音楽モードでも有効な表現である場合もありますが、@c
249 このマニュアルでは一貫性を保つために常に @samp{#} を付けて記述します。@c
250 Scheme モードについての更なる情報は @rextend{LilyPond Scheme syntax}
253 @code{\override} は調整で用いられる最も一般的なコマンドであり、@c
254 本章の残りの大半を使ってこのコマンドの使用例を示します。@c
255 まずは符頭の色を変更する簡単な例を挙げます:
257 @cindex color property, example (color プロパティの例)
258 @cindex NoteHead, example of overriding (NoteHead をオーバライドする例)
260 @lilypond[quote,ragged-right,verbatim]
263 \override NoteHead.color = #red
265 \override NoteHead.color = #green
272 @unnumberedsubsubsec @code{\revert} コマンド
273 @translationof The \revert command
275 @cindex revert command (revert コマンド)
279 一旦オーバライドされると、そのプロパティは再度オーバライドされるか
280 @code{\revert} コマンドに遭遇するまで新しい値のままでいます。@c
281 @code{\revert} コマンドは以下の構文を持ち、@c
282 プロパティの値をオリジナルのデフォルト値に戻します。@c
283 何度か @code{\override} コマンドが発行されている場合は、@c
284 前の値に戻すわけではないということに注意してください。
288 \revert @var{Context}.@var{LayoutObject}.@var{layout-property}
291 繰り返しますが、@code{\override} コマンドでの @var{Context} と同様に、@c
292 多くの場合で @var{Context} を記述する必要はありません。@c
293 以下の例の多くで、@var{Context} は省略されます。@c
294 ここでは、最後の 2 つの音符の符頭の色をデフォルトに戻します:
296 @cindex color property, example (color プロパティの例)
297 @cindex NoteHead, example of overriding (NoteHead をオーバライドする例)
299 @lilypond[quote,ragged-right,verbatim]
302 \override NoteHead.color = #red
304 \override NoteHead.color = #green
306 \revert NoteHead.color
313 @unnumberedsubsubsec The @code{\once} prefix
314 @translationof The \once prefix
318 @code{\override} コマンドと @code{\set} コマンドには両方とも@c
319 接頭辞 @code{\once} が付く可能性があります。@c
320 これはその後に続く @code{\override} や @code{\set} コマンドを@c
321 その場一回限り有効にし、その後にそのプロパティの値をデフォルト値に戻します。@c
322 上と同じ例を使って、以下のように 1 つだけの音符の色を変更することができます:
324 @cindex color property, example (color プロパティの例)
325 @cindex NoteHead, example of overriding (NoteHead をオーバライドする例)
327 @lilypond[quote,verbatim]
330 \override NoteHead.color = #red
332 \once \override NoteHead.color = #green
334 \revert NoteHead.color
339 @code{\once} 接頭辞をさまざまな定義済みコマンドの前に置くことで、@c
340 コマンドの効果を次の音楽タイミングに限定することもできます:
342 @lilypond[quote,verbatim,relative=1]
351 しかしながら、@code{\...Neutral}, @code{\...Off}, それに @code{\un...}
352 の形式の定義済みコマンドの前に @code{\once} を置いても効果はありません。@c
353 なぜなら、それらのコマンドは内部的に @code{\override} ではなく、@code{\revert}
357 @node \overrideProperty コマンド
358 @unnumberedsubsubsec @code{\overrideProperty} コマンド
359 @translationof The \overrideProperty command
361 @cindex overrideProperty command (overrideProperty コマンド)
363 @funindex \overrideProperty
365 オーバライド コマンドには @code{\overrideProperty} という@c
366 もう 1 つのフォーマットがあり、時々必要となります。@c
367 完璧を期すためにここでこれに言及しましたが、@c
368 詳細は @rextend{Difficult tweaks} を参照してください。
369 @c Maybe explain in a later iteration -td
372 @unnumberedsubsubsec @code{\tweak} コマンド
373 @translationof The \tweak command
375 @cindex tweak command (tweak コマンド)
379 利用可能な最後の調整コマンドは @code{\tweak} です。@c
380 これは同じ音楽タイミングで発生するいくつかのオブジェクトのうち、@c
381 1 つのオブジェクトだけを選択してプロパティを変更したい場合に@c
383 -- 例えば、和音の中にある 1 つの音符のプロパティを変更する場合です。@c
384 @code{\override} コマンドを使用すると和音の中にあるすべての音符に@c
386 一方、@code{\tweak} は入力ストリームの中でその @code{\tweak} の@c
387 すぐ後にある要素 1 つだけに影響を与えます。
390 C メジャー コードの中にある真ん中の音符 (ミドル E) の符頭のサイズを@c
392 まず最初に、@code{\once \override} だとどうなるか見てみましょう:
394 @cindex font-size property, example (font-size プロパティの例)
395 @cindex NoteHead, example of overriding (NoteHead をオーバライドする例)
397 @lilypond[quote,ragged-right,verbatim]
400 \once \override NoteHead.font-size = #-3
406 このオーバライドは和音の中にある@emph{すべて}の符頭に影響を与えています。@c
407 これは和音の中にあるすべての音符が同じ @emph{タイミング} で起こるためであり、@c
408 @code{\once} のアクションは @code{\override} と同様に同じタイミングで起こる、@c
409 指定されたタイプすべてのレイアウト オブジェクトへのオーバライドに適用されます。
411 @code{\tweak} コマンドはこれとは異なるやり方で処理されます。@c
412 これは入力ストリームの中ですぐ後に続く要素にだけ作用します。@c
413 最もシンプルな形式の @code{\tweak} コマンドは、@c
414 コマンドの直後にある要素から直接作成されるオブジェクト
415 -- 本質的に符頭とアーティキュレーション -- にだけ効果を持ちます。@c
417 それでは例に戻り、この方法で和音の真ん中の音符のサイズを変更します:
419 @cindex font-size property, example (font-size プロパティの例)
420 @cindex @code{\tweak}, example (@code{\tweak} の例)
422 @lilypond[quote,ragged-right,verbatim]
425 <c \tweak font-size #-3 e g>4
429 @code{\tweak} の構文は @code{\override} コマンドの構文とは@c
431 コンテキストを指定しません -- 実際、指定するとエラーになります。@c
432 コンテキストとレイアウト オブジェクトはどちらも入力ストリームの中で@c
434 さらに、イコール記号を使うべきではないということに注意してください。@c
435 そのため、簡単な形式の @code{\tweak} コマンドは以下のようになります:
438 \tweak @var{layout-property} #@var{value}
441 さらに、@code{\tweak} コマンドは一連のアーティキュレーションの中にある@c
442 ただ 1 つのアーティキュレーションを変更されるためにも使用できます。@c
445 @cindex color property, example (color プロパティの例)
446 @cindex @code{\tweak}, example (@code{\tweak} の例)
448 @lilypond[quote,fragment,ragged-right,verbatim]
450 -\tweak color #red ^"Red"
451 -\tweak color #green _"Green"
455 @code{\tweak} コマンドはアーティキュレーション マークの前に配置する@c
457 なぜなら、調整された表記がアーティキュレーションとして適用される必要がある@c
459 複数の向き記号 (@code{^} または @code{_}) で上書きした場合、@c
460 最後に適用される左端の記号が勝ち残ります。
462 @cindex @code{\tweak}, Accidental (臨時記号に @code{\tweak} を用いる)
463 @cindex @code{\tweak}, specific layout object (レイアウト オブジェクトを指定して @code{\tweak} を用いる)
465 符幹や臨時記号などのオブジェクトは後になってから作成されるもので、@c
466 @code{\tweak} コマンドの後に続くイベントから直接作成されません。@c
467 そのような直接作成されないオブジェクトの場合、明示的にレイアウト
468 オブジェクト名を指定して LilyPond がそれらのオブジェクトの起源を@c
469 追跡できるようにすることで、@code{\tweak} で調整することができます:
471 @lilypond[quote,fragment,ragged-right,verbatim]
472 <\tweak Accidental.color #red cis''4
473 \tweak Accidental.color #green es''
477 この長い形式の @code{\tweak} コマンドは以下のように記述することができます:
480 \tweak @var{layout-object}.@var{layout-property} @var{value}
483 @cindex tuplets, nested (ネストされた連符)
484 @cindex triplets, nested (ネストされた 3 連符)
485 @cindex bracket, tuplet (連符の囲み)
486 @cindex bracket, triplet (3 連符の囲み)
487 @cindex tuplet bracket (連符の囲み)
488 @cindex triplet bracket (3 連符の囲み)
490 @funindex TupletBracket
492 さらに、@code{\tweak} コマンドは、同時に起こるネストされた@c
493 連符記号のセットのうちの 1 つの見た目を変更するためにも使用されます。@c
494 以下の例では、長い連符記号と 3 つの短い連符記号のうちの最初の連符記号が@c
496 そのため、@code{\override} コマンドだと両方の連符記号に@c
498 この例では、@code{\tweak} は 2 つの連符記号を区別するために@c
500 最初の @code{\tweak} コマンドは長い連符記号を音符の上に置くことを@c
501 指定していて、2 番目の @code{\tweak} コマンドは最初の短い連符記号の数字を@c
504 @cindex @code{\tweak}, example (@code{\tweak} の例)
505 @cindex direction property, example (direction プロパティの例)
506 @cindex color property, example (color プロパティの例)
508 @lilypond[quote,ragged-right,verbatim]
513 \tuplet 3/2 { c8[ c c] }
514 \tuplet 3/2 { c8[ c c] }
515 \tuplet 3/2 { c8[ c c] }
520 ネストされた連符が同時に起こらない場合、それらの見た目は @code{\override}
521 コマンドを用いた通常通りの方法で変更されるかもしれません:
523 @cindex text property, example (text プロパティの例)
524 @cindex tuplet-number function, example (tuplet-number 関数の例)
525 @cindex transparent property, example (transparent プロパティの例)
526 @cindex TupletNumber, example of overriding (TupletNumber をオーバライドする例)
528 @lilypond[quote,ragged-right,verbatim]
530 \tuplet 3/2 { c'8[ c c] }
531 \once \override TupletNumber.text = #tuplet-number::calc-fraction-text
535 \once \override TupletNumber.transparent = ##t
536 \tuplet 3/2 { c8[ c c] }
537 \tuplet 3/2 { c8[ c c] }
545 @ruser{The tweak command}
549 @section 内部リファレンス マニュアル
550 @translationof The Internals Reference manual
552 @cindex Internals Reference (内部リファレンス)
555 * レイアウト オブジェクトのプロパティ::
556 * インタフェイスの中で見つかるプロパティ::
560 @node レイアウト オブジェクトのプロパティ
561 @subsection レイアウト オブジェクトのプロパティ
562 @translationof Properties of layout objects
564 @cindex properties of layout objects (レイアウト オブジェクトのプロパティ)
565 @cindex properties of grobs (グラフィカル オブジェクトのプロパティ)
566 @cindex grobs, properties of (グラフィカル オブジェクトのプロパティ)
567 @cindex layout objects, properties of (レイアウト オブジェクトのプロパティ)
568 @cindex Internals Reference manual (内部リファレンス マニュアル)
571 そのスラーが細すぎるためにもう少し太くしたいと思ったとします。@c
573 以前に LilyPond の自由度の高さについて述べたので、@c
574 そのようなことが可能であることは知っています。@c
575 あなたはおそらく @code{\override} コマンドが必要であると推測するでしょう。@c
576 しかしながら、スラーの太さプロパティは存在するのでしょうか?@c
577 そして、それが存在するならどうやって変更するのでしょうか?@c
578 このようなことに内部リファレンス マニュアルは触れています。@c
579 内部リファレンス マニュアルには、あなたがスラーを太くするために必要な情報、@c
580 他のすべての @code{\override} コマンドを構築するために必要な情報が@c
583 内部リファレンスを見ていく前に一言警告です。@c
584 これは @strong{リファレンス} ドキュメントであり、@c
585 説明はほんの少しかまったく含まれていません:
586 リファレンスの目的は情報を正確に、かつ簡潔に提供することです。@c
587 そのため、内部リファレンスを一見してひるんでしまうかもしれません。@c
589 ここにあるガイダンスと説明を読めば、少し練習するだけで、@c
590 内部リファレンスから必要な情報を取り出せるようになります。
592 @cindex override example (オーバライドの例)
593 @cindex Internals Reference, example of using (内部リファレンスの使用例)
594 @cindex @code{\addlyrics} example (@code{\addlyrics} の例)
596 実際の音楽からの簡単な断片を持つ具体例を使用していきましょう:
598 @c Mozart, Die Zauberflöte Nr.7 Duett
600 @lilypond[quote,verbatim]
605 r4 bes'8 bes[( g]) g |
606 g8[( es]) es d[( f]) as |
610 The man who | feels love's sweet e -- | mo -- tion
615 ここで、スラーをもう少し太くしようと決めたことにします。@c
617 スラーは確かにレイアウト オブジェクトです。@c
619 @q{スラーに属していて、太さを制御するプロパティは存在するのか?}
621 その答えを得るために内部リファレンス -- 縮めて IR -- を見なければなりません。
623 あなたが使用しているバージョンの LilyPond のための内部リファレンスは
624 LilyPond ウェブサイト @uref{http://lilypond.org} で見つかるでしょう。@c
625 ドキュメント ページに行き、内部リファレンスへのリンクをクリックしてください。@c
626 学習目的のためには標準の HTML バージョンを使うべきであり、@c
627 @q{1 つの大きなページ} や PDF を使うべきではありません。@c
628 次の数段落を読めば、あなたが内部リファレンスを読むときに@c
631 内部リファレンスの @strong{トップ ページ} 下には 5 つのリンクがあります。@c
632 @emph{Backend} へのリンクを選択してください。@c
633 そこにはレイアウト オブジェクトについての情報があります。@c
634 @strong{Backend} 下にある @emph{All layout objects} へのリンクを@c
636 そのページには、あなたが使用しているバージョンの LilyPond で使用される@c
637 すべてのレイアウト オブジェクトがアルファベット順で@c
639 Slur へのリンクを選択すると、Slur のプロパティがリスト アップされます。
641 記譜法リファレンスからこのページを見つける方法もあります。@c
642 スラーについて扱っているページで、内部リファレンスへのリンクが@c
644 このリンクでこのページに直接行くことができます。@c
645 しかしながら、あなたが調整するレイアウト オブジェクトの名前を@c
646 想像できる場合は、すぐに内部リファレンスに行ってそこで探す方が簡単です。
648 内部リファレンスの Slur ページでは、まず Slur オブジェクトは
649 @code{Slur_engraver} によって作成されるということが述べられています。@c
650 それから、標準設定がリストアップされています。@c
651 スラーの太さを制御していそうなプロパティを探してブラウザをスクロール ダウン@c
657 Line thickness, generally measured in line-thickness
660 これが太さを変更するプロパティのようです。@c
661 @code{thickness} の値は @emph{数} であり、デフォルト値は 1.2、@c
662 この値は他のプロパティでは @code{line-thickness} と@c
665 前にも言ったように、内部リファレンスには説明がほとんど、@c
667 しかしながら、すでにスラーの太さを変えるための十分な情報を持っています。@c
668 レイアウト オブジェクトの名前は @code{Slur} であり、@c
669 変更するプロパティの名前は @code{thickness} であり、@c
670 スラーをもっと太くするには新しい値を 1.2 よりも大きくすべきであることが@c
673 今度は、レイアウト オブジェクト名で見つけた値を置き換えることによって
674 @code{\override} コマンドを構築することができます。@c
676 最初は太さに非常に大きな値を割り当ててみます。@c
677 それによって、そのコマンドが確かに機能していることを確かめることができます。@c
681 \override Slur.thickness = #5.0
684 新しい値の前に @code{#} を付けることを忘れないでください!
686 最後の疑問は @q{このコマンドをどこに置くべきか?} ということです。@c
687 そのことについて不確かであり、学んでいる最中であるのならば、@c
688 ベストな答えはこうです @q{音楽表記の内部で、最初のスラーの直前}。@c
691 @cindex Slur example of overriding (Slur をオーバライドする例)
692 @cindex thickness property, example (thickness プロパティの例)
694 @lilypond[quote,verbatim]
699 % Increase thickness of all following slurs from 1.2 to 5.0
700 \override Slur.thickness = #5.0
701 r4 bes'8 bes[( g]) g |
702 g8[( es]) es d[( f]) as |
706 The man who | feels love's sweet e -- | mo -- tion
714 これが @code{\override} コマンドを構築する基本的な方法です。@c
715 これより後のセクションで遭遇するものはもう少し複雑ですが、@c
717 -- しかしながら、まだ練習が必要でしょう。@c
720 @subsubsubheading コンテキストを見つけ出す
722 @cindex context, finding (コンテキストを見つけ出す)
723 @cindex context, identifying correct (正しいコンテキストを特定する)
725 しかしながら、まず最初にコンテキストを指定しなければならないとしたら@c
727 指定すべきコンテキストは何でしょうか?@c
728 スラーとボイスは音楽表記の各行で明らかに関係が深いので、@c
729 スラーは @code{Voice} コンテキストの中にあると推測できるかもしれません。@c
731 この問題を解決するには、Slur について記述している内部リファレンス ページの@c
733 そこには @q{Slur オブジェクトは Slur エングラーバによって作成される} と@c
735 そのため、スラーは @code{Slur_engraver} が存在しているコンテキストの@c
736 どれかで作成されるということになります。@c
737 @code{Slur_engraver} へのリンクを辿ります。@c
738 そのページの最後の方で @code{Slur_engraver} は 7 つのボイス コンテキスト
739 -- 標準のボイス コンテキストである @code{Voice} を含む
740 -- の一部であることが述べられています。@c
742 そして、@code{Voice} は最下位のコンテキストの 1 つである
743 -- このことは、そこに音符を入力するという事実によって明らかに示されています
744 -- ため、ここではそのコンテキストを省略することができるのです。
746 @subsubsubheading 1 回だけオーバライドする
748 @cindex overriding once only (一度だけオーバライドする)
749 @cindex once override (一度だけオーバライドする)
753 上記の最後の例では @emph{すべて} のスラーが太くなっています。@c
754 しかし、最初のスラーだけを太くしたい場合はどうでしょうか?@c
755 これは @code{\once} コマンドを使うことによって達成されます。@c
756 @code{\override} コマンドの直前に @code{\once} コマンドを@c
757 置くことによって、@code{\override} コマンドは @strong{直後にある} 音符から@c
758 始まるスラーだけを変更するようになります。@c
759 直後にある音符がスラーの開始点ではない場合、そのコマンドはまったく機能しません
760 -- それがスラーに遭遇するまで保持されるということはなく、@c
762 そのため、@code{\once} コマンド付きの @code{\override} コマンドは@c
763 以下のように上記の例とは異なる場所に置かなくてはなりません:
765 @cindex Slur, example of overriding (Slur をオーバライドする例)
766 @cindex thickness property, example (thickness プロパティの例)
769 @lilypond[quote,verbatim]
776 \once \override Slur.thickness = #5.0
778 g8[( es]) es d[( f]) as |
782 The man who | feels love's sweet e -- | mo -- tion
788 今度は、最初のスラーだけが太くなりました。
790 @code{\once} コマンドは @code{\set} コマンドの前でも使用される可能性があります。
792 @subsubsubheading 元に戻す
794 @cindex revert (元に戻す)
795 @cindex default properties, reverting to (デフォルトのプロパティに戻す)
799 最後に、最初の 2 つだけのスラーを太くしたい場合はどうでしょうか?@c
800 その場合、2 つのコマンド -- それぞれの前に @code{\once} を付けた --
803 @cindex Slur, example of overriding (Slur をオーバライドする例)
804 @cindex thickness property, example (thickness プロパティの例)
807 @lilypond[quote,verbatim]
814 \once \override Slur.thickness = #5.0
817 \once \override Slur.thickness = #5.0
818 g8[( es]) es d[( f]) as |
822 The man who | feels love's sweet e -- | mo -- tion
828 あるいは、@code{\once} コマンドを省略して、2 番目のスラーの後に
829 @code{thickness} プロパティをデフォルト値に戻すために
830 @code{\revert} コマンドを使うこともできます:
832 @cindex Slur, example of overriding (Slur をオーバライドする例)
833 @cindex thickness property, example (thickness プロパティの例)
836 @lilypond[quote,verbatim]
842 % 以後のスラーの太さを 1.2 から 5.0 に増やします
843 \override Slur.thickness = #5.0
846 % 以後のスラーの太さをデフォルトの 1.2 に戻します
847 \revert Slur.thickness
852 The man who | feels love's sweet e -- | mo -- tion
858 @code{\revert} コマンドは @code{\override} コマンドで@c
859 変更されたどのプロパティでもデフォルト値に戻すことができます。@c
862 これで内部リファレンスと調整の基本的な方法についての紹介を終わりにします。@c
863 この章で後に続くセクションの中にあるいくつのかの例でも一部では、@c
864 内部リファレンスの特徴についての追加の紹介や、そこから情報を取り出すための@c
866 それらの例ではガイダンスや説明のための言葉はずっと少ないでしょう。
869 @node インタフェイスの中で見つかるプロパティ
870 @subsection インタフェイスの中で見つかるプロパティ
871 @translationof Properties found in interfaces
873 @cindex interface (インタフェイス)
874 @cindex interface properties (インタフェイス プロパティ)
875 @cindex properties in interfaces (インタフェイス内のプロパティ)
877 今度は歌詞をイタリック体で譜刻したいということにします。@c
878 そうするには @code{\override} コマンドをどのように使う必要があるのでしょうか?@c
879 以前と同様に、まず @q{すべてのレイアウト オブジェクト} をリストアップしている@c
880 内部リファレンス ページを開き、歌詞をコントロールしていそうなオブジェクトを@c
882 @code{LyricText} がそれであるようです。@c
883 これをクリックすると、歌詞のテキストに対してセットすることができる@c
885 そこには @code{font-series} と @code{font-size} が含まれますが、@c
886 歌詞をイタリック体にするためのプロパティらしきものはありません。@c
887 これは、形に関するプロパティはすべてのフォント オブジェクトに共通なもの@c
888 であり、そのため、各レイアウト オブジェクトに含まれているのではなく、@c
889 他の同様な共通プロパティと一緒にグループ化されていて、@c
890 @strong{インタフェイス} の 1 つ @code{font-interface} の中に@c
893 そのため、インタフェイスのプロパティを見つける方法と、どのオブジェクトが@c
894 これらのインタフェイス プロパティを使うのかを調べる方法を学ぶ必要があります。
896 @code{LyricText} について記述している内部リファレンスのページを@c
898 そのページの最後に @code{LyricText} がサポートするインタフェイスへのリンクが@c
900 そのリストには @code{font-interface} を含むいくつかの要素があります。@c
901 このリンクをクリックすると、このインタフェイスに@c
902 関連付けされているプロパティのところに行きます。@c
903 これらのプロパティは @code{LyricText} を含む @code{font-interface} を@c
904 サポートするすべてのオブジェクトのプロパティでもあります。
906 @code{font-shape(symbol)} を含むフォントを制御するユーザが@c
907 設定可能なプロパティをすべて見つけました。@c
908 @code{font-shape(symbol)} では @code{symbol} を @code{upright},
909 @code{italics}, あるいは @code{caps} にセットすることができます。
911 そこには、@code{font-series} と @code{font-size} もリスト アップされている@c
914 共通フォントプロパティ @code{font-series} と @code{font-size} は
915 @code{LyricText} とインタフェイス @code{font-interface} の両方で@c
916 リスト アップされているのに、なぜ @code{font-shape} はそうでないのか?@c
917 その答えは、@code{font-series} と @code{font-size} は、@c
918 @code{LyricText} オブジェクトが作成されるときに、@c
919 それらのグローバルなデフォルト値から変更されるのに対して、@c
920 @code{font-shape} はそうではないからです。@c
921 @code{LyricText} の中にあるエントリから @code{LyricText} に適用される@c
922 それら 2 つのプロパティの値がわかります。@c
923 @code{font-interface} をサポートする他のオブジェクトは、@c
924 それらのオブジェクトが作成されるときに、@c
925 それらのプロパティを異なる値にセットします。
927 今度は歌詞をイタリック体に変更するように @code{\override} コマンドを@c
928 構築できるかどうかを見ていきましょう。@c
929 オブジェクトは @code{LyricText} であり、@c
930 プロパティは @code{font-shape} であり、セットする値は @code{italic} です。@c
933 話は逸れますが重要なことを 1 つ挙げます。@c
934 プロパティには値としてシンボル (例えば @code{italic}) を取るものがあります。@c
935 シンボルの前にはアポストロフィ @code{'} を置く必要があり、そうすることで内部的に
937 任意のテキスト文字列との違い -- 任意のテキスト文字列は @code{"a text string"}
938 のような形で表記されます -- に注意してください。@c
939 シンボルと文字列についてのより詳細な説明は@rextend{Scheme tutorial}
942 さて、それでは歌詞をイタリック体で譜刻するために必要となる
943 @code{\override} コマンドは以下のようになります:
946 \override LyricText.font-shape = #'italic
950 そして、これは以下のように影響を与える歌詞の前に、そして近くに置くべきです:
952 @cindex font-shape property, example (font-shape プロパティの例)
953 @cindex italic, example (italic の例)
954 @cindex LyricText, example of overriding (Lyric をオーバライドする例)
955 @cindex @code{\addlyrics}, example (@code{\addlyrics} の例)
957 @lilypond[quote,ragged-right,verbatim]
962 r4 bes'8 bes[( g]) g |
963 g8[( es]) es d[( f]) as |
967 \override LyricText.font-shape = #'italic
968 The man who | feels love's sweet e -- | mo -- tion
974 これで歌詞がすべてイタリック体で譜刻されました。
976 @warning{歌詞の中では、最後の音節と終端の波括弧の間に常にスペースを@c
981 拡張: @rextend{Scheme tutorial}
985 @subsection プロパティのタイプ
986 @translationof Types of properties
988 @cindex property types (プロパティ タイプ)
990 これまでにプロパティのタイプを 2 つ見てきました:
991 @code{number} と @code{symbol} です。@c
992 プロパティに与える値が有効であるためには、その値は正しいタイプであり、@c
993 そのタイプのルールに従っていなければなりません。@c
994 プロパティのタイプは内部リファレンスの中で常にプロパティ名の後の括弧の中に@c
996 ここに、あなたが必要になるであろうプロパティのタイプを、@c
997 そのタイプのルールといくつかの例と共にリスト アップします。@c
998 @code{\override} コマンドの中でプロパティの値を入力する時は、@c
999 当然、常にそれらの値の前にハッシュ記号 @code{#} を付け加える必要があります
1000 -- 例え、その値自体が @code{#} で始まっていたとしても付け加える必要があり@c
1002 ここでは定数の例だけを示します: Scheme を用いて値の計算をしたいのであれば、@c
1003 @rextend{Calculations in Scheme} を参照してください。
1005 @multitable @columnfractions .2 .45 .35
1010 @tab 真か偽のどちらかで、それぞれ #t と #f で表されます
1011 @tab @code{#t}, @code{#f}
1012 @item Dimension (譜スペース)
1014 @tab @code{2.5}, @code{0.34}
1016 @tab 向きを表す有効な定数またはそれと等価な数値 (-1 から 1 までの小数が@c
1018 @tab @code{LEFT}, @code{CENTER}, @code{UP},
1019 @code{1}, @w{@code{-1}}
1022 @tab @code{3}, @code{-1}
1024 @tab 一連の定数またはシンボル。@c
1025 スペースで区切られ、前にアポストロフィが付いた括弧で囲まれます
1026 @tab @code{'(left-edge staff-bar)}, @code{'(1)}, @code{'()},
1027 @code{'(1.0 0.25 0.5)}
1030 @tab @code{\markup @{ \italic "cresc." @}}
1032 @tab make-moment 関数で構築される全音符の分数
1033 @tab @code{(ly:make-moment 1/4)},
1034 @code{(ly:make-moment 3/8)}
1037 @tab @code{3.5}, @w{@code{-2.45}}
1039 @tab @q{スペース . スペース} で区切られ、前にアポストロフィが付いた括弧で@c
1041 @tab @code{'(2 . 3.5)}, @code{'(0.1 . -3.2)}
1043 @tab プロパティに許可されているシンボルのセットのいずれかであり、@c
1045 @tab @code{'italic}, @code{'inside}
1047 @tab 手続き。何のアクションも起こさない場合は @code{#f}
1048 @tab @code{bend::print}, @code{ly:text-interface::print},
1051 @tab @code{#(}@dots{}@code{)} で囲まれたいくつかの定数
1052 @tab @code{#(#t #t #f)}
1057 拡張: @rextend{Scheme tutorial}
1062 @translationof Appearance of objects
1064 いくつかの例を使ってこれまでに学んだことを練習して、譜刻される楽譜の見た目を@c
1065 変更するためにどのように調整が使われるのかを見ていきましょう。
1075 @subsection オブジェクトの可視性と色
1076 @translationof Visibility and color of objects
1078 教育目的の楽譜では、ある要素を省略した楽譜を譜刻して、@c
1079 学生にそれを付け足させるという訓練にしたいと思うかもしれません。@c
1080 簡単な例として、その訓練とは小節線の無い楽譜だと仮定してみましょう。@c
1081 しかしながら、通常、小節線は自動的に挿入されます。@c
1082 どうやって小節線が譜刻されることを防ぐのでしょうか?
1084 このことに挑戦する前に、オブジェクト プロパティは @emph{インタフェイス} と@c
1085 呼ばれるものにグループ化されているということを思い出してください
1086 -- @ref{インタフェイスの中で見つかるプロパティ} を参照してください。@c
1087 これはあるグラフィカル オブジェクトを調整するために一緒に@c
1088 使用されるかもしれないプロパティをグループ化したものです
1089 -- あるオブジェクトに対してインタフェイス内のプロパティの 1 つを使うことが@c
1090 許可されるのなら、他のプロパティも許可されます。@c
1091 あるオブジェクトはいくつかのインタフェイス内にあるプロパティを使用し、@c
1092 別のオブジェクトはそれとは別のインタフェイス内にあるプロパティを使用します。@c
1093 ある特定のグラフィカルオブジェクトによって使用されるプロパティを保持している@c
1094 インタフェイスは、そのグラフィカル オブジェクトについて記述している@c
1095 内部リファレンス ページの最後にリスト アップされていて、@c
1096 それらのプロパティはそれらのインタフェイスを参照することによって閲覧できます。
1098 グラフィカル オブジェクトについての情報を見つけ出す方法を
1099 @ref{レイアウト オブジェクトのプロパティ} で説明しました。@c
1100 同じアプローチを使って、内部リファレンスで小節線を@c
1101 譜刻するレイアウト オブジェクトを見つけ出します。@c
1102 @emph{Backend} を経由して @emph{All layout objects} に行くと、@c
1103 そこに @code{BarLine} と呼ばれる@c
1104 レイアウト オブジェクトがあることがわかります。@c
1105 そのレイアウト オブジェクトのプロパティには小節線の可視性をコントロールする
1106 2 つのプロパティが含まれています: @c
1107 @code{break-visibility} と @code{stencil} です。@c
1108 さらに、@code{BarLine} はインタフェイスのいくつかをサポートしています。@c
1109 @code{grob-interface} もサポートされていて、@c
1110 そこには @code{transparent} プロパティと @code{color} プロパティが@c
1112 これらすべてが小節線の可視性に影響を与えます (そしてもちろん、@c
1113 拡大解釈すれば他の多くのレイアウト オブジェクトにも影響を与えます)。@c
1114 次はこれらのプロパティをそれぞれ見ていきましょう。
1118 * break-visibility プロパティ::
1119 * transparent プロパティ::
1125 @unnumberedsubsubsec @code{stencil} プロパティ
1126 @translationof The stencil property
1128 @cindex stencil property (stencil プロパティ)
1130 このプロパティは譜刻すべきシンボル (図柄) を指定することによって@c
1132 他の多くのプロパティでも共通に言えますが、このプロパティの値に
1133 @code{#f} をセットすることによって何も譜刻させなくすることができます。@c
1135 以前と同様に、暗黙のコンテキスト @code{Voice} は省略します:
1137 @cindex BarLine, example of overriding (BarLine をオーバライドする例)
1138 @cindex stencil property, example (stencil プロパティの例)
1140 @lilypond[quote,ragged-right,verbatim]
1143 \override BarLine.stencil = ##f
1144 c''4 b8 c d16 c d8 |
1145 g,8 a16 b8 c d4 e16 |
1152 内部リファレンスに戻って、@code{BarLine} のプロパティを記述しているページを@c
1155 @qq{BarLine オブジェクトは Bar_engraver によって作成されます} と@c
1157 @code{Bar_engraver} ページに行ってください。@c
1158 そのページの最後で、@code{Bar_engraver} を保持するコンテキストが@c
1160 それらのコンテキストのタイプはすべて @code{Staff} です。@c
1161 ですから、@code{\override} コマンドが予期したように機能しなかったのは、@c
1162 @code{BarLine} はデフォルトの @code{Voice} コンテキストの中には@c
1164 コンテキストが間違って指定された場合、そのコマンドは機能しません。@c
1165 エラー メッセージは生成されず、ログ ファイルには何もログが残りません。@c
1166 正しいコンテキストを付け加えることによってコマンドを修正してみましょう:
1168 @cindex BarLine, example of overriding (BarLine をオーバライドする例)
1169 @cindex stencil property, example (stencil プロパティの例)
1171 @lilypond[quote,ragged-right,verbatim]
1174 \override Staff.BarLine.stencil = ##f
1175 c''4 b8 c d16 c d8 |
1176 g,8 a16 b8 c d4 e16 |
1182 @code{stencil} プロパティに @code{#f} をセットする操作は頻繁に行うので、@c
1183 短くしたコマンド @code{\omit} が用意されています:
1186 @lilypond[quote,ragged-right,verbatim]
1190 c''4 b8 c d16 c d8 |
1191 g,8 a16 b8 c d4 e16 |
1196 しかしながら、@code{stencil} プロパティを @code{#f} にセットするのではなく、@c
1197 オブジェクトの大きさを修正する必要があるオブジェクトも存在するということに@c
1199 そのようなオブジェクトの @code{stencil} プロパティを @code{#f} にセットすると@c
1201 例えば、@code{NoteHead} オブジェクトの @code{stencil} プロパティを
1202 @code{#f} にセットするとエラーになります。@c
1203 この場合、@code{point-stencil} を使ってサイズが 0 のステンシル (型、型紙) を@c
1206 @lilypond[quote,verbatim]
1209 \once \override NoteHead.stencil = #point-stencil
1215 @node break-visibility プロパティ
1216 @unnumberedsubsubsec @code{break-visibility} property
1217 @translationof The break-visibility property
1219 @cindex break-visibility property (break-visibility プロパティ)
1221 内部リファレンスの @code{BarLine} のプロパティから
1222 @code{break-visibility} プロパティには 3 つのブール値からなるベクトルが@c
1224 これらはそれぞれ、小節線が行の最後、行の途中、行の最初に譜刻されるかどうかを@c
1226 以下の例ではすべての小節線を消したいので、必要となる値は
1227 @code{#(#f #f #f)} です
1228 (同じ結果を @code{all-invisible} でも得ることができます)。@c
1230 @code{Staff} コンテキストを含めることを忘れないでください。@c
1231 また、この値を書くときに括弧を始める前に @code{##} を@c
1232 付ける必要があることにも注意してください。@c
1233 @code{#} の 1 つはベクトルを導入するときに値の一部として必要とされ、@c
1234 先頭の @code{#} は @code{\override} コマンドの中で常に値の前に@c
1237 @cindex BarLine, example of overriding (BarLine をオーバライドする例)
1238 @cindex break-visibility property, example (break-visibility プロパティの例)
1240 @lilypond[quote,ragged-right,verbatim]
1243 \override Staff.BarLine.break-visibility = ##(#f #f #f)
1244 c''4 b8 c d16 c d8 |
1245 g,8 a16 b8 c d4 e16 |
1253 @node transparent プロパティ
1254 @unnumberedsubsubsec @code{transparent} プロパティ
1255 @translationof The transparent property
1257 @cindex transparent property (transparent プロパティ)
1258 @cindex transparency (透明性)
1260 内部リファレンスの @code{grob-interface} ページにあるプロパティから
1261 @code{transparent} プロパティはブール値であることがわかります。@c
1262 これはグラフィカル オブジェクトを透明にする場合には @code{#t} に@c
1264 次の例では、小節線ではなく拍子記号を不可視にしてみましょう。@c
1265 そうするには、まず、拍子記号のグラフィカル オブジェクト名を@c
1267 @code{TimeSignature} レイアウト オブジェクトのプロパティを見つけるために@c
1268 内部リファレンスの @q{すべてのレイアウト オブジェクト} ページに@c
1270 @code{TimeSigunature} は @code{Time_signature_engraver} によって作り出され、@c
1271 さらに、@code{Time_signature_engraver} は @code{Staff} コンテキストに含まれ、@c
1272 さらに、@code{Staff} コンテキストは @code{grob-interface} を@c
1273 サポートしているということがわかります。@c
1274 そのため、拍子記号を透明にするためのコマンドは以下のようになります:
1276 @cindex TimeSignature, example of overriding (TimeSignature をオーバライドする例)
1277 @cindex transparent property, example (transparent プロパティの例)
1279 @lilypond[quote,ragged-right,verbatim]
1282 \override Staff.TimeSignature.transparent = ##t
1283 c''4 b8 c d16 c d8 |
1284 g,8 a16 b8 c d4 e16 |
1290 @code{transparent} プロパティに @code{#t} をセットする操作も頻繁に行うので、@c
1291 短くしたコマンド @code{\hide} が用意されています:
1294 @lilypond[quote,ragged-right,verbatim]
1297 \hide Staff.TimeSignature
1298 c''4 b8 c d16 c d8 |
1299 g,8 a16 b8 c d4 e16 |
1305 どちらの場合でも拍子記号は消えました。@c
1306 しかしながら、このコマンドは拍子記号があるべき場所に隙間を残しています。@c
1307 たぶん、これは学生がその部分を埋めるための練習としては望ましいでしょうが、@c
1308 他の状況ではこの隙間は望ましくありません。@c
1309 この隙間を取り除くには、拍子記号の @code{transparent} の代わりに@c
1310 ステンシル (型、型紙) を @code{#f} にセットします:
1312 @cindex TimeSignature, example of overriding (TimeSignature をオーバライドする例)
1313 @cindex stencil property, example (stencil プロパティの例)
1315 @lilypond[quote,ragged-right,verbatim]
1318 \omit Staff.TimeSignature
1319 c''4 b8 c d16 c d8 |
1320 g,8 a16 b8 c d4 e16 |
1326 違いは明白です: ステンシルを @code{#f} にセットする
1327 (@code{\omit} を用いることもできます) と、オブジェクト自体が削除されます。@c
1328 一方、オブジェクトを @code{transparent} (透明) にする
1329 (@code{\hide} を用いることもできます)とそのオブジェクトは消えますが、@c
1332 @subheading 色 (color)
1335 @unnumberedsubsubsec @code{color} プロパティ
1336 @translationof The color property
1338 最後に、小節線の色を白にすることによって小節線を不可視にしてみましょう。@c
1339 (これには白い小節線が譜線と交差したところで@c
1340 譜線を見えたり見えなくしてしまうかもしれないという問題があります。@c
1341 以下のいくつかの例で、このことを予測することはできないと思うかもしれません。@c
1342 そうなる理由と、それを制御する方法についての詳細は、@c
1343 @ruser{Painting objects white} でカバーされています。@c
1344 しかしここでは色について学んでいるところなので、@c
1345 オブジェクトを白で描くことの限界を受け入れるだけにしてください。)
1347 @code{grob-interface} はカラー プロパティの値はリストであると指定しています。@c
1348 しかしながら、そのリストが何であるべきなのかの説明はありません。@c
1349 カラー プロパティで必要とされるリストは実際のところ内部ユニットの中にある@c
1351 しかし、内部ユニットの中にある値を知らなくても済むように、@c
1352 カラーを指定するための手段がいくつか用意されています。@c
1353 最初の方法は @ruser{List of colors} にある最初の表でリスト アップされている
1354 @q{標準} のカラーの 1 つを使用する方法です。@c
1355 小節線を白にするには以下のように記述します:
1357 @cindex BarLine, example of overriding (BarLine をオーバライドする例)
1358 @cindex color property, example (color プロパティの例)
1360 @lilypond[quote,ragged-right,verbatim]
1363 \override Staff.BarLine.color = #white
1364 c''4 b8 c d16 c d8 |
1365 g,8 a16 b8 c d4 e16 |
1371 今度も再び小節線は見えなくなりました。@c
1372 @emph{white} の前にアポストロフィは付かないということに注意してください
1373 -- これはシンボルではなく@emph{変数}です。@c
1374 この変数は評価される時、小節線の色を白にセットするのに必要な内部的な値の@c
1376 標準カラー リストにある他のカラーもまた変数です。@c
1377 小節線の色をこのリストの中にある他の変数に変更することで、@c
1378 これが機能することをあなた自身で納得できます。
1380 @cindex color, X11 (X11 カラー)
1381 @cindex X11 colors (X11 カラー)
1385 カラーを変えるための 2 つ目の方法は、@ruser{List of colors} の
1386 2 番目のリストの中にある X11 カラー名のリストを使用する方法です。@c
1387 しかしながら、X11 カラー名は関数 @code{x11-color} によって実際の値に@c
1389 @code{x11-color} は以下のように X11 カラー シンボルを内部値のリストに@c
1392 @cindex BarLine, example of overriding (BarLine をオーバライドする例)
1393 @cindex color property, example (color プロパティの例)
1395 @lilypond[quote,ragged-right,verbatim]
1398 \override Staff.BarLine.color = #(x11-color 'white)
1399 c''4 b8 c d16 c d8 |
1400 g,8 a16 b8 c d4 e16 |
1406 この場合、関数 @code{x11-color} はシンボルを引数として扱うので、@c
1407 変数として評価されないようシンボルの前にアポストロフィを付ける必要があり、@c
1408 関数呼び出し全体を括弧で囲む必要があるということに注意してください。
1410 @cindex rgb colors (RGB カラー)
1411 @cindex color, rgb (RGB カラー)
1416 RGB 値を内部カラーに変換する @code{rgb-color} 関数です。@c
1417 この関数は赤、緑、青の輝度を表す 3 つの引数をとります。@c
1418 これらの引数は 0 から 1 までの値をとります。@c
1419 ですから、カラーを赤にセットする場合の値は @code{(rgb-color 1 0 0)} となり、@c
1420 白の場合は @code{(rgb-color 1 1 1)} となります:
1422 @cindex BarLine, example of overriding (BarLine をオーバライドする例)
1423 @cindex color property, example (color プロパティの例)
1425 @lilypond[quote,ragged-right,verbatim]
1428 \override Staff.BarLine.color = #(rgb-color 1 1 1)
1429 c''4 b8 c d16 c d8 |
1430 g,8 a16 b8 c d4 e16 |
1435 最後に、X11 カラー セットの一部であるグレー スケールを用いる方法もあります。@c
1436 グレー スケールの範囲は黒 @code{'grey0} から白 @code{'grey100} まで
1438 グレー スケールの使用方法を示すために、@c
1439 例の中にあるすべてのレイアウト オブジェクトのカラーをさまざまな濃度の@c
1442 @cindex StaffSymbol, example of overriding (StaffSymbol をオーバライドする例)
1443 @cindex TimeSignature, example of overriding (TimeSignature をオーバライドする例)
1444 @cindex Clef, example of overriding (Clef をオーバライドする例)
1445 @cindex NoteHead, example of overriding (NoteHead をオーバライドする例)
1446 @cindex Stem, example of overriding (Stem をオーバライドする例)
1447 @cindex BarLine, example of overriding (BarLine をオーバライドする例)
1448 @cindex color property, example (color プロパティの例)
1449 @cindex x11-color, example of using (x11-color の使用例)
1451 @lilypond[quote,ragged-right,verbatim]
1454 \override Staff.StaffSymbol.color = #(x11-color 'grey30)
1455 \override Staff.TimeSignature.color = #(x11-color 'grey60)
1456 \override Staff.Clef.color = #(x11-color 'grey60)
1457 \override Voice.NoteHead.color = #(x11-color 'grey85)
1458 \override Voice.Stem.color = #(x11-color 'grey85)
1459 \override Staff.BarLine.color = #(x11-color 'grey10)
1460 c''4 b8 c d16 c d8 |
1461 g,8 a16 b8 c d4 e16 |
1467 各レイアウト オブジェクトに関連付けされているコンテキストに注意してください。@c
1468 これらのコンテキストを正しく取得することが重要であり、@c
1469 そうしなければコマンドは機能しません!@c
1470 コンテキストの中には特定のエングラーバが置かれているということを@c
1472 エングラーバに対するデフォルト コンテキストを見つけ出すには、@c
1473 内部リファレンスのレイアウト オブジェクトからスタートして、@c
1474 そこからそれを作り出すエングラーバのページに行きます。@c
1476 通常はどのコンテキストにそのエングラーバが含まれているのかが記述されています。
1480 @subsection オブジェクトのサイズ
1481 @translationof Size of objects
1483 @cindex changing size of objects (オブジェクトのサイズを変更する)
1484 @cindex size of objects (オブジェクトのサイズ)
1485 @cindex objects, size of (オブジェクトのサイズ)
1486 @cindex objects, changing size of (オブジェクトのサイズを変更する)
1488 以前の例を見直すことから始めてみましょう
1489 (@ref{Nesting music expressions} を参照してください)。@c
1490 そこでは @rglos{ossia} として新たに一時的な譜を導入する方法が示されています。
1492 @cindex alignAboveContext property, example (alignAboveContext プロパティの例)
1493 @cindex @code{\with}, example (@code{\with} の例)
1495 @lilypond[quote,ragged-right,verbatim]
1496 \new Staff ="main" {
1503 alignAboveContext = #"main" }
1511 通常、オッシアは音部記号と拍子記号無しで記述され、@c
1512 メインの譜よりもわずかに小さく譜刻されます。@c
1513 今度は、すでに音部記号と拍子記号を削除する方法を知っています
1514 -- 以下のようにそれぞれのステンシルを @code{#f} にセットするだけです:
1516 @cindex alignAboveContext property, example (alignAboveContext プロパティの例)
1517 @cindex @code{\with}, example (@code{\with} の例)
1519 @cindex Clef, example of overriding (Clef をオーバライドする例)
1520 @cindex TimeSignature, example of overriding (TimeSignature をオーバライドする例)
1522 @lilypond[quote,ragged-right,verbatim]
1523 \new Staff ="main" {
1530 alignAboveContext = #"main"
1534 \omit Staff.TimeSignature
1544 ここで、@code{\with} 節の後にある追加の括弧のペアが、@c
1545 その括弧に囲まれているオーバライドと音楽がオッシア譜に適用されることを@c
1548 しかし、@code{\with} を用いた譜コンテキストの変更と @code{\override}
1549 を用いた音部記号と拍子記号のステンシルの変更 (あるいはこのケースでは
1550 @code{\omit} を用いています) との違いは何なのでしょうか?@c
1551 主な違いは、@code{\with} 節の中で行われた変更はそのコンテキストが@c
1553 そのコンテキストでは @strong{デフォルト} 値として残ります。@c
1554 一方、音楽の中に埋め込まれた @code{\set} コマンドや
1555 @code{\override} コマンドは動的です
1556 -- それらは音楽のある特定のポイントに同期して変更を行います。@c
1557 変更が @code{\unset} や @code{\revert} を使ってセットを解除されたり@c
1559 -- これは @code{\with} 節でセットされていた場合はその値、@c
1560 そうでない場合は通常のデフォルト値 -- に戻ります。
1562 いくつかのコンテキスト プロパティは @code{\with} 節でのみ変更可能です。@c
1563 これらは、コンテキストが作成された後では、変更されることのないプロパティです。@c
1564 @code{alignAboveContext} とそのパートナー @code{alignBelowContext} が@c
1565 そのようなプロパティです -- いったん譜が作成されると、@c
1567 それを後で変更しようとすることには意味がありません。
1569 レイアウト オブジェクトのデフォルト値は @code{\with} 節で@c
1571 通常の @code{\override} コマンドをコンテキスト名を省いて@c
1573 コンテキスト名を省略するのは、そのコンテキストは明らかに
1574 @code{\with} 節が変更しようとしているコンテキストだからです。@c
1575 実際、@code{\with} 節の中でコンテキストを指定するとエラーが発生します。
1577 それでは上記の例を以下のように書き換えます:
1579 @cindex alignAboveContext property, example (alignAboveContext プロパティの例)
1580 @cindex @code{\with}, example (@code{\with} の例)
1581 @cindex Clef, example of overriding (Clef をオーバライドする例)
1582 @cindex TimeSignature, example of overriding (TimeSignature をオーバライドする例)
1585 @lilypond[quote,fragment,ragged-right,verbatim]
1586 \new Staff ="main" {
1593 alignAboveContext = #"main"
1595 \override Clef.stencil = ##f
1597 \override TimeSignature.stencil = ##f
1606 @code{transparent} プロパティを設定したり @code{stencil} を消すために@c
1607 短縮形 @code{\hide} と @code{\omit} を使うことができ、結果として@c
1610 @lilypond[quote,ragged-right,verbatim]
1611 \new Staff ="main" {
1618 alignAboveContext = #"main"
1631 最後に、レイアウト オブジェクトのサイズを変更してみます。
1633 いくつかのレイアウト オブジェクトはある書体から選択された図柄として@c
1635 これには符頭、臨時記号、マークアップ、音部記号、拍子記号、強弱記号、@c
1637 それらのサイズは、これから見ていくように、@code{font-size} プロパティを@c
1639 スラーやタイのような他のレイアウト オブジェクト
1640 -- 一般には、スパナ オブジェクト (spanner objects)
1642 @code{font-size} プロパティとは関係がありません。@c
1643 一般に、それらのオブジェクトはそれらを取り付けられるオブジェクトからサイズを@c
1644 決定する (訳者: 例えば、スラーはそのスラーが付着する音符から@c
1645 そのスラーのサイズを決定する) ので、@c
1646 通常はサイズを手動で変更する必要はありません。@c
1647 さらに、符幹や小節線の長さ、連桁や他の線の太さ、譜線の間隔などといった@c
1648 他のプロパティはすべて特別な方法で変更する必要があります。
1650 オッシアの例に戻って、まず @code{font-size} を変更してみましょう。@c
1651 これを行うには 2 通りの方法があります。@c
1652 以下のようなコマンドで @code{NoteHead} のような各オブジェクト タイプの@c
1656 \override NoteHead.font-size = #-2
1659 あるいは、@code{\set} を使って特別なプロパティ @code{fontSize} を設定するか、@c
1660 それを @code{\with} 節に含める
1661 (ただし、@code{\set} は含めません) ことによって@c
1668 これらの命令文は両方ともフォント サイズを前の値から 2 段階減らします。@c
1669 各段階でサイズはおよそ 12% 増減します。
1671 それではオッシアの例でフォント サイズを変更してみましょう:
1673 @cindex alignAboveContext property, example (alignAboveContext プロパティの例)
1674 @cindex @code{\with}, example (@code{\with} の例)
1675 @cindex Clef, example of overriding (Clef をオーバライドする例)
1676 @cindex TimeSignature, example of overriding (TimeSignature をオーバライドする例)
1677 @cindex fontSize property, example (fontSize プロパティの例)
1680 @lilypond[quote,ragged-right,verbatim]
1681 \new Staff ="main" {
1688 alignAboveContext = #"main"
1691 % すべてのフォント サイズを約 24% 減らします
1702 符頭とフラグは小さくなりましたが、符幹はそれに対して長すぎ、@c
1704 これらをフォント サイズの減少に比例してスケール ダウンさせる必要があります。@c
1705 次のサブ セクションでそれを行う方法について議論します。
1709 @subsection オブジェクトの長さと太さ
1710 @translationof Length and thickness of objects
1712 @cindex distances (距離)
1713 @cindex thickness (太さ)
1716 @cindex size, changing (サイズを変更する)
1717 @cindex stem length, changing (符幹の長さを変更する)
1718 @cindex staff line spacing, changing (譜線の間隔を変更する)
1720 LilyPond では距離と長さは一般に譜スペース -- 譜の中の隣り合う線の間隔 --
1721 で測ります (特別な場合では、譜スペースの半分で測ることもあります)。@c
1722 一方、たいていの @code{thickness} プロパティは @code{line-thickness} と@c
1723 呼ばれる内部プロパティを単位として測ります。@c
1724 例えば、デフォルトでは、ヘアピン (訳者: 強弱記号) の線の太さは
1725 1 単位の @code{line-thickness} であり、@c
1726 音符の符幹の @code{thickness} は 1.3 です。@c
1727 けれども、それとは単位の異なる太さプロパティがあるということにも@c
1729 例えば、連桁の太さプロパティは譜スペースで測ります。
1731 それでは、どうやって長さをフォント サイズに比例させるのでしょうか?@c
1732 これは、まさにこの目的のために提供されている @code{magstep} と呼ばれる@c
1733 特別な関数の助けを借りることによって達成できます。@c
1734 この関数は引数を 1 つ -- フォント サイズの変化 (前の例では #-2) --
1735 をとり、他のオブジェクトの縮小に比例したスケーリング ファクタを返します。@c
1738 @cindex alignAboveContext property, example (alignAboveContext プロパティの例)
1739 @cindex @code{\with}, example (@code{\with} の例)
1740 @cindex Clef, example of overriding (Clef をオーバライドする例)
1741 @cindex TimeSignature, example of overriding (TimeSignature をオーバライドする例)
1742 @cindex fontSize property, example (fontSize プロパティの例)
1743 @cindex StaffSymbol, example of overriding (StaffSymbol をオーバライドする例)
1744 @cindex magstep function, example of using (magstep 関数の使用例)
1745 @cindex staff-space property, example (staff-space プロパティの例)
1746 @cindex stencil property, example (stencil プロパティの例)
1748 @lilypond[quote,ragged-right,verbatim]
1749 \new Staff ="main" {
1756 alignAboveContext = #"main"
1761 \override StaffSymbol.staff-space = #(magstep -2)
1771 符幹の長さと他の多くの長さに関係するプロパティは常に
1772 @code{staff-space} プロパティの値と比例関係になるよう算出されるため、@c
1773 それらの長さも自動的にスケール ダウンされます。@c
1774 これはオッシアの垂直方向のスケールだけに効果を及ぼすということに@c
1775 注意してください -- 水平方向のスケールは、メインの音楽と同期するよう、@c
1776 メインの音楽のレイアウトによって決定されるため、水平方向のスケールは
1777 @code{staff-space} の変更によっていかなる影響も受けません。@c
1778 もちろん、メインの音楽のすべてのスケールがこの方法で変更された場合、@c
1779 水平方向のスペースも影響を受けます。@c
1780 このことについては、後のレイアウト セクションで議論します。
1782 そして、これでオッシアの作成は完了です。@c
1783 他のすべてのオブジェクトのサイズと長さが類似の方法で変更されるかもしれません。
1785 上記の例のようなスケールのちょっとした変更に対して、小節線、連桁、ヘアピン、@c
1786 スラーなどのさまざまな描画線の太さは通常はグローバルな調節を必要としません。@c
1787 ある特定のレイアウト オブジェクトの太さを調節する必要がある場合、@c
1788 それを達成する最良の方法はそのオブジェクトの @code{thickness} プロパティを@c
1790 スラーの太さを変更する例は @ref{レイアウト オブジェクトのプロパティ} で@c
1792 すべての描画オブジェクト (つまり、フォントから作り出される@c
1793 オブジェクトではないもの) の太さが同様の方法で変更されるかもしれません。
1798 @translationof Placement of objects
1809 @translationof Automatic behavior
1811 @cindex within-staff objects (譜内部オブジェクト)
1812 @cindex outside-staff objects (譜内部オブジェクト)
1813 @cindex objects, within-staff (譜内部オブジェクト)
1814 @cindex objects, outside-staff (譜外部オブジェクト)
1816 音楽記譜法には譜に属するオブジェクトがいくつかあり、@c
1817 他のオブジェクトは譜の外側に置かれるべきです。@c
1818 それらはそれぞれ譜内部オブジェクトと譜外部オブジェクトと呼ばれます。
1821 -- 符頭、符幹、臨時記号などです。@c
1822 通常、それらの位置は音楽自体によって決定されます
1823 -- 譜内部オブジェクトは譜のある特定の線と同じ垂直位置に置かれたり、@c
1824 そこに置かれるべき他のオブジェクトにくっつけられたりします。@c
1825 近接する和音の中にある符頭、符幹、臨時記号の衝突は普通は自動的に回避されます。@c
1826 これから見ていくように、この自動配置を変更することができるコマンドと@c
1829 譜の外部にあるオブジェクトには、リハーサル記号、テキスト、@c
1831 LilyPond が持つ譜外部オブジェクトの垂直位置のルールは、@c
1832 譜外部オブジェクトをできるだけ譜の近くに、しかし他のオブジェクトと@c
1833 衝突しない程度の近さに置くというものです。@c
1834 以下で示すように、LilyPond はオブジェクトを配置する順番を決定するために
1835 @code{outside-staff-priority} プロパティを使用します。
1837 最初に、LilyPond はすべての譜内部オブジェクトを配置します。@c
1838 それから、@code{outside-staff-priority} に従って譜外部オブジェクトを@c
1840 譜外部オブジェクトは最小の @code{outside-staff-priority} を@c
1841 持つオブジェクトから順番に 1 つずつ並べられ、すでに配置されたオブジェクトと@c
1843 つまり、2 つの譜外部オブジェクトが同じスペースを巡って競合する場合、@c
1844 より小さな @code{outside-staff-priority} を持つオブジェクトが@c
1846 2 つのオブジェクトが同じ @code{outside-staff-priority} を持つ場合、@c
1847 先に発生するオブジェクトが譜の近くに配置されます。
1849 以下の例では、すべてのマークアップ テキストが同じ優先度を持っています
1850 (なぜなら、優先度が明示的にセットされていないからです)。@c
1851 @q{Text3} が自動的に譜の近く、@q{Text2} の@c
1852 すぐ下に納まるよう配置されていることに注意してください。
1854 @cindex markup example (マークアップの例)
1856 @lilypond[quote,fragment,ragged-right,verbatim]
1863 デフォルトでは、譜も互いにできるだけ近くなるよう配置されます
1865 音符が隣接する譜に向かって長く突き出てている場合、譜を離さないと@c
1866 記譜したものが重なり合ってしまう場合にのみ譜は離されます。@c
1867 以下の例は譜の調整によって音符が @q{ぴったりと納まる} 様子を示しています:
1869 @lilypond[quote,ragged-right,verbatim]
1872 \relative { c'4 a, }
1875 \relative { c''''4 a, }
1882 @subsection 譜内部オブジェクト
1883 @translationof Within-staff objects
1885 これまでにコマンド @code{\voiceXXX} がスラー、タイ、運指法記号、@c
1886 符幹の向きに依存する他のすべてに対してどのように影響を与えるかを見てきました
1887 -- @ref{Explicitly instantiating voices} を参照してください。
1888 これらのコマンドは、多声部音楽を記述しているときに上下する旋律を@c
1889 見分けられるようにすることを可能にするために不可欠なものです。@c
1890 しかしながら、この自動機能をオーバライドする必要がある場合もあります。@c
1891 このオーバライドは音楽全体に対しても、個々の音符に対してもできます。@c
1892 この自動機能を制御しているプロパティは各レイアウト オブジェクトの
1893 @code{direction} プロパティです。@c
1894 まず、これは何をするのかを説明し、それから、作成済みのコマンドを@c
1896 それらのコマンドを使うと、一般的な変更のための明示的なオーバライドを@c
1899 スラーやタイのようなレイアウト オブジェクトはカーブを描き、曲がり、@c
1901 符幹やフラグのような他のオブジェクトも上下の向きによって位置が左右します。@c
1902 @code{direction} がセットされているときは、これは自動的に制御されます。
1909 @node direction プロパティ
1910 @unnumberedsubsubsec @code{direction} プロパティ
1911 @translationof The direction property
1916 @cindex neutral (ニュートラル)
1918 以下の例は、小節 1 で符幹のデフォルトの振る舞いを示しています。@c
1919 高い位置にある音符の符幹は下向きで、低い位置にある音符の符幹は上向きです。@c
1920 続いて 4 つの音符の符幹をすべて強制的に下向きにし、4 つの音符の符幹を@c
1921 すべて強制的に上向きにし、最後に 4 つの音符の符幹をデフォルトに戻します。
1923 @cindex Stem, example of overriding (Stem をオーバライドする例)
1924 @cindex direction property, example (direction プロパティの例)
1926 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
1928 \override Stem.direction = #DOWN
1930 \override Stem.direction = #UP
1932 \revert Stem.direction
1936 ここで定数 @code{DOWN} と @code{UP} を使っています。@c
1937 これらはそれぞれ値 @w{@code{-1}} と @code{+1} を持ち、定数の代わりに@c
1938 それらの数値を使うこともできまはす。@c
1939 さらに値 @code{0} を使う場合もあります。@c
1940 この値は符幹では @code{UP} を意味するものとして扱われますが、@c
1941 いくつかのオブジェクトでは @q{center} という意味になります。@c
1942 値 @code{0} を持つ定数に @code{CENTER} があります。
1944 しかしながら、これらの明示的なオーバライドは普通は使われません。@c
1945 もっと簡単で定義済みのコマンドが利用可能だからです。@c
1946 ここに一般的なコマンドの表を挙げます。@c
1947 それぞれのコマンドの意味が明白でない場合は、そのコマンドの意味を述べています。
1949 @multitable @columnfractions .2 .2 .25 .35
1954 @item @code{\arpeggioArrowDown}
1955 @tab @code{\arpeggioArrowUp}
1956 @tab @code{\arpeggioNormal}
1957 @tab 矢印が下に付く、上に付く、付かない
1958 @item @code{\dotsDown}
1960 @tab @code{\dotsNeutral}
1962 @item @code{\dynamicDown}
1963 @tab @code{\dynamicUp}
1964 @tab @code{\dynamicNeutral}
1966 @item @code{\phrasingSlurDown}
1967 @tab @code{\phrasingSlurUp}
1968 @tab @code{\phrasingSlurNeutral}
1969 @tab Note: スラー コマンドとは別になります
1970 @item @code{\slurDown}
1972 @tab @code{\slurNeutral}
1974 @item @code{\stemDown}
1976 @tab @code{\stemNeutral}
1978 @item @code{\textSpannerDown}
1979 @tab @code{\textSpannerUp}
1980 @tab @code{\textSpannerNeutral}
1981 @tab スパナとして挿入されるテキストが譜の下/上にくる
1982 @item @code{\tieDown}
1984 @tab @code{\tieNeutral}
1986 @item @code{\tupletDown}
1987 @tab @code{\tupletUp}
1988 @tab @code{\tupletNeutral}
1992 これらのコマンドで中立/通常の位置に戻すコマンドは @code{\revert} を@c
1993 用いることで実装されていて、前に @code{\once} が付いて @strong{いない}
1995 @code{\override} を用いて実装されているコマンドの効果を単一のタイミング@c
1996 に限定したいのであれば、明示的なオーバライドの場合と同様に、@c
1997 コマンドの前に @code{\once} を配置します。
2000 @unnumberedsubsubsec 運指
2001 @translationof Fingering
2003 @cindex fingering, placement (運指法記号の配置)
2004 @cindex fingering, chords (和音の運指法記号)
2006 単一の音符に対する運指法記号の配置も @code{direction} プロパティによって@c
2007 制御できますが、@code{direction} を変更しても和音の運指法記号は影響を@c
2009 これから見ていくように、和音の中の個々の音符の運指法記号を制御するための@c
2011 このコマンドを使うことで運指法記号を各音符の上、下、左、右に@c
2014 まず、単一の音符の運指法記号に対する @code{direction} を効果を示します。@c
2015 最初の小節はデフォルト状態で、その後で @code{DOWN} と @code{UP} を@c
2018 @cindex Fingering, example of overriding (Fingering をオーバライドする例)
2019 @cindex direction property, example (direction プロパティの例)
2021 @lilypond[quote,verbatim]
2023 c''4-5 a-3 f-1 c'-5 |
2024 \override Fingering.direction = #DOWN
2026 \override Fingering.direction = #UP
2031 しかしながら、@code{direction} プロパティをオーバライドすることは、@c
2032 手動で運指法記号を音符の上または下に配置するもっとも簡単な方法ではありません。@c
2033 運指法番号の前に @code{-} の代わりに @code{_} または @code{^} を使う方が@c
2035 ここで、上記の例にこの方法を用いた例を挙げます:
2037 @cindex fingering example (運指法記号の例)
2039 @lilypond[quote,verbatim]
2041 c''4-5 a-3 f-1 c'-5 |
2047 @code{direction} プロパティは和音では無視されますが、@c
2048 方向を示す接頭辞 @code{_} と @code{^} は機能します。@c
2049 以下で示すように、デフォルトでは、運指法記号は和音の音符の@c
2052 @cindex fingering example (運指法記号の例)
2054 @lilypond[quote,verbatim]
2063 しかし、以下で示すように、運指法番号のすべてまたはいずれかを手動で強制的に@c
2064 和音の上または下に配置するために、これはオーバライドされるかもしれません:
2066 @cindex fingering example (運指法記号の例)
2068 @lilypond[quote,verbatim]
2070 <c''-5 g-3 e-2 c-1>4
2076 @code{\set fingeringOrientations} コマンドを使うことによって和音の中に@c
2077 ある個々の音符の運指法記号の配置をより細かく制御することさえできます。@c
2078 このコマンドのフォーマットは以下のようなものです:
2081 \set fingeringOrientations = #'([up] [left/right] [down])
2085 @code{fingeringOrientations} は @code{Voice} コンテキストのプロパティであり、@c
2086 @code{New_fingering_engraver} によって作成、使用されるため、@c
2087 @code{\set} が使用されます。
2089 このプロパティには 1 つから 3 つまでの値のリストがセットされるかもしれません。@c
2090 このプロパティは運指法記号を上 (リストに @code{up} がある場合)、@c
2091 下 (リストに @code{down} がある場合)、@c
2092 左 (リストに @code{left} がある場合。リストに @code{right} がある場合は右)
2094 逆に配置位置がリストされていない場合、その位置に運指法記号は配置されません。@c
2095 LilyPond はこれらの制約を受け取り、
2096 後に続く和音の音符への運指法記号をうまく配置します。@c
2097 @code{left} と @code{right} は相互排他的であるということに注意してください --
2098 運指法記号は左右のどちらかにしか配置されないか、どちらにも配置されません。
2100 @warning{このコマンドを使って単一の音符への運指法記号の配置を@c
2101 コントロールするには、その音符を山括弧で囲んで単一音符の和音として@c
2106 @cindex fingering example (運指法記号の例)
2107 @cindex @code{\set}, example of using (@code{\set} の使用例)
2108 @cindex fingeringOrientations property, example (fingeringOrientations プロパティの例)
2110 @lilypond[quote,ragged-right,verbatim]
2112 \set fingeringOrientations = #'(left)
2115 \set fingeringOrientations = #'(left)
2117 <c-1 e-2 g-3 b-5>4 |
2118 \set fingeringOrientations = #'(up left down)
2121 \set fingeringOrientations = #'(up left)
2123 <c-1 e-2 g-3 b-5>4 |
2124 \set fingeringOrientations = #'(right)
2131 運指法記号が少し込み合っているように見える場合は、@c
2132 @code{font-size} でサイズを下げることができます。@c
2133 デフォルト値は内部リファレンスの @code{Fingering} オブジェクトのページから
2134 @w{@code{-5}} であることがわかるので、@w{@code{-7}} にセットしてみましょう:
2136 @lilypond[quote,ragged-right,verbatim]
2138 \override Fingering.font-size = #-7
2139 \set fingeringOrientations = #'(left)
2142 \set fingeringOrientations = #'(left)
2144 <c-1 e-2 g-3 b-5>4 |
2145 \set fingeringOrientations = #'(up left down)
2148 \set fingeringOrientations = #'(up left)
2150 <c-1 e-2 g-3 b-5>4 |
2151 \set fingeringOrientations = #'(right)
2159 @subsection 譜外部オブジェクト
2160 @translationof Outside-staff objects
2162 譜外部オブジェクトは自動的に衝突を回避するよう配置されます。@c
2163 配置が最適でない場合に自動配置をオーバライドする方法がいくつかあります。
2166 * outside-staff-priority プロパティ::
2167 * \textLengthOn コマンド::
2169 * グラフィカル オブジェクトのサイズ::
2173 @node outside-staff-priority プロパティ
2174 @unnumberedsubsubsec @code{outside-staff-priority} プロパティ
2175 @translationof The outside-staff-priority property
2177 小さな値の @code{outside-staff-priority} プロパティを持つオブジェクトは@c
2178 譜の近くに配置され、他の譜外部オブジェクトは衝突を避けるのに必要な分だけ@c
2180 @code{outside-staff-priority} は @code{grob-interface} の中で@c
2181 定義されているため、すべてのレイアウト オブジェクトのプロパティです。@c
2182 デフォルトでは、すべての譜内部オブジェクトの @code{outside-staff-priority} は
2183 @code{#f} にセットされていて、譜外部オブジェクトが作成されたときに@c
2184 その譜外部オブジェクトの @code{outside-staff-priority} に適当な数値が@c
2186 以下の表はいくつかの一般的な譜外部オブジェクトのデフォルトの
2187 @code{outside-staff-priority} 値を示しています。
2189 @multitable @columnfractions .3 .3 .3
2190 @headitem レイアウト オブジェクト
2192 @tab 以下のオブジェクトの配置を制御する:
2193 @item @code{RehearsalMark}
2196 @item @code{MetronomeMark}
2199 @item @code{VoltaBracketSpanner}
2201 @tab Volta (番号付きのリピート) の囲み
2202 @item @code{TextScript}
2205 @item @code{MultiMeasureRestText}
2208 @item @code{OttavaBracket}
2210 @tab オッターバ (オクターブを上下させる記号) の囲み
2211 @item @code{TextSpanner}
2214 @item @code{DynamicLineSpanner}
2217 @item @code{BarNumber}
2220 @item @code{TrillSpanner}
2225 これらのうちのいくつかのデフォルトでの配置を示している例を挙げます。
2227 @cindex text spanner (テキスト スパナ)
2228 @cindex ottava bracket (オッターバ囲み)
2230 @funindex \startTextSpan
2231 @funindex \stopTextSpan
2233 @cindex TextSpanner, example of overriding (TextSpanner をオーバライドする例)
2234 @cindex bound-details property, example (bound-details プロパティの例)
2237 @lilypond[quote,fragment,ragged-right,verbatim]
2238 % 以降のテキスト スパナの詳細を設定します
2239 \override TextSpanner.bound-details.left.text
2240 = \markup { \small \bold Slower }
2246 % 強弱テキストとヘアピンを付け加えます
2252 % 強弱テキストを付け加え、強弱ヘアピンを終わらせます
2253 c''4\ff c'' \stopTextSpan |
2259 この例はテキスト スパナ -- 音楽の上に置かれる延長線付きのテキスト -- の@c
2261 スパナは @code{\startTextSpan} コマンドから
2262 @code{\stopTextSpan} コマンドまで延び、テキストのフォーマットは
2263 @code{\override TextSpanner} コマンドによって定義されます。@c
2264 詳細は @ruser{テキスト スパナ} を参照してください。
2266 この例はさらにオッターバ囲みを作成する方法についても示しています。
2268 @cindex tweaking bar number placement (小節番号の配置を調節する)
2269 @cindex bar numbers, tweaking placement (小節番号の配置を調節する)
2270 @cindex tweaking metronome mark placement (メトロノーム記号の配置を調節する)
2271 @cindex metronome mark, tweaking placement (メトロノーム記号の配置を調節する)
2272 @cindex tweaking rehearsal mark placement (リハーサル記号の配置を調節する)
2273 @cindex rehearsal marks, tweaking placement (リハーサル記号の配置を調節する)
2275 @code{outside-staff-priority} のデフォルト値による配置が@c
2276 あなたの望みに合わない場合、いずれかのオブジェクトの優先度を@c
2277 オーバライドすることになるかもしれません。@c
2278 上記の例で、オッターバ囲みをテキスト スパナの下に配置したいとします。@c
2279 すべきことは、@code{OttavaBracket} は @code{Staff} コンテキストの中に@c
2280 作成されるということを思い出し、@code{OttavaBracket} の優先度を@c
2281 内部リファレンスか上記の表で調べて、それを @code{TextSpanner} の値よりも@c
2284 @cindex TextSpanner, example of overriding (TextSpanner をオーバライドする例)
2285 @cindex bound-details property, example (bound-details プロパティの例)
2288 @lilypond[quote,fragment,ragged-right,verbatim]
2289 % 以降のテキスト スパナの詳細を設定します
2290 \override TextSpanner.bound-details.left.text
2291 = \markup { \small \bold Slower }
2294 % 以降のオッターバ囲みをテキスト スパナの下に配置します
2295 \once \override Staff.OttavaBracket.outside-staff-priority = #340
2307 c''4\ff c'' \stopTextSpan |
2314 -- 特に、小節番号、メトロノーム記号、それにリハーサル記号 --
2315 はデフォルトでは @code{Score} コンテキストの中にあるため、@c
2316 それらのプロパティをオーバライドする場合は適切なコンテキストを@c
2317 指定する必要があることに注意してください。
2319 @cindex slurs and outside-staff-priority (スラーと outside-staff-priority)
2320 @cindex slurs and articulations (スラーとアーティキュレーション)
2321 @cindex articulations and slurs (アーティキュレーションとスラー)
2323 スラーはデフォルトでは譜内部オブジェクトに分類されています。@c
2324 しかしながら、譜の上部に配置された音符に付くスラーは@c
2326 このことは、スラーがまず最初に配置されるため、アーティキュレーションなどの@c
2327 譜外部オブジェクトをあまりにも高い位置に押し上げる可能性があります。@c
2328 アーティキュレーションの @code{avoid-slur} プロパティに
2329 @code{'inside} をセットすることでアーティキュレーションを@c
2330 スラーよりも内側に配置することができます。@c
2331 しかし、@code{avoid-slur} プロパティはアーティキュレーションの
2332 @code{outside-staff-priority} が @code{#f} にセットされている場合にのみ@c
2334 代替手段として、スラーの @code{outside-staff-priority} に数値を@c
2335 セットすることによって、スラーを他の譜外部オブジェクトとともに
2336 @code{outside-staff-priority} 値に従って配置することができます。@c
2337 ここで、2 つの方法の効果を示す例を挙げます:
2339 @lilypond[quote,verbatim]
2341 c4( c^\markup { \tiny \sharp } d4.) c8 |
2343 \once \override TextScript.avoid-slur = #'inside
2344 \once \override TextScript.outside-staff-priority = ##f
2345 c4^\markup { \tiny \sharp } d4.) c8 |
2346 \once \override Slur.outside-staff-priority = #500
2347 c4( c^\markup { \tiny \sharp } d4.) c8 |
2351 @code{outside-staff-priority} は、個々のオブジェクトの垂直方向の配置を@c
2352 制御するために使用することもできます。@c
2353 しかしながら、その結果は常に望み通りになるわけではありません。@c
2354 @ref{自動配置} にある例で @qq{Text3} を @qq{Text4} の上に@c
2356 すべきことは @code{TextScript} の優先度を内部リファレンスか上記の表で調べて、@c
2357 @qq{Text3} の優先度を大きくすることです:
2359 @cindex TextScript, example of overriding (TextScript をオーバライドする例)
2360 @cindex outside-staff-priority property, example (outside-staff-priority プロパティの例)
2362 @lilypond[quote,fragment,ragged-right,verbatim]
2365 \once \override TextScript.outside-staff-priority = #500
2370 これはたしかに @qq{Text3} を @qq{Text4} の上に配置しています。@c
2371 しかし、@qq{Text3}を @qq{Text2} の上に配置して、@c
2372 @qq{Text4} を押し下げてもいます。@c
2373 おそらく、これはそれほど望ましい結果ではないでしょう。@c
2374 本当に望んでいることは、すべての注釈を@c
2375 譜の上に譜から同じ距離だけ離して配置することです。@c
2376 そうするには明らかに、テキストのためにもっと広いスペースを確保するために、@c
2377 音符を水平方向に広げる必要があります。@c
2378 これは @code{\textLengthOn} コマンドを用いることで達成できます。
2380 @node \textLengthOn コマンド
2381 @unnumberedsubsubsec @code{\textLengthOn} コマンド
2382 @translationof The \textLengthOn command
2384 @cindex notes, spreading out with text (テキストに合わせて音符の間隔を広げる)
2386 @funindex \textLengthOn
2387 @funindex \textLengthOff
2389 デフォルトでは、音楽のレイアウトが考慮されている限り、@c
2390 マークアップによって作り出されるテキストは水平方向のスペースと関係しません。@c
2391 @code{\textLengthOn} コマンドはこの動作を逆にして、@c
2392 テキストの配置に便宜をはかる必要がある限り、音符の間隔を広げます:
2395 @lilypond[quote,fragment,ragged-right,verbatim]
2396 \textLengthOn % 音符の間隔を広げてテキストに揃えます
2403 デフォルトの動作に戻すためのコマンドは @code{\textLengthOff} です。@c
2404 効果を与えるのが単一の音楽タイミングであれば、@code{\textLengthOn}
2405 に @code{\once} を付ける方法もあります。
2407 @cindex markup text, allowing collisions (マークアップ テキストの衝突を許可する)
2409 マークアップ テキストは譜の上に突き出している音符を避けます。@c
2410 このことが望ましくない場合、優先度を @code{#f} にセットすることによって@c
2411 上方向への自動再配置を Off にすることになるかもしれません。@c
2412 ここで、マークアップ テキストがそのような音符とどのように相互作用するかを@c
2415 @cindex TextScript, example of overriding (TextScript をオーバライドする例)
2416 @cindex outside-staff-priority property, example (outside-staff-priority プロパティの例)
2419 @lilypond[quote,ragged-right,verbatim]
2421 % このマークアップは短いため衝突は起きません
2425 % このマークアップは長くて納まりきらないため、上に押し上げられます
2430 \once \override TextScript.outside-staff-priority = ##f
2431 c,,2^"Long Text " c'' |
2435 \once \override TextScript.outside-staff-priority = ##f
2436 \textLengthOn % そして textLengthOn を ON にします
2437 c,,2^"Long Text " % 後ろにスペースが付け加えられます
2444 @unnumberedsubsubsec 強弱記号の配置
2445 @translationof Dynamics placement
2447 @cindex tweaking dynamics placement (強弱記号の配置を調整する)
2448 @cindex dynamics, tweaking placement (強弱記号の配置を調整する)
2450 通常、強弱記号は譜の下に配置されます。@c
2451 しかしながら、@code{\dynamicUp} コマンドを使うことで上に配置される@c
2453 強弱記号は、その記号が付いている音符と垂直方向の関係で配置され、@c
2454 フレージング スラーや小節番号などの譜内部オブジェクトのすべてよりも@c
2455 下 (あるいは上) に配置されます。@c
2457 到底受け入れられない結果を生み出す可能性があります:
2459 @lilypond[quote,ragged-right,verbatim]
2465 bes4.~\f\< \( bes4 bes8 des4\ff\> c16 bes\! |
2466 ees,2.~\)\mf ees4 r8 |
2470 しかしながら、音符とそれに付けられた強弱記号が互いに近い場合、@c
2471 自動配置は後の方にある強弱記号を譜から離すことによって衝突を避けます。@c
2472 しかし、以下のかなり不自然な例が示すように、@c
2473 それは最適な配置ではないかもしれません:
2475 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
2481 @q{実際} の音楽で同じような状況があった場合、音符の間隔をもう少し広げて、@c
2482 すべての強弱記号が譜から垂直方向に同じだけ離れるようにする方が@c
2484 マークアップ テキストの場合は @code{\textLengthOn} コマンドを@c
2485 用いることによってそうすることができますが、@c
2486 強弱記号には等価のコマンドがありません。@c
2487 そのため、@code{\override} コマンドを用いてそれを達成する方法を@c
2490 @node グラフィカル オブジェクトのサイズ
2491 @unnumberedsubsubsec グラフィカル オブジェクトのサイズ
2492 @translationof Grob sizing
2494 @cindex grob sizing (グラフィカル オブジェクトのサイズを決定する)
2495 @cindex sizing grobs (グラフィカル オブジェクトのサイズを決定する)
2497 まず最初に、グラフィカル オブジェクトのサイズがどのように決定されるかを@c
2499 すべてのグラフィカル オブジェクトの内部では参照ポイントが定義され、@c
2500 それはそれらの親オブジェクトとの相対位置を決定するために使用されます。@c
2501 このポイントは親オブジェクトから垂直方向に @code{X-offset}、@c
2502 垂直方向に @code{Y-offset} 離れた位置になります。@c
2503 オブジェクトの水平方向の広がりは数値のペア @code{X-extent} で与えられ、@c
2504 そのペアはオブジェクトの左端と右端の参照ポイントとの相対関係について@c
2506 垂直方向の広がりも同様に数値のペア @code{Y-extent} によって与えられます。@c
2507 これらは @code{grob-interface} をサポートする@c
2508 すべてのグラフィカル オブジェクトが持つプロパティです。
2510 @cindex @code{extra-spacing-width}
2512 デフォルトでは、譜外部オブジェクトには 0 の幅が与えられているため、@c
2514 これは @code{extra-spacing-width} に @code{'(+inf.0 . -inf.0)} を@c
2515 セットすることによって、左端の広がりにプラス無限大、右端の広がりに@c
2516 マイナス無限大を付け加えるというトリックによって達成されています。@c
2517 そのため、譜外部オブジェクトが水平方向で重ならないことを保証するには、@c
2518 @code{extra-spacing-width} の値を @code{'(0 . 0)} に@c
2520 これにより、本当の幅が明らかになります。@c
2521 以下は強弱記号テキストに対してこれを行うコマンドです:
2524 \override DynamicText.extra-spacing-width = #'(0 . 0)
2528 これが前の例で機能するかどうかを見てみましょう:
2530 @cindex DynamicText, example of overriding (DynamicText をオーバライドする例)
2531 @cindex extra-spacing-width property, example (extra-spacing-width プロパティの例)
2533 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
2535 \override DynamicText.extra-spacing-width = #'(0 . 0)
2536 a4\f b\mf c\mp b\p |
2540 確かに強弱記号の再配置をストップさせています。@c
2541 しかし、2 つの問題が残っています。@c
2542 強弱記号を互いにもう少し離すべきであり、それらは譜から@c
2545 @code{extra-spacing-width} を 0 にする代わりに、@c
2547 単位は 2 本の譜線の間隔なので、左端を 1 単位の半分だけ左に移動させ、@c
2548 右端を 1 単位の半分だけ右に移動させると解決になります:
2550 @cindex DynamicText, example of overriding (DynamicText をオーバライドする例)
2551 @cindex extra-spacing-width property, example (extra-spacing-width プロパティの例)
2553 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
2555 % Extend width by 1 staff space
2556 \override DynamicText.extra-spacing-width = #'(-0.5 . 0.5)
2562 しかし、強弱記号が音符に合わせて上下するよりも、@c
2563 同じベースラインで揃っている方が望ましいでしょう。@c
2564 それを行うためのプロパティは @code{staff-padding} であり、@c
2565 後に続くセクションでカバーされています。
2570 @translationof Collisions of objects
2580 @subsection オブジェクトを移動させる
2581 @translationof Moving objects
2583 @cindex moving overlapping objects (重なり合っているオブジェクトを移動させる)
2584 @cindex moving colliding objects (衝突しているオブジェクトを移動させる)
2585 @cindex moving colliding grobs (衝突しているグラフィカル オブジェクトを移動させる)
2586 @cindex objects, moving colliding (衝突しているオブジェクトを移動させる)
2587 @cindex grobs, moving colliding (衝突しているグラフィカル オブジェクトを移動させる)
2589 これを聞いて驚くかもしれませんが、LilyPond は完璧ではありません。@c
2590 いくつかの記譜要素が重なりある可能性があります。@c
2591 これは遺憾なことですが、実際にはごく稀です。@c
2592 通常、オブジェクトを移動させる必要性は読みやすさや美しさのためです
2593 -- オブジェクトの周りにもう少しスペースを多く/少なくとった方が@c
2596 記譜要素の重なりを解決する主要なアプローチが 3 つあります。@c
2597 それらは以下の順番で考慮されるべきです:
2601 重なり合っているオブジェクトの 1 つの @strong{direction} を
2602 @ref{譜内部オブジェクト} でリストアップした内部オブジェクトのための@c
2603 定義済みコマンドを用いて変更することになるかもしれません。@c
2604 符幹、スラー、連桁、タイ、強弱記号、テキスト、@c
2605 連符はこの方法で容易に再配置できるかもしれません。@c
2606 この方法の限界は配置の仕方の選択肢が 2 つしかないことであり、@c
2610 LilyPond がレイアウト オブジェクトを配置するときに使用する@c
2611 @strong{オブジェクト プロパティ}を @code{\override} を用いて@c
2613 オブジェクト プロパティに変更を加えることの利点は、@c
2614 (a) スペースをとる必要がある場合に他のいくつかのオブジェクトは@c
2616 (b) 1 回のオーバライドを同じオブジェクト タイプの@c
2617 インスタンスすべてに適用することができます。@c
2618 変更するプロパティには以下のものが含まれます:
2625 これはすでに詳しくカバーされています --
2626 @ref{譜内部オブジェクト} を参照してください。
2629 @code{padding}, @code{left-padding},
2630 @code{right-padding}, @code{staff-padding}
2632 @cindex padding (パディング)
2633 @cindex left-padding property (left-padding プロパティ)
2634 @cindex padding property (padding プロパティ)
2635 @cindex right-padding property (right-padding プロパティ)
2636 @cindex staff-padding property (staff-padding プロパティ)
2638 あるオブジェクトが配置されるとき、そのオブジェクトの
2639 @code{padding} プロパティが、そのオブジェクトとそのオブジェクトに@c
2640 最も隣接するオブジェクトの端との間に置かれる間隔を指定します。@c
2641 @strong{配置される最中}のオブジェクトの @code{padding} 値が@c
2642 使用されるということに注意してください。@c
2643 すでに配置されたオブジェクトの @code{padding} 値は無視されます。@c
2644 @code{padding} によって指定された間隔は @code{side-position-interface} を@c
2645 サポートするオブジェクトすべてに適用することができます。
2647 臨時記号のグループの配置は、@code{padding} の代わりに、@code{left-padding} と
2648 @code{right-padding} によって制御されます。@c
2649 これらのプロパティは @code{AccidentalPlacement} オブジェクトの中にあり、@c
2651 @strong{Staff} コンテキストの中にあります。@c
2652 譜刻プロセスでは、符頭が最初に譜刻され、臨時記号 (がある場合は) が@c
2655 @code{right-padding} プロパティによって指定されます。@c
2656 そのため、@code{AccidentalPlacement} オブジェクトの
2657 @code{right-padding} プロパティだけが臨時記号の配置に影響を与えます。
2659 @code{staff-padding} プロパティは @code{padding} プロパティと@c
2661 @code{padding} プロパティは、@code{side-position-interface} を@c
2662 サポートするオブジェクトとそれに最隣接する他のオブジェクト
2663 (一般には音符や譜線) との間のスペースの最小量を制御します。@c
2664 一方、@code{staff-padding} は常に譜の外側に配置される@c
2665 レイアウト オブジェクトにのみ適用されます --
2666 これは譜の外側に配置されるオブジェクトと譜の間に挿入されるべき@c
2668 @code{staff-paddin} は譜ではなく音符との相対関係で配置されるオブジェクトには@c
2669 影響を与えないということに注意してください。@c
2670 そのようなオブジェクトに対して @code{staff-padding} のオーバライドを@c
2671 行ったとしてもエラーは起きないかもしれませんが、無視されます。
2673 あなたが再配置しようとしているオブジェクトに対して求められる
2674 @code{padding} プロパティはどれなのかを見つけるには、内部リファレンスに@c
2675 戻ってそのオブジェクトのプロパティを調べる必要があります。@c
2676 @code{padding} プロパティはあなたが再配置しようとしているオブジェクトの中には@c
2677 無いかもしれないということに注意してください。@c
2678 その場合は、そのオブジェクトに関係があるオブジェクトを調べてください。
2680 すべての @code{padding} 値は譜スペースで測られます。@c
2681 たいていのオブジェクトでは、この値はデフォルトで約 1.0 か@c
2682 それ以下にセットされています (それぞれのオブジェクトで値はさまざまです)。@c
2683 間隔を大きく (あるいは小さく) する必要がある場合、@c
2684 その値はオーバライドされるかもしれません。
2687 @code{self-alignment-X}
2689 @cindex self-alignment-X property (self-alignment-X プロパティ)
2691 このプロパティを使うことで、親オブジェクトの参照ポイントに従って、@c
2692 オブジェクトを左、右、中央に揃えることができます。@c
2693 このプロパティは @code{self-alignment-interface} をサポートする@c
2694 オブジェクトすべてに対して使用することができます。@c
2695 一般に、テキストを保持するオブジェクトです。@c
2696 値は @code{Left}, @code{RIGHT}, @code{CENTER} です。@c
2697 代替手段として、@w{@code{-1}} から @code{+1} までの数値を@c
2699 @code{-1} は左揃えであり、@code{+1} は右揃え、@c
2700 その間の数値は左揃えから右揃えへのテキストを移動させます
2701 (訳者: @code{-0.5} であれば、左揃えと中央揃えの中間ということ)。@c
2702 @code{1} よりも大きな数値を指定することでテキストをさらに左へ、@c
2703 @w{@code{-1}} よりも小さな数値を指定することでテキストを@c
2704 さらに右へ移動させることができます。@c
2705 この値を @code{1} 増減することによる移動量はそのテキストの長さの半分です。
2708 @code{extra-spacing-width}
2710 @cindex extra-spacing-width property (extra-spacing-width プロパティ)
2712 このプロパティは @code{item-interface} をサポートするオブジェクトすべてで@c
2714 このプロパティは 2 つの数値をとり、最初の数値はオブジェクトの左側に@c
2715 余白を追加し、2 番目の数値はオブジェクトの右側に余白を追加します。@c
2716 負値はオブジェクトの端を左に移動させ、正値は右に移動させます。@c
2717 そのため、オブジェクトを広くするには、最初の数値を負値にして、@c
2718 2 番目の数値を正値にする必要があります。@c
2719 すべてのオブジェクトが両方の数値を遵守するわけではないということに@c
2721 例えば、@code{Accidental} オブジェクトは最初の数値 (左端) にしか@c
2725 @code{staff-position}
2727 @cindex staff-position property (staff-position プロパティ)
2729 @code{staff-position} は @code{staff-symbol-referencer-interface} の@c
2731 これは、譜との相対関係で配置されるオブジェクトによってサポートされます。@c
2732 このプロパティはオブジェクトの垂直方向の位置を、譜の中央にある譜線から@c
2733 譜スペースの半分を単位として、指定します。@c
2734 このプロパティは複数小節に亘る休符、タイ、異なるボイスの中にある音符といった@c
2735 レイアウト オブジェクトの衝突を解決する場合に有用です。
2740 @cindex force-hshift property (force-hshift プロパティ)
2742 和音の中で近接して配置された音符や異なるボイスの中にあって同時に起こる音符は、@c
2743 符頭の衝突を避けるために、2 つ (場合によってはそれ以上) の列に@c
2745 この列は音符列と呼ばれ、その列に音符をレイアウトするために @code{NoteColumn}
2748 @code{force-hshift} プロパティは @code{NoteColumn} のプロパティです
2749 (実際には @code{note-column-interface} のプロパティです)。@c
2750 このプロパティを変更することで音符列を、音符列特有の単位 --
2751 すなわち、最初のボイスの中にある音符の符頭の幅 -- に従って、@c
2754 @code{\shiftOn} コマンド
2755 (@ref{ボイスを明示的にインスタンス化する} を参照してください)
2756 が音符の衝突を解決できないような複雑な状況で使用されるべきです。@c
2757 この目的のためには、@code{extra-offset} プロパティを用いるよりも
2758 @code{force-hshift} プロパティを用いる方が好ましいです。@c
2759 なぜなら、譜スペースを単位とした距離を算出する必要が無く、@c
2760 @code{NoteColumn} の内外に音符を移動させることは符頭のマージといった@c
2766 最後に、他の方法がすべて失敗した場合、オブジェクトを手動で譜の中央線からの@c
2767 垂直方向の相対位置に従って、あるいは新たに設定した位置との距離に従って、@c
2768 再配置することになるかもしれません。@c
2769 この方法の欠点は、再配置のための正確な値を算出する必要がある --
2770 しばしば、その算出はそれぞれのオブジェクトに対して個々に、トライ&エラーで@c
2771 行われます -- 必要があるということ、さらに、この方法による移動は
2772 LilyPond が他のオブジェクトをすべて配置した後に行われるため、@c
2773 ユーザはその結果として起こるかもしれない衝突を@c
2774 すべて回避する責任があるということです。@c
2775 しかし、この方法の最大の問題点は、音楽が後で変更された場合に、@c
2776 再配置用の値を再び算出する必要があるということです。@c
2777 このタイプの手動再配置のために使用されるプロパティは以下のようなものです:
2782 @cindex extra-offset property (extra-offset プロパティ)
2784 このプロパティは @code{grob-interface} をサポートするレイアウト オブジェクトの@c
2786 このプロパティはペアになった数値をとり、それぞれの数値は@c
2787 水平方向と垂直方向の移動を指定します。@c
2788 負値はオブジェクトを左または下へ移動させます。@c
2790 この移動はオブジェクトの譜刻が完了した後に行われるため、あるオブジェクトを@c
2791 任意の位置へ、他のオブジェクトに影響を与えることなく、再配置することができます。
2795 @cindex positions property (positions プロパティ)
2797 このプロパティは、連桁、スラー、連符の傾きと高さを手動で調節するために@c
2799 このプロパティはペアになった数値をとり、それぞれの数値は連桁、@c
2800 スラーなどの左端と右端の位置を譜の中央線との距離で指定します。@c
2802 けれども、スラーとフレージング スラーを任意の値で@c
2803 再配置することはできないということに注意してください。@c
2804 LilyPond はまずスラーが取り得る位置のリストを生成し、それからデフォルトでは
2805 @qq{最良に見える} スラーを探します。@c
2806 @code{positions} がオーバライドされていた場合、@c
2807 そのリストの中からリクエストされた位置に最も近いスラーが選択されます。
2812 あるオブジェクトがこれらのプロパティすべてを持っているわけではありません。@c
2813 内部リファレンスに行き、そのオブジェクトではどのプロパティが@c
2816 ここで、衝突に関係しそうなオブジェクトをリスト アップします。@c
2817 内部リファレンスを調べるためのオブジェクト名を付けるので、@c
2818 それらのオブジェクトを移動させるのに使うプロパティを見つけ出すのに@c
2821 @multitable @columnfractions .5 .5
2822 @headitem オブジェクト タイプ @tab オブジェクト名
2823 @item アーティキュレーション (Articulation) @tab @code{Script}
2824 @item 連桁 (Beam) @tab @code{Beam}
2825 @item 強弱記号 (Dynamic) (垂直方向) @tab @code{DynamicLineSpanner}
2826 @item 強弱記号 (Dynamic) (水平方向) @tab @code{DynamicText}
2827 @item 運指法記号 (Fingering) @tab @code{Fingering}
2828 @item リハーサル / テキスト記号 (Rehearsal / Text mark) @tab @code{RehearsalMark}
2829 @item スラー (Slur) @tab @code{Slur}
2830 @item テキスト -- つまり、@code{^"text"} (Text) @tab @code{TextScript}
2831 @item タイ (Tie) @tab @code{Tie}
2832 @item 連符 (Tuplet) @tab @code{TupletBracket}
2837 @subsection 表記の重なりを修正する
2838 @translationof Fixing overlapping notation
2840 今度は、前のセクションで扱ったプロパティが記譜の重なりを解決する手助けを@c
2845 * right-padding プロパティ::
2846 * staff-padding プロパティ::
2847 * self-alignment-X プロパティ::
2848 * staff-position プロパティ::
2849 * extra-offset プロパティ::
2851 * force-hshift プロパティ::
2856 @unnumberedsubsubsec @code{padding} プロパティ
2857 @translationof The padding property
2859 @cindex padding (パディング)
2860 @cindex fixing overlapping notation (記譜要素の重なりを修正する)
2861 @cindex overlapping notation (重なり合っている記譜要素)
2863 @code{padding} プロパティに値をセットすることによって、音符とその上または下に@c
2864 譜刻される記号との間の距離を増減することができます。
2866 @cindex Script, example of overriding (Script をオーバライドする例)
2867 @cindex padding property, example (padding プロパティの例)
2869 @lilypond[quote,fragment,verbatim]
2871 \override Script.padding = #3
2875 @cindex MetronomeMark, example of overriding (MetronomeMark をオーバライドする例)
2876 @cindex padding property, example (padding プロパティの例)
2879 @lilypond[quote,fragment,verbatim]
2880 % これは機能しません。この下を見てください
2881 \override MetronomeMark.padding = #3
2885 \override Score.MetronomeMark.padding = #3
2890 2 番目の例では、ある特定のオブジェクトを扱うのはどのコンテキストなのかを@c
2891 突き止めることが重要であるということに注意してください。@c
2892 @code{MetronomeMark} オブジェクトは @code{Score} コンテキストの中で@c
2893 処理されるため、@code{Voice} コンテキストの中でのプロパティの変更は@c
2895 更に詳細を知りたければ、@ruser{Modifying properties} を参照してください。
2897 @code{outside-staff-priority} に従って配置されているオブジェクトの並びの中の@c
2898 あるオブジェクトの @code{padding} プロパティが増やされた場合、@c
2899 そのオブジェクトとそれよりも外側にあるすべてオブジェクトが移動させられます。
2902 @node right-padding プロパティ
2903 @unnumberedsubsubsec @code{right-padding} プロパティ
2904 @translationof The right-padding property
2906 @cindex right-padding property (right-padding プロパティ)
2908 @code{right-padding} プロパティは臨時記号とそれが適用される音符との間の@c
2910 このプロパティを変更することは必ずしも必要ではありませんが、@c
2911 微分音の音楽で使われる特殊な臨時記号の図柄や図柄の組み合わせに対して@c
2912 デフォルトのスペースが適切ではない場合に必要となるかもしれません。@c
2913 臨時記号のステンシルを望みのシンボルを保持するマークアップにオーバライド@c
2916 @cindex Accidental, example of overriding (Accidental をオーバライドする例)
2917 @cindex text property, example (text プロパティの例)
2918 @cindex stencil property, example (stencil プロパティの例)
2919 @cindex AccidentalPlacement, example of overriding (AccidentalPlacement をオーバライドする例)
2920 @cindex right-padding property, example (right-padding プロパティの例)
2923 @lilypond[quote,ragged-right,verbatim]
2924 sesquisharp = \markup { \sesquisharp }
2927 % これは 1.5 倍シャープを譜刻しますが、スペースが小さすぎます
2928 \once \override Accidental.stencil = #ly:text-interface::print
2929 \once \override Accidental.text = #sesquisharp
2932 \once \override Score.AccidentalPlacement.right-padding = #0.6
2933 \once \override Accidental.stencil = #ly:text-interface::print
2934 \once \override Accidental.text = #sesquisharp
2940 これは必然的に臨時記号のステンシルをオーバライドすることになります。@c
2941 このオーバライドについては後々までカバーされません。@c
2942 ステンシル タイプは手続きでなければならず、ここでは @code{Accidental} の
2943 @code{text} プロパティの内容
2944 -- 内容には 1.5 倍シャープがセットされています
2945 -- を譜刻するように変更されています。@c
2946 それらの記号は @code{right-padding} のオーバライドによって@c
2947 符頭からさらに遠くへ移動させられています。
2952 @node staff-padding プロパティ
2953 @unnumberedsubsubsec @code{staff-padding} プロパティ
2954 @translationof The staff-padding property
2956 @cindex aligning objects on a baseline (オブジェクトをベースラインに揃える)
2957 @cindex objects, aligning on a baseline (オブジェクトをベースラインに揃える)
2959 @code{staff-padding} を使うことで、強弱記号などのオブジェクトを、@c
2960 それらが取り付けられる音符の位置に依存した高さではなく、@c
2961 譜上のある固定した高さのベースラインに揃えることができます。@c
2962 このプロパティは @code{DynamicText} のプロパティではなく、@c
2963 @code{DynamicSpanner} のプロパティです。@c
2964 この理由は、このベースラインは延長スパナを含む @strong{すべて} の強弱記号に@c
2966 そのため、これは以前のセクションでの例の中にある強弱記号を@c
2969 @cindex DynamicText, example of overriding (DynamicText をオーバライドする例)
2970 @cindex extra-spacing-width property, example (extra-spacing-width プロパティの例)
2971 @cindex DynamicLineSpanner, example of overriding (DynamicLineSpanner をオーバライドする例)
2972 @cindex staff-padding property, example (staff-padding プロパティの例)
2975 @lilypond[quote,fragment,ragged-right,verbatim]
2978 \override DynamicText.extra-spacing-width = #'(-0.5 . 0.5)
2979 % 強弱記号を譜から 2 単位上のベース ラインに揃えます
2980 \override DynamicLineSpanner.staff-padding = #2
2981 \relative { a'4\f b\mf c\mp b\p }
2985 @node self-alignment-X プロパティ
2986 @unnumberedsubsubsec @code{self-alignment-X} プロパティ
2987 @translationof The self-alignment-X property
2989 以下の例はこのプロパティが、運指法記号オブジェクトの右端を親の音符の@c
2991 弦楽器の運指法記号オブジェクトと音符の符幹とのこのプロパティが衝突を@c
2994 @cindex StringNumber, example of overriding (StringNumber をオーバライドする例)
2995 @cindex self-alignment-X property, example (self-alignment-X プロパティの例)
2997 @lilypond[quote,fragment,ragged-right,verbatim]
3000 \once \override StringNumber.self-alignment-X = #RIGHT
3005 @node staff-position プロパティ
3006 @unnumberedsubsubsec @code{staff-position} プロパティ
3007 @translationof The staff-position property
3009 @cindex object collision within a staff (譜内部でのオブジェクトの衝突)
3011 あるボイスの中にある複数小節に亘る休符は他のボイスの中にある音符と@c
3013 このような休符は小節線と小節線の間の中央に譜刻されるため、@c
3014 LilyPond がそれと衝突するかもしれない音符を突き止めるのは非常に困難です。@c
3015 なぜなら、現在の音符間それに音符-休符間の衝突対応は、@c
3016 同時に起こる音符と休符に対してのみ行われるからです。@c
3017 以下に、このタイプの衝突の例を挙げます:
3019 @lilypond[quote,verbatim,ragged-right]
3020 << \relative { c'4 c c c } \\ { R1 } >>
3023 ここでの最良の解決策は、複数小節に亘る休符を下へ移動させることです。@c
3024 なぜなら、その休符はボイス 2 の中にあるからです。@c
3025 @code{\voiceTwo} (すなわち、@code{<<@{...@} \\ @{...@}>>} 構造の
3026 2 番目のボイス) のデフォルト状態では、@c
3027 @code{MultiMeasureRest} の @code{staff-position} は @code{-4} に@c
3029 そのため、そのプロパティを、例えば半譜スペース 4 つ分押し下げるには、@c
3030 @w{@code{-8}} に変更する必要があります。
3032 @cindex MultiMeasureRest, example of overriding (MultiMeasureRest をオーバライドする例)
3033 @cindex staff-position property, example (staff-position プロパティの例)
3035 @lilypond[quote,verbatim,ragged-right]
3037 \relative { c'4 c c c }
3039 \override MultiMeasureRest.staff-position = #-8
3044 これは、例えば @code{extra-offset} を使うよりも良い解決方法です。@c
3045 なぜなら、その休符の上に加線が自動的に挿入されるからです。
3048 @node extra-offset プロパティ
3049 @unnumberedsubsubsec @code{extra-offset} プロパティ
3050 @translationof The extra-offset property
3052 @cindex positioning objects (オブジェクトの位置を決定する)
3053 @cindex positioning grobs (グラフィカル オブジェクトの位置を決定する)
3054 @cindex objects, positioning (オブジェクトの位置を決定する)
3055 @cindex grobs, positioning (グラフィカル オブジェクトの位置を決定する)
3057 @code{extra-offset} プロパティは、あるオブジェクトの水平方向と垂直方向の@c
3060 以下の例では、2 番目の運指法記号が少し左に、そして 1.8 譜スペース下に@c
3063 @cindex Fingering, example of overriding (Fingering をオーバライドする例)
3064 @cindex extra-offset property, example (extra-offset プロパティの例)
3066 @lilypond[quote,fragment,relative=1,verbatim]
3069 \once \override Fingering.extra-offset = #'(-0.3 . -1.8)
3074 @node positions プロパティ
3075 @unnumberedsubsubsec @code{positions} プロパティ
3076 @translationof The positions property
3078 @cindex controlling tuplets, slurs, phrasing slurs, and beams manually (連符、スラー、フレージング スラーそれに連桁を手動で制御する)
3079 @cindex manually controlling tuplets, slurs, phrasing slurs, and beams (連符、スラー、フレージング スラーそれに連桁を手動で制御する)
3080 @cindex tuplet beams, controlling manually (連譜の連桁を手動で制御する)
3081 @cindex slurs, controlling manually (スラーを手動で制御する)
3082 @cindex phrasing slurs, controlling manually (フレージング スラーを手動で制御する)
3083 @cindex beams, controlling manually (連桁を手動で制御する)
3085 @code{positions} プロパティは連符、スラー、フレージング スラー、@c
3086 連桁の位置を手動で制御することができ、それにより傾きも制御できます。
3088 ここで、フレージング スラーとスラーが衝突している例を示します:
3090 @lilypond[quote,verbatim,ragged-right]
3091 \relative { a'8 \( ( a'16 ) a \) }
3094 @cindex PhrasingSlur, example of overriding (PhrasingSlur をオーバライドする例)
3095 @cindex positions property, example (positions プロパティの例)
3098 衝突を解決するために、フレージング スラーの両端を上に移動させます。@c
3099 左端を譜中央線よりも 2.5 譜スペース上に設定し、右端を 4.5 譜スペース上に@c
3100 設定すると、LilyPond は候補の中から両端の位置が最も設定に近いフレージング
3103 @lilypond[quote,verbatim,fragment,ragged-right]
3104 \once \override PhrasingSlur.positions = #'(2.5 . 4.5)
3105 a'8 \( ( a''16 ) a'' \)
3109 しかしながら、スラーの右端を少し下げてみてはどうでしょうか?@c
3110 そうしようとした場合、この方法では実行できないことがわかります。@c
3111 すでに表示されているスラーよりも右端が下がっている候補は無く、@c
3112 そのような場合には @code{positions} は効果を持たないからです。@c
3113 しかしながら、必要があればタイ、スラー、それにフレージング スラーの@c
3114 位置と形状を非常に正確に設定することが @emph{できます}。@c
3115 正確な設定を行う方法は @ruser{Modifying ties and slurs} で学習してください。
3120 @lilypond[quote,verbatim,fragment,ragged-right]
3126 { e''8 e'' e'' e'' e'' e'' e'' e'' f''2 g'' }
3131 { e''8 e'' e'' e'' e'' e'' e'' e'' f''2 g'' }
3137 これは、譜の中央線から 1.81 譜スペース上の位置にある連桁の両端を、例えば、1
3138 に手動で上げることによって解決することができます:
3140 @cindex Beam, example of overriding (Beam をオーバライドする例)
3141 @cindex positions property, example (positions プロパティの例)
3143 @lilypond[quote,verbatim,fragment,ragged-right]
3150 \override Beam.positions = #'(-1 . -1)
3151 e''8 e'' e'' e'' e'' e'' e'' e'' f''2 g''
3157 { e''8 e'' e'' e'' e'' e'' e'' e'' f''2 g'' }
3163 オーバライドの効果は継続して第 2 小節のボイス 1 の 8 分音符にも@c
3165 ボイス 2 の連桁にはまったく適用されていないということに注意してください。
3167 @node force-hshift プロパティ
3168 @unnumberedsubsubsec @code{force-hshift} プロパティ
3169 @translationof The force-hshift property
3171 今や、@ref{私はボイスを聴いている} の最後で挙げた Chopin の例に@c
3172 どのように修正を加えるべきかを知っています。@c
3175 @lilypond[quote,verbatim,fragment,ragged-right]
3176 \new Staff \relative {
3191 最初の和音の内声の音 (つまり、4 番目のボイスにある A-フラット) を上の音符の@c
3193 これを修正するには、下の音符の @code{force-hshift} --
3194 これは @code{NoteColumn} のプロパティです -- を 0 にセットします。@c
3196 2 番目の和音では、F を A-フラットに揃えて、符幹の衝突を避けるために@c
3197 最下段の音符を少し右に移動させるべきでしょう。@c
3198 そうするには、D-フラットの @code{NoteColumn} の @code{force-hshift}
3199 を設定して譜スペースの半分だけ右にずらします。
3200 2 番目の和音の下の方の音符は、上の方の音符のすぐ右に置くのが最良です。@c
3201 そうするには、この音符の @code{force-hshift} を 0.5 にセットします --
3202 つまり、上の方の音符の音符列から符頭の幅の半分だけ右にずらします。
3206 @cindex NoteColumn, example of overriding (NoteColumn をオーバライドする例)
3207 @cindex force-hshift property, example (force-hshift プロパティの例)
3209 @lilypond[quote,verbatim,fragment,ragged-right]
3210 \new Staff \relative {
3217 \once \override NoteColumn.force-hshift = #0.5
3223 \override NoteColumn.force-hshift = #0
3233 @subsection 実際の音楽からの例
3234 @translationof Real music example
3236 調整についてのセクションを、望みの出力を作り出すためにいくつかの調整を@c
3237 必要とするトリッキーな例を処理するときにとられるステップを示すことで@c
3239 この例は、記譜法についての普通ではない問題を解決するための記譜法リファレンスの@c
3240 使い方を示すために慎重に選ばれたものです。@c
3241 この例は一般的な譜刻プロセスを代表するものではありません。@c
3242 ですから、この例の複雑さでやる気を失わないでください!@c
3243 幸いなことに、このように複雑な問題は非常に稀です!
3245 この例は Chopin の Première Ballade, Op. 23 の第 6 - 9 小節からとりました。@c
3246 序盤の Lento から Moderato へと移調する部分です。@c
3247 まず最初に望んでいる出力挙げますが、例があまりにも複雑になり過ぎないように@c
3248 強弱記号、運指法記号、ペダル記号は省きました。
3250 @c The following should appear as music without code
3251 @c This example should not be indexed
3252 @c line-width ensures no break
3254 @lilypond[quote,ragged-right,line-width=6\in]
3255 rhMusic = \relative {
3258 \once \override Tie.staff-position = #3.5
3262 \mergeDifferentlyHeadedOn
3263 \mergeDifferentlyDottedOn
3264 bes2.^\markup { \bold "Moderato" } r8
3270 % マージされる音符の右にある c2 を再配置します
3271 \once \override NoteColumn.force-hshift = #1.0
3272 % c2 をメインの音符列から外したため、
3280 % マージさせるために d2 の符幹を下向きにする必要があります
3283 \tweak Stem.transparent ##t
3291 \mergeDifferentlyHeadedOff
3292 \mergeDifferentlyDottedOff
3297 lhMusic = \relative {
3299 <d g, d>1)\arpeggio |
3306 \new Staff = "RH" <<
3310 \new Staff = "LH" <<
3319 まず、第 3 小節の右手パートには 4 つのボイスが必要であることに注目します。@c
3320 それぞれのボイスは、連桁でつながれた 5 つの 8 分音符、タイで結ばれた C、@c
3321 半音符の D (これは 8 分音符の D とマージされています)、@c
3322 付点 4 分音符の F シャープ (これも同じピッチの 8 分音符とマージされています)
3324 他の部分はすべて単一のボイスなので、最も容易な方法は
3325 4 つのボイスを必要になったときに一時的に導入する方法です。@c
3326 一時的に多声にする方法を忘れてしまったのならば、@c
3327 @ref{私はボイスを聴いている} と @ref{ボイスを明示的にインスタンス化する}
3329 ここでは、多声パッセージに明示的にインスタンス化されたボイスを使うことにします。@c
3330 なぜなら、すべてのボイスが明示的にインスタンス化されている方が、@c
3331 LilyPond はうまく衝突を回避できるからです。
3334 譜構造を Score ブロックの中でセットアップすることから始めて、@c
3335 それで LilyPond がデフォルトでどのような出力を作り出すのか見てみましょう:
3337 @c line-width ensures no break
3339 @lilypond[quote,verbatim,ragged-right,line-width=6\in]
3340 rhMusic = \relative {
3346 % 4 つのボイスの多声セクションの開始
3348 { c,8 d fis bes a } % メイン ボイスの続き
3366 lhMusic = \relative {
3375 \new Staff = "RH" <<
3379 \new Staff = "LH" <<
3389 しかしながら、見た目は満足とは程遠いものです。@c
3390 タイは移調する拍子記号と衝突していて、第 3 小節の連桁の付け方は@c
3391 間違っていて、音符はマージされておらず、いくつかの記譜要素は欠けています。@c
3392 簡単なものから片付けていきましょう。@c
3393 連桁の付け方は手動で連桁を挿入することで修正でき、左手パートのスラーと@c
3394 右手パートのフレージング スラーは簡単に追加できます
3395 -- なぜなら、これらはすべてチュートリアルでカバーされているからです。@c
3396 これらの修正を加えると、以下のようになります:
3398 @c line-width ensures no break
3400 @lilypond[quote,verbatim,ragged-right,line-width=6\in]
3401 rhMusic = \relative {
3407 % 4 つのボイスの多声セクションの開始
3409 { c,8 d fis bes a } % メイン ボイスの続き
3427 lhMusic = \relative {
3436 \new Staff = "RH" <<
3440 \new Staff = "LH" <<
3450 第 2 小節にはアルペジオが含まれていて、2 重の小節線で終わります。@c
3451 この学習マニュアルではこれらのことは言及されてこなかったのに、@c
3453 ここで、記譜法リファレンスに移行する必要があります。@c
3454 索引で @q{arpeggio} と @q{bar line} を探せばすぐに、アルペジオは
3455 @code{\arpeggio} を和音の後に付け加えることによって作り出され、@c
3456 2 重小節線は @code{\bar "||"} コマンドによって作り出されることが@c
3459 次に、タイと拍子記号の衝突を修正する必要があります。@c
3460 これはタイを上に移動させる方法が最善です。@c
3461 オブジェクトの移動については以前に @ref{オブジェクトを移動させる} でカバーしました。@c
3462 そこでは、譜との相対位置で配置されるオブジェクトは、@c
3463 そのオブジェクトの @code{staff-position} プロパティを@c
3464 オーバライドすることによって、移動させることができると述べられています。@c
3465 このプロパティは譜スペースの半分を単位として、譜の中央線からの距離で@c
3467 ですから、以下の以下のオーバライドをタイで結ばれる最初の音符の前に置けば、@c
3468 タイは中央線から 3.5 半譜スペースだけ上の位置に移動させられます:
3470 @code{\once \override Tie.staff-position = #3.5}
3472 これで第 2 小節の修正も完了で、以下のようになります:
3474 @c line-width ensures no break
3476 @lilypond[quote,verbatim,ragged-right,line-width=6\in]
3477 rhMusic = \relative {
3480 \once \override Tie.staff-position = #3.5
3485 % 4 つのボイスの多声セクションの開始
3487 { c,8 d fis bes a } % メイン ボイスの続き
3505 lhMusic = \relative {
3507 <d g, d>1)\arpeggio |
3514 \new Staff = "RH" <<
3518 \new Staff = "LH" <<
3527 第 3 小節 -- Moderato セクションの開始部分 -- に取り掛かります。@c
3528 チュートリアルで @code{\markup} コマンドを使ってボールド体のテキストを@c
3529 付け加える方法を示しましたので、@q{Moderato} をボールド体で付け加えることは@c
3531 しかし、異なるボイスの中にある音符をマージするにはどうするのでしょうか?@c
3532 ここで、助けを求めて記譜法リファレンスに移行する必要があります。@c
3533 記譜法リファレンスで @qq{merge} を探せばすぐに、@c
3534 @ruser{Collision resolution} で符頭や付点の付き方が異なる音符を@c
3535 マージするためのコマンドにたどり着きます。@c
3536 今回の例では、多声部セクションで両方のタイプの音符をマージする
3537 (異なる符頭を持つ音符のマージと、付点の付き方が異なる音符のマージ)
3538 必要があるので、記譜法リファレンスで見つけた情報を使って、以下のコマンド:
3541 \mergeDifferentlyHeadedOn
3542 \mergeDifferentlyDottedOn
3546 を多声部セクションの開始点に置き、以下のコマンド:
3549 \mergeDifferentlyHeadedOff
3550 \mergeDifferentlyDottedOff
3554 をセクションの終了点に置きます。これで、例は以下のようになります:
3556 @c line-width ensures no break
3558 @lilypond[quote,ragged-right,line-width=6\in]
3559 rhMusic = \relative {
3562 \once \override Tie.staff-position = #3.5
3566 bes2.^\markup { \bold "Moderato" } r8
3567 \mergeDifferentlyHeadedOn
3568 \mergeDifferentlyDottedOn
3569 % 4 つのボイスの多声セクションの開始
3571 { c,8 d fis bes a } % メイン ボイスの続き
3585 \mergeDifferentlyHeadedOff
3586 \mergeDifferentlyDottedOff
3591 lhMusic = \relative {
3593 <d g, d>1)\arpeggio |
3600 \new Staff = "RH" <<
3604 \new Staff = "LH" <<
3613 オーバライドは 2 つの F シャープの音符をマージしましたが、@c
3614 2 つの D をマージしませんでした。@c
3616 その答えは記譜法リファレンスの同じセクションにあります
3617 -- マージされる音符は反対向きの符幹を持っていなくてはならず、@c
3618 同じ音符列に 3 つ目の音符がある場合は 2 つの音符をマージさせることは@c
3620 今回の例では、2 つの D は両方とも上向きの符幹を持っていて、@c
3621 3 つ目の音符 -- C -- が存在します。@c
3622 我々は @code{\stemDown} を用いて符幹の向きを変更する方法を知っていて、@c
3623 記譜法リファレンスも C を移動させる方法について述べています --
3624 @code{\shift} コマンドの 1 つを用いてシフトを行います。@c
3625 しかし、どのシフトを行えばよいのでしょうか?@c
3626 C はシフト off のボイス 2 の中にあり、2 つの D はボイス 1 とボイス 3 --
3627 それぞれ、シフト off とシフト on -- の中にあります。@c
3628 ですから、C が 2 つの D と衝突するのを避けるために、@c
3629 @code{\shiftOnn} を用いて C を更にシフトさせる必要があります。@c
3630 これらの変更を加えると、以下のようになります:
3632 @cindex Tie, example of overriding (Tie をオーバライドする例)
3633 @cindex staff-position property, example (staff-position プロパティの例)
3635 @c line-width ensures no break
3637 @lilypond[quote,verbatim,ragged-right,line-width=6\in]
3638 rhMusic = \relative {
3641 \once \override Tie.staff-position = #3.5
3645 bes2.^\markup { \bold "Moderato" } r8
3646 \mergeDifferentlyHeadedOn
3647 \mergeDifferentlyDottedOn
3648 % 4 つのボイスの多声セクションの開始
3650 { c,8 d fis bes a } % メイン ボイスの続き
3653 % c2 をメインの音符列から外したため、
3659 % マージさせるために d2 の符幹を下向きにする必要があります
3667 \mergeDifferentlyHeadedOff
3668 \mergeDifferentlyDottedOff
3673 lhMusic = \relative {
3675 <d g, d>1)\arpeggio |
3682 \new Staff = "RH" <<
3686 \new Staff = "LH" <<
3697 マージされた D の下向きの符幹はあるべきではなく、C は D の右側に配置した方が@c
3699 以前に行った調整からこれらを行う方法を両方とも知っています:
3700 符幹を透明にして、@code{force-hshift} プロパティを用いて C を移動させます。@c
3703 @cindex NoteColumn, example of overriding (NoteColumn をオーバライドする例)
3704 @cindex force-hshift property, example (force-hshift プロパティの例)
3705 @cindex Stem, example of overriding (Stem をオーバライドする例))
3706 @cindex transparent property, example (transparent プロパティの例)
3708 @c line-width ensures no break
3710 @lilypond[quote,verbatim,ragged-right,line-width=6\in]
3711 rhMusic = \relative {
3714 \once \override Tie.staff-position = #3.5
3718 bes2.^\markup { \bold "Moderato" } r8
3719 \mergeDifferentlyHeadedOn
3720 \mergeDifferentlyDottedOn
3721 % 4 つのボイスの多声セクションの開始
3723 { c,8 d fis bes a } % メイン ボイスの続き
3727 % マージされる音符の右にある c2 を再配置します
3728 \once \override NoteColumn.force-hshift = #1.0
3729 % c2 をメインの音符列から外したため、マージが機能します
3736 % マージさせるために d2 の符幹を下向きにする必要があります
3739 \tweak Stem.transparent ##t
3747 \mergeDifferentlyHeadedOff
3748 \mergeDifferentlyDottedOff
3753 lhMusic = \relative {
3755 <d g, d>1)\arpeggio |
3762 \new Staff = "RH" <<
3766 \new Staff = "LH" <<
3778 @translationof Further tweaking
3785 * Scheme を用いた高度な調整::
3789 @subsection 調整のその他の使用方法
3790 @translationof Other uses for tweaks
3793 * 異なるボイスの中にある音符をタイで結ぶ::
3794 * MIDI でフェルマータをシミュレートする::
3797 @cindex transparent property, use of (transparent プロパティの使用方法)
3798 @cindex objects, making invisible (オブジェクトを不可視にする)
3799 @cindex removing objects (オブジェクトを削除する)
3800 @cindex objects, removing (オブジェクトを削除する)
3801 @cindex hiding objects (オブジェクトを隠す)
3802 @cindex objects, hiding (オブジェクトを隠す)
3803 @cindex invisible objects (不可視のオブジェクト)
3804 @cindex objects, invisible (不可視のオブジェクト)
3807 @node 異なるボイスの中にある音符をタイで結ぶ
3808 @unnumberedsubsubsec 異なるボイスの中にある音符をタイで結ぶ
3809 @translationof Tying notes across voices
3811 @cindex tying notes across voices (異なるボイスの中にある音符をタイで結ぶ)
3813 以下の例は異なるボイスの中にある音符をタイで結ぶ方法を示しています。@c
3814 通常、タイで結べるのは同じボイスの中にある 2 つ音符だけです。@c
3815 2 つのボイスを使い、そのうちの 1 つにタイで結んだ音符を置きます:
3818 << { b'8~ 8\noBeam } \\ { b'8[ g'] } >>
3822 そして、そのボイスの最初の上向き符幹を消します。@c
3823 これで、タイはボイスをまたがっているように見えます:
3825 @cindex Stem, example of overriding (Stem をオーバライドする例)
3826 @cindex transparent property, example (transparent プロパティの例)
3828 @lilypond[quote,fragment,relative=2,verbatim]
3831 \tweak Stem.transparent ##t
3839 符幹は表示されなくなっただけなので、タイの長さが十分ではありません。@c
3840 符幹の @code{length} を @code{8} にセットすることで符幹を伸ばすことができます:
3842 @lilypond[quote,fragment,relative=2,verbatim]
3845 \tweak Stem.transparent ##t
3846 \tweak Stem.length #8
3855 @cindex tweak, generated from override
3856 今度は、グラフィカル オブジェクトの透明性を @emph{オーバライド} する@c
3858 これまでに説明した短縮形 @code{\hide} を使います。@c
3859 調整と異なり、オーバライドは単一の音楽表記から生成されたプロパティにだけ@c
3861 @code{\single} を用いてオーバライドを調整に変換することができので、@c
3862 上記の例を以下のように書き換えることができます:
3864 @lilypond[quote,fragment,relative=2,verbatim]
3869 \tweak Stem.length #8
3877 今回のケースでは、@code{\once \hide} との違いははっきりしません。@c
3878 同じ音楽タイミングに複数のオブジェクトが存在する場合
3879 (和音の中にある符頭のように)、この違いは重要になります。@c
3880 そのような場合、@code{\once} はすべてのオブジェクトに影響を与える@c
3881 のに対して、@code{\single} は直後にある音楽表記によって生成された@c
3882 ただ 1 つのオブジェクトだけに影響を与えます。
3885 @node MIDI でフェルマータをシミュレートする
3886 @unnumberedsubsubsec MIDI でフェルマータをシミュレートする
3887 @translationof Simulating a fermata in MIDI
3889 @cindex stencil property, use of (stencil プロパティの使用方法)
3890 @cindex fermata, implementing in MIDI (MIDI でフェルマータ を実装する)
3892 譜外部オブジェクトを出力から削除しようとする場合、そのオブジェクトの
3893 @code{transparent} プロパティではなく @code{stencil} プロパティを@c
3894 オーバライドする方が通常は望ましいです。@c
3895 あるオブジェクトの @code{stencil} プロパティを
3896 @code{#f} にセットすると、@c
3897 そのオブジェクトは出力から完全に削除されます。@c
3898 このことは、削除されたオブジェクトがそのオブジェクトとの相対位置で@c
3899 配置される他のオブジェクトの配置にまったく影響を及ぼさないということを@c
3902 例えば、MIDI 出力でフェルマータをシミュレートするためにメトロノーム設定を@c
3904 その場合、メトロノーム記号を出力に表示させたくありません。@c
3905 そして、それが 2 つのシステム (小節とその中にある表記) 間のスペースと、@c
3906 譜上にある隣接する注釈の位置に影響を与えることを望みません。@c
3907 そのため、そのメトロノーム記号の @code{stencil} プロパティを
3908 @code{#f} にセットする方法が最良です。@c
3911 @cindex MetronomeMark, example of overriding (MetronomeMark をオーバライドする例)
3912 @cindex transparent property, example (transparent プロパティの例)
3914 @lilypond[quote,verbatim,ragged-right]
3917 % Visible tempo marking
3920 \once \hide Score.MetronomeMark
3921 % Invisible tempo marking to lengthen fermata in MIDI
3924 % New tempo for next section
3933 @cindex MetronomeMark, example of overriding (MetronomeMark をオーバライドする例)
3934 @cindex stencil property, example (stencil プロパティの例)
3936 @lilypond[quote,verbatim,ragged-right]
3939 % Visible tempo marking
3942 \once \omit Score.MetronomeMark
3943 % Invisible tempo marking to lengthen fermata in MIDI
3946 % New tempo for next section
3956 両方の手段とも、フェルマータ部分の演奏時間を伸ばすメトロノーム記号を@c
3957 出力から削除していて、両方とも MIDI の演奏に必要な効果を与えています。@c
3958 しかし、1 番目の例の透明なメトロノーム記号がそれに続く拍子指示を@c
3959 上に押し上げているのに対して、2 番目のメトロノーム記号 (ステンシルが@c
3960 削除されたもの) は押し上げていません。
3968 @subsection 調整のために変数を使用する
3969 @translationof Using variables for tweaks
3971 @cindex variables, using for tweaks (調整のために変数を使用する)
3972 @cindex using variables for tweaks (調整のために変数を使用する)
3973 @cindex tweaks, using variables for (調整のために変数を使用する)
3975 オーバライド コマンドはしばしば長く、入力するのが大変なものになります。@c
3976 そして、それらは完全に正しく記述されなければなりません。@c
3977 同じオーバライドが何度も使用される場合、それらを保持する変数を定義すると@c
3980 歌詞の中のある特定の単語をボールド イタリック体で譜刻することによって、@c
3982 歌詞の中では、@code{\italic} と @code{\bold} は (書式を) 変更したい@c
3983 単語や文と一緒に @code{\markup} ブロックの中に入れた場合にのみ@c
3984 機能しますが、それを毎回入力するのは大変です。@c
3985 埋め込む必要のある単語自体が、2 つのコマンドを簡単な変数を用いて使うことを@c
3987 代替手段として、@code{\override} コマンドと @code{\revert} コマンドを@c
3991 \override Lyrics.LyricText.font-shape = #'italic
3992 \override Lyrics.LyricText.font-series = #'bold
3994 \revert Lyrics.LyricText.font-shape
3995 \revert Lyrics.LyricText.font-series
3998 これらも、強調する必要のある単語がたくさんある場合、入力するのが@c
4000 しかしながら、これらは 2 つの変数として定義することが@emph{でき}、@c
4001 それらの変数で単語を囲むことによって使ってその単語を強調することが@c
4003 これらのオーバライドに変数を用いることのもう 1 つの利点は、@c
4004 ドットの両側にスペースを置く必要が無いことです。@c
4005 なぜなら、これらのオーバライドは @code{\lyricmode} の中で@c
4006 直接解釈されるわけではないからです。@c
4007 ここで変数を用いる例を挙げますが、実際には早く打ち込めるように@c
4010 @cindex LyricText, example of overriding (LyricText をオーバライドする例)
4011 @cindex font-shape property, example (font-shape プロパティの例)
4012 @cindex font-series property, example (font-series プロパティの例)
4014 @lilypond[quote,verbatim]
4016 \override Lyrics.LyricText.font-shape = #'italic
4017 \override Lyrics.LyricText.font-series = #'bold
4021 \revert Lyrics.LyricText.font-shape
4022 \revert Lyrics.LyricText.font-series
4025 global = { \key c \major \time 4/4 \partial 4 }
4027 SopranoMusic = \relative { c'4 | e4. e8 g4 g | a4 a g }
4028 AltoMusic = \relative { c'4 | c4. c8 e4 e | f4 f e }
4029 TenorMusic = \relative { e4 | g4. g8 c4. b8 | a8 b c d e4 }
4030 BassMusic = \relative { c4 | c4. c8 c4 c | f8 g a b c4 }
4032 VerseOne = \lyrics {
4033 E -- | ter -- nal \emphasize Fa -- ther, | \normal strong to save,
4036 VerseTwo = \lyricmode {
4037 O | \once \emphasize Christ, whose voice the | wa -- ters heard,
4040 VerseThree = \lyricmode {
4041 O | \emphasize Ho -- ly Spi -- rit, | \normal who didst brood
4044 VerseFour = \lyricmode {
4045 O | \emphasize Tri -- ni -- ty \normal of | love and pow'r
4052 \new Voice = "Soprano" { \voiceOne \global \SopranoMusic }
4053 \new Voice = "Alto" { \voiceTwo \AltoMusic }
4054 \new Lyrics \lyricsto "Soprano" { \VerseOne }
4055 \new Lyrics \lyricsto "Soprano" { \VerseTwo }
4056 \new Lyrics \lyricsto "Soprano" { \VerseThree }
4057 \new Lyrics \lyricsto "Soprano" { \VerseFour }
4061 \new Voice = "Tenor" { \voiceOne \TenorMusic }
4062 \new Voice = "Bass" { \voiceTwo \BassMusic }
4070 @subsection スタイル シート
4071 @translationof Style sheets
4073 LilyPond が作り出す出力にはさまざまな変更を加えることができます
4074 (詳細は @ref{出力を調整する} を参照してください)。@c
4075 しかしながら、調整を加えたい入力ファイルがたくさんあるとしたらどうでしょう?@c
4076 また、単に調整を実際の音楽表記から分離したいとしたらどうでしょう?@c
4080 @code{#()} を持つ部分を理解できなくても心配しないでください。@c
4081 @ref{Scheme を用いた高度な調整} で説明されています。
4083 @lilypond[quote,verbatim,ragged-right]
4085 #(make-dynamic-script
4086 #{ \markup { \hspace #0
4087 \translate #'(5 . 0)
4088 \line { \dynamic "mp"
4089 \text \italic "dolce" } }
4093 #(define-music-function
4096 #{ <>^\markup \bold \box #string #})
4100 a'4.\mpdolce d8 cis4--\glissando a |
4104 g8(\! fis)-. e( d)-. cis2 |
4108 @code{mpdolce} と @code{tempoMark} の定義に手を加えてみることにします。@c
4109 それらは望みの出力を作り出していますが、それらを別の楽曲で使いたいとします。@c
4110 単純にそれらを各ファイルの先頭部分にカット&ペーストすることもできますが、@c
4112 その方法では定義は依然として入力ファイルの中にあり、@c
4113 私は個人的にすべての @code{#()} は何か醜いと感じます。@c
4114 それらを他のファイルの中に隠すことにしましょう:
4117 %%% これを "definitions.ily" というファイル名で保存してください
4119 #(make-dynamic-script
4120 #@{ \markup @{ \hspace #0
4121 \translate #'(5 . 0)
4122 \line @{ \dynamic "mp"
4123 \text \italic "dolce" @} @}
4127 #(define-music-function
4130 #@{ <>^\markup \bold \box #string #@})
4133 音楽ファイルの先頭付近で @code{\include} コマンドを使ってこのファイルを@c
4135 (インクルードされるファイルをコンパイルされるメイン ファイルと区別するため、@c
4136 拡張子 @file{.ily} を使っています。)
4138 (このファイルを @file{"music.ly"} として保存してください)。
4140 @c We have to do this awkward example/lilypond-non-verbatim
4141 @c because we can't do the \include stuff in the manual.
4144 \include "definitions.ily"
4148 a'4.\mpdolce d8 cis4--\glissando a |
4152 g8(\! fis)-. e( d)-. cis2 |
4156 @lilypond[quote,ragged-right]
4158 #(make-dynamic-script
4159 #{ \markup { \hspace #0
4160 \translate #'(5 . 0)
4161 \line { \dynamic "mp"
4162 \text \italic "dolce" } }
4166 #(define-music-function
4169 #{ <>^\markup \bold \box #string #})
4173 a'4.\mpdolce d8 cis4--\glissando a |
4177 g8(\! fis)-. e( d)-. cis2 |
4181 これで前よりも良くなりましたが、いくつか変更を加えることにします。@c
4182 グリッサンド (訳者: 第 1 小節の C シャープと A の間) は見え難いので、@c
4184 メトロノーム記号を、最初の音符の上ではなく、@c
4186 最後に、私の作曲の先生は @q{C} 拍子記号を嫌っているので、@c
4187 @q{4/4} に変更した方が良さそうです。
4189 @file{music.ly} には変更を加えないでください。@c
4190 @file{definitions.ily} を以下のように書き換えます:
4195 #(make-dynamic-script
4196 #@{ \markup @{ \hspace #0
4197 \translate #'(5 . 0)
4198 \line @{ \dynamic "mp"
4199 \text \italic "dolce" @} @}
4203 #(define-music-function
4206 #@{ <>^\markup \bold \box #string #@})
4211 \override MetronomeMark.extra-offset = #'(-5 . 0)
4212 \override MetronomeMark.padding = #'3
4216 \override TimeSignature.style = #'numbered
4220 \override Glissando.thickness = #3
4221 \override Glissando.gap = #0.1
4226 @lilypond[quote,ragged-right]
4228 #(make-dynamic-script
4229 #{ \markup { \hspace #0
4230 \translate #'(5 . 0)
4231 \line { \dynamic "mp"
4232 \text \italic "dolce" } }
4236 #(define-music-function
4239 #{ <>^\markup \bold \box #string #})
4244 \override MetronomeMark.extra-offset = #'(-5 . 0)
4245 \override MetronomeMark.padding = #'3
4249 \override TimeSignature.style = #'numbered
4253 \override Glissando.thickness = #3
4254 \override Glissando.gap = #0.1
4260 a'4.\mpdolce d8 cis4--\glissando a |
4264 g8(\! fis)-. e( d)-. cis2 |
4270 私の作曲の先生は @q{C} 拍子記号を嫌っていますが、@c
4272 現在の @code{definitions.ily} を @code{web-publish.ily} にコピーして、@c
4274 この音楽はスクリーンに表示される PDF を作り出すことを意図したものなので、@c
4275 出力のフォントを全体に大きくすることにします。
4280 #(make-dynamic-script
4281 #@{ \markup @{ \hspace #0
4282 \translate #'(5 . 0)
4283 \line @{ \dynamic "mp"
4284 \text \italic "dolce" @} @}
4288 #(define-music-function
4291 #@{ <>^\markup \bold \box #string #@})
4293 #(set-global-staff-size 23)
4298 \override MetronomeMark.extra-offset = #'(-5 . 0)
4299 \override MetronomeMark.padding = #'3
4306 \override Glissando.thickness = #3
4307 \override Glissando.gap = #0.1
4312 @lilypond[quote,ragged-right]
4314 #(make-dynamic-script
4315 #{ \markup { \hspace #0
4316 \translate #'(5 . 0)
4317 \line { \dynamic "mp"
4318 \text \italic "dolce" } }
4322 #(define-music-function
4325 #{ <>^\markup \bold \box #string #})
4327 #(set-global-staff-size 23)
4331 \override MetronomeMark.extra-offset = #'(-5 . 0)
4332 \override MetronomeMark.padding = #'3
4335 \override Glissando.thickness = #3
4336 \override Glissando.gap = #0.1
4342 a'4.\mpdolce d8 cis4--\glissando a |
4346 g8(\! fis)-. e( d)-. cis2 |
4350 音楽ファイルの中では、単に @code{\include "definitions.ily"} を
4351 @code{\include "web-publish.ily"} に置き換えるだけです。@c
4352 もちろん、これをもっと便利なようにすることができます。@c
4353 @file{definitions.ily} ファイルには
4354 @code{mpdolce} と @code{tempoMark} の定義だけを持たせて、@c
4355 @file{web-publish.ily} ファイルには@c
4356 上で記述した @code{\layout} セクションだけを持たせ、@c
4357 @file{university.ily} ファイルには@c
4358 私の先生の好む出力を作り出すための調整だけを持たせます。@c
4359 @file{music.ly} の先頭部分は以下のようになります:
4362 \include "definitions.ily"
4364 %%% 以下の 2 行のどちらか片方のコメントを外してください!
4365 \include "web-publish.ily"
4366 %\include "university.ily"
4370 あなたがパーツ一式を作っているだけだとしても役に立つ可能性があります。@c
4372 半ダースの @q{スタイル シート} ファイルを使います。@c
4374 @code{\include "../global.ily"} で始め、@c
4375 @file{gloval.ily} には以下の内容を記述しています:
4379 \version @w{"@version{}"}
4381 #(ly:set-option 'point-and-click #f)
4383 \include "../init/init-defs.ly"
4384 \include "../init/init-layout.ly"
4385 \include "../init/init-headers.ly"
4386 \include "../init/init-paper.ly"
4392 @translationof Other sources of information
4394 内部リファレンスは LilyPond についての多くの情報を持っていますが、@c
4395 LilyPond の内部ファイルを調べることによって@c
4396 さらに多くの情報を収集することができます。@c
4398 まずあなたの使っているシステム特有のディレクトリを見つけ出す必要があります。@c
4399 このディレクトリの場所は、(a) あなたが lilypond.org からコンパイル済みの@c
4400 バイナリをダウンロードすることによって LilyPond を手に入れたのか、@c
4401 それとも、パッケージ マネージャから LilyPond をインストールした
4402 (つまり、GNU/Linux と一緒に配布されたか、fink や cygwin でインストールされた)
4403 のか、(b) LilyPond はどの OS 上で使用されているのか、に依存します:
4405 @subsubsubheading lilypond.org からダウンロードした
4411 @file{@var{INSTALLDIR}/lilypond/usr/share/lilypond/current/}
4418 @file{@var{INSTALLDIR}/LilyPond.app/Contents/Resources/share/lilypond/current/}
4421 ターミナルからこのディレクトリへ @code{cd} で移動するか、@c
4422 LilyPond アプリケーション上でコントロール クリックして
4423 @q{Show Package Contents} を選択します。
4428 @file{@var{INSTALLDIR}/LilyPond/usr/share/lilypond/current/}
4430 に進んでください。Windows Explorer を使います。
4434 @subsubsubheading パッケージ マネージャからインストールした、あるいは、ソースからコンパイルした
4436 @file{@var{PREFIX}/share/lilypond/@var{X.Y.Z}/} に進んでください。@c
4437 @var{PREFIX} はパッケージ マネージャか @code{configure} スクリプトによって@c
4438 セットされるものであり、@var{X.Y.Z} は LilyPond のバージョン番号です。
4442 このディレクトリの中に 2 つの興味深いサブディレクトリがあります:
4445 @item @file{ly/} - LilyPond フォーマットに関するファイルを保持しています
4446 @item @file{scm/} -Scheme フォーマットに関するファイルを保持しています
4449 @file{ly/} の中にあるファイルから見ていきましょう。@c
4450 @file{ly/property-init.ly} をテキスト エディタで開いてください。@c
4451 エディタはあなたが普段 @code{.ly} ファイルを編集するために使っているもので@c
4453 このファイルは標準の LilyPond 定義済みコマンド
4454 -- @code{\stemUp} や @code{\slurDotted} など
4455 -- のすべての定義を保持しています。@c
4456 1 つまたは複数の @code{\override} コマンドを保持している@c
4457 変数の定義以外のものはないということがわかるでしょう。@c
4458 例えば、@code{\tieDotted} は以下のように定義されています:
4462 \override Tie.dash-period = #0.75
4463 \override Tie.dash-fraction = #0.1
4467 あなたがこれらのデフォルト値を好まない場合、これらの定義済みコマンドを@c
4469 他の変数と同様に、入力ファイルの先頭で定義します。
4471 以下のファイルは @file{ly/} で見つかる有用なファイルです:
4473 @multitable @columnfractions .4 .6
4476 @item @file{ly/engraver-init.ly}
4477 @tab エングラーバ コンテキストの定義
4478 @item @file{ly/paper-defaults-init.ly}
4480 @item @file{ly/performer-init.ly}
4481 @tab パフォーマ コンテキストの定義
4482 @item @file{ly/property-init.ly}
4483 @tab すべての共通定義済みコマンドの定義
4484 @item @file{ly/spanner-init.ly}
4485 @tab スパナ関係の定義済みコマンドの定義
4488 他の設定 (マークアップ コマンドの定義など) は
4489 @code{.scm} (Scheme) ファイルとして保存されています。@c
4490 Scheme プログラミング言語は、LilyPond 内部処理へのプログラム可能な@c
4491 インタフェイスを提供するために使用されます。@c
4492 これらのファイルについての詳しい説明は、Scheme 言語についての知識が@c
4493 必要となるため、このマニュアルの範囲外です。@c
4494 Scheme 言語とこれらのファイルを理解するには、十分な知識や時間が@c
4495 必要であるということを知っておくべきです
4496 (@rextend{Scheme tutorial} を参照してください)。
4498 あなたがこの知識を持っているのなら、興味を持つかもしれない Scheme ファイルは@c
4501 @multitable @columnfractions .4 .6
4504 @item @file{scm/auto-beam.scm}
4505 @tab サブ 連桁のデフォルト (訳者: 8 分音符には連桁だけが使用され、@c
4506 16 分音符やそれよりも短い音符には連桁とサブ 連桁が使われるのだと思います)
4507 @item @file{scm/define-grobs.scm}
4508 @tab Grob (グラフィカル オブジェクト) プロパティのデフォルト設定
4509 @item @file{scm/define-markup-commands.scm}
4510 @tab すべてのマークアップ コマンドの仕様
4511 @item @file{scm/midi.scm}
4512 @tab MIDI 出力のデフォルト設定
4513 @item @file{scm/output-lib.scm}
4514 @tab フレット、色、臨時記号、小節線などの見た目に影響を与える設定
4515 @item @file{scm/parser-clef.scm}
4517 @item @file{scm/script.scm}
4518 @tab アーティキュレーションのデフォルト設定
4522 @node Scheme を用いた高度な調整
4523 @subsection Scheme を用いた高度な調整
4524 @translationof Advanced tweaks with Scheme
4526 @code{\override} と @code{\tweak} コマンドを用いることで@c
4527 多くのことが可能になりますが、LilyPond のアクションを変更するもっと強力な手段が
4528 LilyPond 内部処理へのプログラム可能なインタフェイスを通じて利用可能です。@c
4529 Scheme プログラミング言語で書かれたコードは LilyPond の内部処理に@c
4531 もちろん、それを行うには Scheme プログラミングについての基礎知識が必要であり、@c
4532 その手引きが @rextend{Scheme tutorial} で提供されています。
4534 多くの実現可能なことの 1 つの例としては、プロパティに定数をセットする代わりに
4535 Scheme プロシージャをセットすることができます。@c
4536 このプロパティが LilyPond によってアクセスされたときに、@c
4538 このプロシージャが呼び出されたときに、このプロシージャによって決定された@c
4539 値を動的にそのプロパティにセットすることができます。@c
4540 以下の例では、符頭にその音符の譜上での位置に従って色を付けています:
4542 @cindex x11-color function, example of using (x11-color 関数の使用方法)
4543 @cindex NoteHead, example of overriding (NoteHead をオーバライドする例)
4544 @cindex color property, setting to Scheme procedure (Scheme プロシージャに color プロパティをセットする)
4547 @lilypond[quote,verbatim,ragged-right]
4548 #(define (color-notehead grob)
4549 "Color the notehead according to its position on the staff."
4550 (let ((mod-position (modulo (ly:grob-property grob 'staff-position)
4553 ;; Return rainbow colors
4554 ((1) (x11-color 'red )) ; for C
4555 ((2) (x11-color 'orange )) ; for D
4556 ((3) (x11-color 'yellow )) ; for E
4557 ((4) (x11-color 'green )) ; for F
4558 ((5) (x11-color 'blue )) ; for G
4559 ((6) (x11-color 'purple )) ; for A
4560 ((0) (x11-color 'violet )) ; for B
4564 % Arrange to obtain color from color-notehead procedure
4565 \override NoteHead.color = #color-notehead
4566 a2 b | c2 d | e2 f | g2 a |
4570 @rextend{Callback functions} に、これらのプログラム可能なインタフェイスの@c