| [ < ] | [ > ] | [ << ] | [ 上へ ] | [ >> ] | [トップ] | [目次] | [インデックス] | [ ? ] |
@translationof Tweaking basics
| 4.1.1 調整の紹介 | ||
| 4.1.2 オブジェクトとインタフェイス | ||
| 4.1.3 オブジェクトとプロパティの命名規則 | ||
| 4.1.4 調整手段 |
| [ < ] | [ > ] | [ << ] | [ 上へ ] | [ >> ] | [トップ] | [目次] | [インデックス] | [ ? ] |
@translationof Introduction to tweaks
‘調整’ は入力ファイルの解釈中にとられるアクションを変更し、譜刻される楽譜の見た目を変更するためにユーザが利用可能なさまざまな手段を指す LilyPond の用語です。いくつかの調整はとても簡単に使うことができます。他の調整はもっと複雑です。しかしながら、調整のために利用可能な手段を組み合わせることによって、ほとんどいかなる望みの見た目を持った楽譜でも譜刻することが可能になります。
このセクションでは、調整を理解するのに必要な基礎となるコンセプトをカバーします。その後、コピーするだけで効果が得られる作成準備が完了しているさまざまなコマンドについての情報を提供し、同時に、あなたがあなた自身の調整を開発する方法を学べるようにそれらのコマンドがどのように構築されるのかを示します。
この章を読み始める前に、あなたは コンテキストとエングラーバ を再読することを望むかもしれません。なぜなら、コンテキスト、エングラーバとそれらの中に含まれるプロパティは調整について理解し、調整を構成するための基礎だからです。
| [ < ] | [ > ] | [ << ] | [ 上へ ] | [ >> ] | [トップ] | [目次] | [インデックス] | [ ? ] |
@translationof Objects and interfaces
調整には LilyPond プログラムの内部オペレーションと構造体への変更も含まれます。そのため、我々はまずそれらの内部オペレーションと構造体を記述するために使用されるいくつかの用語を導入しなければなりません。
‘オブジェクト’ という用語は入力ファイルを処理している最中に LilyPond によってビルドされる多くの内部構造体を参照するために使われる汎用的な用語です。LilyPond が \new Staff のようなコマンドに遭遇した場合、タイプ Staff の新しいオブジェクトを構築します。その Staff オブジェクトは、その譜のコンテキスト内部で機能するために割り当てられているエングラーバの詳細とともに、その譜に関連付けられているすべてのプロパティ – 例えば、その譜の名前、調号 – を保持します。同様に、Voice オブジェクト、Score オブジェクト、Lyrics オブジェクトなどの他のすべてのコンテキストのプロパティを保持するためのオブジェクトが存在し、さらに、小節線、符頭、タイ、強弱記号などのすべての記譜要素を表すためのオブジェクトも存在します。各オブジェクトはそれ自体のプロパティ値のセットを持ちます。
いくつかのタイプのオブジェクトには特別な名前が与えられています。符頭、符幹、スラー、タイ、運指記号、音部記号などの譜刻される出力上の記譜要素を表すオブジェクトは ‘レイアウト オブジェクト’ と呼ばれ、しばしば ‘グラフィカル オブジェクト’ あるいは短くして ‘グロッブ (Grob: GRaphical OBject)’ と呼ばれます。これらのオブジェクトも上記の汎用的な観点から見るとオブジェクトであり、それゆえ、それらもまたそれらのオブジェクトに関連付けされたプロパティ – そのオブジェクトの位置、サイズ、色など – を持ちます。
いくつかのレイアウト オブジェクトも特別です。フレージング スラー、クレッシェンド、オッターバ記号、他の多くのグラフィカル オブジェクトが置かれる場所は一点ではありません – それらは開始点、終了点、そしておそらくそれらの形に関係する他のプロパティを持ちます。これらのオブジェクトのように形が伸長されるオブジェクトは ‘スパナ (Spanners)’ と呼ばれます。
スパナは生成された後に調整を行うことができません。楽譜全体にわたって続く
StaffSymbol や LedgerLineSpanner も同様です。ただし、
\stopStaff コマンドによって終了し、\startStaff コマンドで新たに生成された場合を除きます。
また、‘抽象 (abstract)’ グラフィカル オブジェクトというものも存在します。これはオブジェクト自身は出力に何も書き出しませんが、他のグラフィカル
オブジェクトを収集し、配置や管理をする役割を担います。
DynamicLineSpanner, BreakAlignment,
NoteColumn, VerticalAxisGroup,
NonMusicalPaperColumn などが例です。後で、これらがどのように使われるかを見ていきましょう。
‘インタフェイス’ とは何なのかという説明が残っています。多くのオブジェクト – たとえそれらが非常に異なっていたとしても –
は同じ方法で処理される必要がある共通特徴を共有します。例えば、すべてのグラフィカル オブジェクトは色、サイズ、位置などを持ち、これらのプロパティはすべて LilyPond が入力ファイルを構文解釈する最中に同じ方法で処理されます。これらの内部オペレーションを簡潔にするために、これらの共通アクションとプロパティは 1 つのグループとして
grob-interface と呼ばれるオブジェクトにまとめられています。これと同じような共有プロパティのグループ化が他にも多くあり、それぞれに対して最後に interface が付く名前が与えられています。そのようなインタフェイスの総数は 100 を越えます。我々は後でなぜこれがユーザにとって利益となり、役に立つのかを見ていきます。
これらは、我々がこの章で使用するオブジェクトと関係する主要な用語です。
| [ < ] | [ > ] | [ << ] | [ 上へ ] | [ >> ] | [トップ] | [目次] | [インデックス] | [ ? ] |
@translationof Naming conventions of objects and properties
我々は以前にも コンテキストとエングラーバ でいくつかのオブジェクト命名規則を見てきました。ここで参照のために、最も一般的なオブジェクトとプロパティをリストアップし、それに加えてそれらの命名規則と実際の名前の例を挙げます。何らかの大文字のアルファベットを表すために ‘A’ を使用し、いくつかの小文字のアルファベットを表すために ‘aaa’ を使用しています。他の文字は実際の命名でもそのまま使用されます。
| オブジェクト/プロパティのタイプ | 命名規則 | 例 |
|---|---|---|
| コンテキスト | Aaaa や AaaaAaaaAaaa | Staff, GrandStaff |
| レイアウト オブジェクト | Aaaa や AaaaAaaaAaaa | Slur, NoteHead |
| エングラーバ | Aaaa_aaa_engraver | Clef_engraver, Note_heads_engraver |
| インタフェイス | aaa-aaa-interface | grob-interface, break-aligned-interface |
| コンテキスト プロパティ | aaa や aaaAaaaAaaa | alignAboveContext, skipBars |
| レイアウト オブジェクト プロパティ | aaa や aaa-aaa-aaa | direction, beam-thickness |
これから見ていくのですが、タイプが異なるオブジェクトのプロパティは異なるコマンドによって変更されます。そのため、名前からオブジェクトやプロパティのタイプを識別できるようになると役に立ちます。
記譜法リファレンス: (notation)プロパティを変更する section ‘プロパティを変更する’ in Notation Reference
| [ < ] | [ > ] | [ << ] | [ 上へ ] | [ >> ] | [トップ] | [目次] | [インデックス] | [ ? ] |
@translationof Tweaking methods
\override コマンド | ||
\revert コマンド | ||
\once 接頭辞 | ||
\overrideProperty コマンド | ||
\tweak コマンド | ||
\single 接頭辞 |
| [ < ] | [ > ] | [ << ] | [ 上へ ] | [ >> ] | [トップ] | [目次] | [インデックス] | [ ? ] |
\override コマンド@translationof The override command
我々はすでに コンテキスト プロパティを変更する と
エングラーバを追加 / 削除する で コンテキスト のプロパティを変更したり、エングラーバ を追加/削除したりするために使用するコマンド
\set と \with を見てきました。ここでは更に重要ないくつかのコマンドについて見ていきます。
レイアウト オブジェクト のプロパティを変更するためのコマンドは
\override です。このコマンドは LilyPond の奥深くにある内部プロパティを変更しなければならないため、これまで見てきたコマンドのように単純な構文ではありません。どのコンテキストの中にあるどのオブジェクトのどのプロパティを変更しなければならないのか、そこにセットする新しい値を何にするのかを正確に知っている必要があります。どのようにこれを行うのかを見ていきましょう。
このコマンドの一般的な構文は以下のようなものです:
\override Context.LayoutObject.layout-property = #value |
これは Context コンテキストのメンバである LayoutObject という名前のレイアウトの layout-property という名前のプロパティに値 value をセットします。
必要とされているコンテキストが明白であり、それが最下位レベルのコンテキストである
– つまり、Voice, ChordNames や Lyrics である
– 場合、その Context は省略可能であり (そして通常は省略されます)、この後の例の多くでも省略します。後ほど、コンテキストを指定しなければならない場合について見ていきます。
これから後のセクションでは広範囲に亘るプロパティとそれらの値を扱います – @ref{Types of properties} を参照してください。しかしながら、このセクションではそれらのフォーマットとコマンドの使い方を示すために、容易に理解できる簡単なプロパティと値をいくつか使用してみるだけです。
LilyPond の基本的な表記は文字列やマークアップだけでなく、音符や演奏時間のような音楽要素です。数字、シンボル、リストなどのより具体的な表記は ‘Scheme モード’ で処理されます – 表記の先頭に ‘#’ を記述することでこのモードが呼び出されます。Scheme モードについての更なる情報は (extending)LilyPond Scheme syntax section ‘LilyPond Scheme syntax’ in Extending を参照してください。
\override は調整で用いられる最も一般的なコマンドであり、本章の残りの大半を使ってこのコマンドの使用例を示します。まずは符頭の色を変更する簡単な例を挙げます:
\relative { c'4 d \override NoteHead.color = #red e4 f | \override NoteHead.color = #green g4 a b c | }
| [ < ] | [ > ] | [ << ] | [ 上へ ] | [ >> ] | [トップ] | [目次] | [インデックス] | [ ? ] |
\revert コマンド@translationof The revert command
一旦オーバライドされると、そのプロパティは再度オーバライドされるか
\revert コマンドに遭遇するまで新しい値のままでいます。\revert コマンドは以下の構文を持ち、プロパティの値をオリジナルのデフォルト値に戻します。何度か \override コマンドが発行されている場合は、前の値に戻すわけではないということに注意してください。
\revert Context.LayoutObject.layout-property |
繰り返しますが、\override コマンドでの Context と同様に、多くの場合で Context を記述する必要はありません。以下の例の多くで、Context は省略されます。ここでは、最後の 2 つの音符の符頭の色をデフォルトに戻します:
\relative { c'4 d \override NoteHead.color = #red e4 f | \override NoteHead.color = #green g4 a \revert NoteHead.color b4 c | }
| [ < ] | [ > ] | [ << ] | [ 上へ ] | [ >> ] | [トップ] | [目次] | [インデックス] | [ ? ] |
\once 接頭辞@translationof The once prefix
\override, \revert, \set, \unset コマンドには接頭辞 \once が付く可能性があります。これはこのようなコマンドをその場一回限り有効にし、その後にそのプロパティの値をデフォルト値に戻します。上と同じ例を使って、以下のように 1 つだけの音符の色を変更することができます:
\relative { c'4 d \override NoteHead.color = #red e4 f | \once \override NoteHead.color = #green g4 a \once \revert NoteHead.color b c | \revert NoteHead.color f2 c | }
\once 接頭辞をさまざまな定義済みコマンドの前に置くことで、コマンドの効果を次の音楽タイミングに限定することもできます:
\relative { c'4( d) \once \slurDashed e4( f) | g4( a) \once \hideNotes b( c) | }
| [ < ] | [ > ] | [ << ] | [ 上へ ] | [ >> ] | [トップ] | [目次] | [インデックス] | [ ? ] |
\overrideProperty コマンド@translationof The overrideProperty command
オーバライド コマンドには \overrideProperty というもう 1 つのフォーマットがあり、時々必要となります。完璧を期すためにここでこれに言及しましたが、詳細は
(extending)Difficult tweaks section ‘Difficult tweaks’ in Extending を参照してください。
| [ < ] | [ > ] | [ << ] | [ 上へ ] | [ >> ] | [トップ] | [目次] | [インデックス] | [ ? ] |
\tweak コマンド@translationof The tweak command
利用可能な最後の調整コマンドは \tweak です。これは同じ音楽タイミングで発生するいくつかのオブジェクトのうち、1 つのオブジェクトだけを選択してプロパティを変更したい場合に使用します
– 例えば、和音の中にある 1 つの音符のプロパティを変更する場合です。\override コマンドを使用すると和音の中にあるすべての音符に影響を与えます。一方、\tweak は入力ストリームの中でその \tweak のすぐ後にある要素 1 つだけに影響を与えます。
ここで例を挙げます。C メジャー コードの中にある真ん中の音符 (ミドル E) の符頭のサイズを変更したいとします。まず最初に、\once \override だとどうなるか見てみましょう:
\relative { <c' e g>4 \once \override NoteHead.font-size = #-3 <c e g>4 <c e g>4 }
このオーバライドは和音の中にあるすべての符頭に影響を与えています。これは和音の中にあるすべての音符が同じ タイミング で起こるためであり、\once のアクションは \override と同様に同じタイミングで起こる、指定されたタイプすべてのレイアウト オブジェクトへのオーバライドに適用されます。
\tweak コマンドはこれとは異なるやり方で処理されます。これは入力ストリームの中ですぐ後に続く要素にだけ作用します。最もシンプルな形式の \tweak コマンドは、コマンドの直後にある要素から直接作成されるオブジェクト
– 本質的に符頭とアーティキュレーション – にだけ効果を持ちます。
それでは例に戻り、この方法で和音の真ん中の音符のサイズを変更します:
\relative { <c' e g>4 <c \tweak font-size #-3 e g>4 }
\tweak の構文は \override コマンドの構文とは異なるということに注意してください。コンテキストを指定しません – 実際、指定するとエラーになります。コンテキストとレイアウト オブジェクトはどちらも入力ストリームの中で後に続く要素によって示されます。さらに、イコール記号を使うべきではないということに注意してください。そのため、簡単な形式の \tweak コマンドは以下のようになります:
\tweak layout-property #value |
さらに、\tweak コマンドは一連のアーティキュレーションの中にあるただ 1 つのアーティキュレーションを変更されるためにも使用できます。ここに例を挙げます:
a'4^"Black" -\tweak color #red ^"Red" -\tweak color #green _"Green"
\tweak コマンドはアーティキュレーション マークの前に配置する必要があることに注意してください。なぜなら、調整された表記がアーティキュレーションとして適用される必要があるためです。複数の向き記号 (^ または _) で上書きした場合、最後に適用される左端の記号が勝ち残ります。
符幹や臨時記号などのオブジェクトは後になってから作成されるもので、\tweak コマンドの後に続くイベントから直接作成されません。そのような直接作成されないオブジェクトの場合、明示的にレイアウト
オブジェクト名を指定して LilyPond がそれらのオブジェクトの起源を追跡できるようにすることで、\tweak で調整することができます:
<\tweak Accidental.color #red cis''4 \tweak Accidental.color #green es'' g''>
この長い形式の \tweak コマンドは以下のように記述することができます:
\tweak LayoutObject.layout-property #value |
さらに、\tweak コマンドは、同時に起こるネストされた連符記号のセットのうちの 1 つの見た目を変更するためにも使用されます。以下の例では、長い連符記号と 3 つの短い連符記号のうちの最初の連符記号が同時に起こります。そのため、\override コマンドだと両方の連符記号に適用されてしまいます。この例では、\tweak は 2 つの連符記号を区別するために使用されています。最初の \tweak コマンドは長い連符記号を音符の上に置くことを指定していて、2 番目の \tweak コマンドは最初の短い連符記号の数字を赤で描くことを指定しています。
\relative c'' { \tweak direction #up \tuplet 3/4 { \tweak color #red \tuplet 3/2 { c8[ c c] } \tuplet 3/2 { c8[ c c] } \tuplet 3/2 { c8[ c c] } } }
ネストされた連符が同時に起こらない場合、それらの見た目は \override
コマンドを用いた通常通りの方法で変更されるかもしれません:
\relative { \tuplet 3/2 { c'8[ c c] } \once \override TupletNumber.text = #tuplet-number::calc-fraction-text \tuplet 3/2 { c8[ c] c8[ c] \once \override TupletNumber.transparent = ##t \tuplet 3/2 { c8[ c c] } \tuplet 3/2 { c8[ c c] } } }
記譜法リファレンス: (notation)The tweak command section ‘The tweak command’ in Notation Reference
| [ < ] | [ > ] | [ << ] | [ 上へ ] | [ >> ] | [トップ] | [目次] | [インデックス] | [ ? ] |
\single 接頭辞@translationof The single prefix
特定の符頭を赤色にしてサイズを大きくすることによって、強調を行いたいとしましょう。また、それを簡単にするためにこのような関数を定義したとしましょう:
emphNoteHead = { \override NoteHead.color = #red \override NoteHead.font-size = 2 } \relative { c''4 a \once \emphNoteHead f d | }
\once 接頭辞は単音や和音全体には動作しますが、和音内の一つの音符に対しては使うことができません。さっき、\tweak はこのような場面で使うということを学びました。
\tweak コマンド を参照してください。しかし、\tweak は関数と一緒に使うことができません。そこで
\single の登場です:
emphNoteHead = { \override NoteHead.color = #red \override NoteHead.font-size = 2 } \relative { <c'' a \single \emphNoteHead f d>4 }
要約すると、\single は \override を \tweak に変換します。よって、(和音内の音符のように) 同じタイミングにいくつかのオブジェクトが存在する場合、\once はその全てに影響を与えるのに対し、
\single はその内の 1 つに – すぐ後に続く音楽表記のみに – 作用します。
\single をこのように使用することで、\override のみから成る簡略化のために定義された関数を、和音内の各音符に対して適用することができます。しかし、\single は \revert, \set, \unset を
\tweak に変換することはできません。
学習マニュアル:
\tweak コマンド,
レイアウトの調整のために変数を使用する
| [ < ] | [ > ] | [ << ] | [ 上へ ] | [ >> ] |
This document was generated by gub on 7 月 13, 2020 using texi2html 1.82.
他の言語: English, català, česky, deutsch, español, français, italiano, nederlands
About automatic language selection.