[ < ] [ > ]   [ << ] [ 上へ ] [ >> ]         [トップ] [目次] [インデックス] [ ? ]

4.3 オブジェクトの見た目

@translationof Appearance of objects

いくつかの例を使ってこれまでに学んだことを練習して、譜刻される楽譜の見た目を変更するためにどのように調整が使われるのかを見ていきましょう。


[ < ] [ > ]   [ << ] [ 上へ ] [ >> ]         [トップ] [目次] [インデックス] [ ? ]

4.3.1 オブジェクトの可視性と色

@translationof Visibility and color of objects

教育目的の楽譜では、ある要素を省略した楽譜を譜刻して、学生にそれを付け足させるという訓練にしたいと思うかもしれません。簡単な例として、その訓練とは小節線の無い楽譜だと仮定してみましょう。しかしながら、通常、小節線は自動的に挿入されます。どうやって小節線が譜刻されることを防ぐのでしょうか?

このことに挑戦する前に、オブジェクト プロパティは インタフェイス と呼ばれるものにグループ化されているということを思い出してください – インタフェイスの中で見つかるプロパティ を参照してください。これはあるグラフィカル オブジェクトを調整するために一緒に使用されるかもしれないプロパティをグループ化したものです – あるオブジェクトに対してインタフェイス内のプロパティの 1 つを使うことが許可されるのなら、他のプロパティも許可されます。あるオブジェクトはいくつかのインタフェイス内にあるプロパティを使用し、別のオブジェクトはそれとは別のインタフェイス内にあるプロパティを使用します。ある特定のグラフィカルオブジェクトによって使用されるプロパティを保持しているインタフェイスは、そのグラフィカル オブジェクトについて記述している内部リファレンス ページの最後にリスト アップされていて、それらのプロパティはそれらのインタフェイスを参照することによって閲覧できます。

グラフィカル オブジェクトについての情報を見つけ出す方法を レイアウト オブジェクトのプロパティ で説明しました。同じアプローチを使って、内部リファレンスで小節線を譜刻するレイアウト オブジェクトを見つけ出します。Backend を経由して All layout objects に行くと、そこに BarLine と呼ばれるレイアウト オブジェクトがあることがわかります。そのレイアウト オブジェクトのプロパティには小節線の可視性をコントロールする 2 つのプロパティが含まれています: break-visibility と stencil です。さらに、BarLine はインタフェイスのいくつかをサポートしています。grob-interface もサポートされていて、そこには transparent プロパティと color プロパティが含まれています。これらすべてが小節線の可視性に影響を与えます (そしてもちろん、拡大解釈すれば他の多くのレイアウト オブジェクトにも影響を与えます)。次はこれらのプロパティをそれぞれ見ていきましょう。


[ < ] [ > ]   [ << ] [ 上へ ] [ >> ]         [トップ] [目次] [インデックス] [ ? ]

stencil プロパティ

@translationof The stencil property

このプロパティは譜刻すべきシンボル (図柄) を指定することによって小節線の見た目を制御します。他の多くのプロパティでも共通に言えますが、このプロパティの値に #f をセットすることによって何も譜刻させなくすることができます。ではやってみましょう。以前と同様に、暗黙のコンテキスト Voice は省略します:

 
\relative {
  \time 12/16
  \override BarLine.stencil = ##f
  c''4 b8 c d16 c d8 |
  g,8 a16 b8 c d4 e16 |
  e8
}

[image of music]

小節線はまだ譜刻されています。何が間違っているのでしょうか?内部リファレンスに戻って、BarLine のプロパティを記述しているページを読み返してください。そのページの先頭に “BarLine オブジェクトは Bar_engraver によって作成されます” と記述されています。Bar_engraver ページに行ってください。そのページの最後で、Bar_engraver を保持するコンテキストがリスト アップされています。それらのコンテキストのタイプはすべて Staff です。ですから、\override コマンドが予期したように機能しなかったのは、BarLine はデフォルトの Voice コンテキストの中にはいなかったからなのです。コンテキストが間違って指定された場合、そのコマンドは機能しません。エラー メッセージは生成されず、ログ ファイルには何もログが残りません。正しいコンテキストを付け加えることによってコマンドを修正してみましょう:

 
\relative {
  \time 12/16
  \override Staff.BarLine.stencil = ##f
  c''4 b8 c d16 c d8 |
  g,8 a16 b8 c d4 e16 |
  e8
}

[image of music]

今度は小節線が消えました。stencil プロパティに #f をセットする操作は頻繁に行うので、短くしたコマンド \omit が用意されています:

 
\relative {
  \time 12/16
  \omit Staff.BarLine
  c''4 b8 c d16 c d8 |
  g,8 a16 b8 c d4 e16 |
  e8
}

[image of music]

しかしながら、stencil プロパティを #f にセットするのではなく、オブジェクトの大きさを修正する必要があるオブジェクトも存在するということに注意してください。そのようなオブジェクトの stencil プロパティを #f にセットするとエラーになります。 例えば、NoteHead オブジェクトの stencil プロパティを #f にセットするとエラーになります。この場合、point-stencil を使ってサイズが 0 のステンシル (型、型紙) をオブジェクトにセットします:

 
\relative {
  c''4 c
  \once \override NoteHead.stencil = #point-stencil
  c4 c
}

[image of music]


[ < ] [ > ]   [ << ] [ 上へ ] [ >> ]         [トップ] [目次] [インデックス] [ ? ]

break-visibility property

@translationof The break-visibility property

内部リファレンスの BarLine のプロパティから break-visibility プロパティには 3 つのブール値からなるベクトルが必要であることがわかります。これらはそれぞれ、小節線が行の最後、行の途中、行の最初に譜刻されるかどうかを制御します。以下の例ではすべての小節線を消したいので、必要となる値は #(#f #f #f) です (同じ結果を all-invisible でも得ることができます)。それではやってみましょう。Staff コンテキストを含めることを忘れないでください。また、この値を書くときに括弧を始める前に ## を付ける必要があることにも注意してください。# の 1 つはベクトルを導入するときに値の一部として必要とされ、先頭の # は \override コマンドの中で常に値の前に置くことが必要とされます。

 
\relative {
  \time 12/16
  \override Staff.BarLine.break-visibility = ##(#f #f #f)
  c''4 b8 c d16 c d8 |
  g,8 a16 b8 c d4 e16 |
  e8
}

[image of music]

今度もすべての小節線が消えました。


[ < ] [ > ]   [ << ] [ 上へ ] [ >> ]         [トップ] [目次] [インデックス] [ ? ]

transparent プロパティ

@translationof The transparent property

内部リファレンスの grob-interface ページにあるプロパティから transparent プロパティはブール値であることがわかります。これはグラフィカル オブジェクトを透明にする場合には #t にセットします。次の例では、小節線ではなく拍子記号を不可視にしてみましょう。そうするには、まず、拍子記号のグラフィカル オブジェクト名を見つける必要があります。TimeSignature レイアウト オブジェクトのプロパティを見つけるために内部リファレンスの ‘すべてのレイアウト オブジェクト’ ページに戻ってください。TimeSigunature は Time_signature_engraver によって作り出され、さらに、Time_signature_engraver は Staff コンテキストに含まれ、さらに、Staff コンテキストは grob-interface をサポートしているということがわかります。そのため、拍子記号を透明にするためのコマンドは以下のようになります:

 
\relative {
  \time 12/16
  \override Staff.TimeSignature.transparent = ##t
  c''4 b8 c d16 c d8 |
  g,8 a16 b8 c d4 e16 |
  e8
}

[image of music]

transparent プロパティに #t をセットする操作も頻繁に行うので、短くしたコマンド \hide が用意されています:

 
\relative {
  \time 12/16
  \hide Staff.TimeSignature
  c''4 b8 c d16 c d8 |
  g,8 a16 b8 c d4 e16 |
  e8
}

[image of music]

どちらの場合でも拍子記号は消えました。しかしながら、このコマンドは拍子記号があるべき場所に隙間を残しています。たぶん、これは学生がその部分を埋めるための練習としては望ましいでしょうが、他の状況ではこの隙間は望ましくありません。この隙間を取り除くには、拍子記号の transparent の代わりにステンシル (型、型紙) を #f にセットします:

 
\relative {
  \time 12/16
  \omit Staff.TimeSignature
  c''4 b8 c d16 c d8 |
  g,8 a16 b8 c d4 e16 |
  e8
}

[image of music]

違いは明白です: ステンシルを #f にセットする (\omit を用いることもできます) と、オブジェクト自体が削除されます。一方、オブジェクトを transparent (透明) にする (\hide を用いることもできます)とそのオブジェクトは消えますが、オブジェクトは不可視になっただけです。

色 (color)


[ < ] [ > ]   [ << ] [ 上へ ] [ >> ]         [トップ] [目次] [インデックス] [ ? ]

color プロパティ

@translationof The color property

最後に、小節線の色を白にすることによって小節線を不可視にしてみましょう。(これには白い小節線が譜線と交差したところで譜線を見えたり見えなくしてしまうかもしれないという問題があります。以下のいくつかの例で、このことを予測することはできないと思うかもしれません。そうなる理由と、それを制御する方法についての詳細は、 (notation)Painting objects white section ‘Painting objects white’ in Notation Reference でカバーされています。しかしここでは色について学んでいるところなので、オブジェクトを白で描くことの限界を受け入れるだけにしてください。)

grob-interface はカラー プロパティの値はリストであると指定しています。しかしながら、そのリストが何であるべきなのかの説明はありません。カラー プロパティで必要とされるリストは実際のところ内部ユニットの中にある値のリストです。しかし、内部ユニットの中にある値を知らなくても済むように、カラーを指定するための手段がいくつか用意されています。最初の方法は (notation)List of colors section ‘List of colors’ in Notation Reference にある最初の表でリスト アップされている ‘標準’ のカラーの 1 つを使用する方法です。小節線を白にするには以下のように記述します:

 
\relative {
  \time 12/16
  \override Staff.BarLine.color = #white
  c''4 b8 c d16 c d8 |
  g,8 a16 b8 c d4 e16 |
  e8
}

[image of music]

今度も再び小節線は見えなくなりました。white の前にアポストロフィは付かないということに注意してください – これはシンボルではなく変数です。この変数は評価される時、小節線の色を白にセットするのに必要な内部的な値のリストを提供します。標準カラー リストにある他のカラーもまた変数です。小節線の色をこのリストの中にある他の変数に変更することで、これが機能することをあなた自身で納得できます。

カラーを変えるための 2 つ目の方法は、 (notation)List of colors section ‘List of colors’ in Notation Reference の 2 番目のリストの中にある X11 カラー名のリストを使用する方法です。しかしながら、X11 カラー名は関数 x11-color によって実際の値にマッピングされます。x11-color は以下のように X11 カラー シンボルを内部値のリストに変換します:

 
\relative {
  \time 12/16
  \override Staff.BarLine.color = #(x11-color 'white)
  c''4 b8 c d16 c d8 |
  g,8 a16 b8 c d4 e16 |
  e8
}

[image of music]

この場合、関数 x11-color はシンボルを引数として扱うので、変数として評価されないようシンボルの前にアポストロフィを付ける必要があり、関数呼び出し全体を括弧で囲む必要があるということに注意してください。

もう 1 つ関数があります。RGB 値を内部カラーに変換する rgb-color 関数です。この関数は赤、緑、青の輝度を表す 3 つの引数をとります。これらの引数は 0 から 1 までの値をとります。ですから、カラーを赤にセットする場合の値は (rgb-color 1 0 0) となり、白の場合は (rgb-color 1 1 1) となります:

 
\relative {
  \time 12/16
  \override Staff.BarLine.color = #(rgb-color 1 1 1)
  c''4 b8 c d16 c d8 |
  g,8 a16 b8 c d4 e16 |
  e8
}

[image of music]

最後に、X11 カラー セットの一部であるグレー スケールを用いる方法もあります。グレー スケールの範囲は黒 'grey0 から白 'grey100 まで 1 段階ずつあります。グレー スケールの使用方法を示すために、例の中にあるすべてのレイアウト オブジェクトのカラーをさまざまな濃度のグレーにセットしてみましょう:

 
\relative {
  \time 12/16
  \override Staff.StaffSymbol.color = #(x11-color 'grey30)
  \override Staff.TimeSignature.color = #(x11-color 'grey60)
  \override Staff.Clef.color = #(x11-color 'grey60)
  \override Voice.NoteHead.color = #(x11-color 'grey85)
  \override Voice.Stem.color = #(x11-color 'grey85)
  \override Staff.BarLine.color = #(x11-color 'grey10)
  c''4 b8 c d16 c d8 |
  g,8 a16 b8 c d4 e16 |
  e8
}

[image of music]

各レイアウト オブジェクトに関連付けされているコンテキストに注意してください。これらのコンテキストを正しく取得することが重要であり、そうしなければコマンドは機能しません!コンテキストの中には特定のエングラーバが置かれているということを忘れないでください。エングラーバに対するデフォルト コンテキストを見つけ出すには、内部リファレンスのレイアウト オブジェクトからスタートして、そこからそれを作り出すエングラーバのページに行きます。エングラーバのページには、通常はどのコンテキストにそのエングラーバが含まれているのかが記述されています。


[ < ] [ > ]   [ << ] [ 上へ ] [ >> ]         [トップ] [目次] [インデックス] [ ? ]

4.3.2 オブジェクトのサイズ

@translationof Size of objects

以前の例を見直すことから始めてみましょう (@ref{Nesting music expressions} を参照してください)。そこでは (music-glossary)ossia section ‘ossia’ in Music Glossary として新たに一時的な譜を導入する方法が示されています。

 
\new Staff ="main" {
  \relative {
    r4 g'8 g c4 c8 d |
    e4 r8
    <<
      { f8 c c }
      \new Staff \with {
        alignAboveContext = "main" }
      { f8 f c }
    >>
    r4 |
  }
}

[image of music]

通常、オッシアは音部記号と拍子記号無しで記述され、メインの譜よりもわずかに小さく譜刻されます。今度は、すでに音部記号と拍子記号を削除する方法を知っています – 以下のようにそれぞれのステンシルを #f にセットするだけです:

 
\new Staff ="main" {
  \relative {
    r4 g'8 g c4 c8 d |
    e4 r8
    <<
      { f8 c c }
      \new Staff \with {
        alignAboveContext = "main"
      }
      {
        \omit Staff.Clef
        \omit Staff.TimeSignature
        { f8 f c }
      }
    >>
    r4 |
  }
}

[image of music]

ここで、\with 節の後にある追加の括弧のペアが、その括弧に囲まれているオーバライドと音楽がオッシア譜に適用されることを保証するために、必要となります。

しかし、\with を用いた譜コンテキストの変更と \override を用いた音部記号と拍子記号のステンシルの変更 (あるいはこのケースでは \omit を用いています) との違いは何なのでしょうか?主な違いは、\with 節の中で行われた変更はそのコンテキストが作成されるときに行われ、そのコンテキストでは デフォルト 値として残ります。一方、音楽の中に埋め込まれた \set コマンドや \override コマンドは動的です – それらは音楽のある特定のポイントに同期して変更を行います。変更が \unset や \revert を使ってセットを解除されたり元に戻された場合、デフォルト値 – これは \with 節でセットされていた場合はその値、そうでない場合は通常のデフォルト値 – に戻ります。

いくつかのコンテキスト プロパティは \with 節でのみ変更可能です。これらは、コンテキストが作成された後では、変更されることのないプロパティです。alignAboveContext とそのパートナー alignBelowContext がそのようなプロパティです – いったん譜が作成されると、譜のアラインメントは決定され、それを後で変更しようとすることには意味がありません。

レイアウト オブジェクトのデフォルト値は \with 節でセットすることもできます。通常の \override コマンドをコンテキスト名を省いて使用するだけです。コンテキスト名を省略するのは、そのコンテキストは明らかに \with 節が変更しようとしているコンテキストだからです。実際、\with 節の中でコンテキストを指定するとエラーが発生します。

それでは上記の例を以下のように書き換えます:

 
\new Staff ="main" {
  \relative {
    r4 g'8 g c4 c8 d |
    e4 r8
    <<
      { f8 c c }
      \new Staff \with {
        alignAboveContext = "main"
        % この譜には音部記号を譜刻しません
        \override Clef.stencil = ##f
        % この譜には拍子記号を譜刻しません
        \override TimeSignature.stencil = ##f
      }
      { f8 f c }
    >>
    r4 |
  }
}

[image of music]

transparent プロパティを設定したり stencil を消すために短縮形 \hide と \omit を使うことができ、結果として以下のようになります:

 
\new Staff ="main" {
  \relative {
    r4 g'8 g c4 c8 d |
    e4 r8
    <<
      { f8 c c }
      \new Staff \with {
        alignAboveContext = "main"
        % この譜には音部記号を譜刻しません
        \omit Clef
        % この譜には拍子記号を譜刻しません
        \omit TimeSignature
      }
      { f8 f c }
    >>
    r4 |
  }
}

[image of music]

最後に、レイアウト オブジェクトのサイズを変更してみます。

いくつかのレイアウト オブジェクトはある書体から選択された図柄として作成されます。これには符頭、臨時記号、マークアップ、音部記号、拍子記号、強弱記号、歌詞が含まれます。それらのサイズは、これから見ていくように、font-size プロパティを変更することによって変更されます。スラーやタイのような他のレイアウト オブジェクト – 一般には、スパナ オブジェクト (spanner objects) – は個々に描かれるため、font-size プロパティとは関係がありません。一般に、それらのオブジェクトはそれらを取り付けられるオブジェクトからサイズを決定する (訳者: 例えば、スラーはそのスラーが付着する音符からそのスラーのサイズを決定する) ので、通常はサイズを手動で変更する必要はありません。さらに、符幹や小節線の長さ、連桁や他の線の太さ、譜線の間隔などといった他のプロパティはすべて特別な方法で変更する必要があります。

オッシアの例に戻って、まず font-size を変更してみましょう。これを行うには 2 通りの方法があります。以下のようなコマンドで NoteHead のような各オブジェクト タイプのフォント サイズを変更する:

 
\override NoteHead.font-size = #-2

あるいは、\set を使って特別なプロパティ fontSize を設定するか、それを \with 節に含める (ただし、\set は含めません) ことによってすべてのフォントのサイズを変更します:

 
\set fontSize = #-2

これらの命令文は両方ともフォント サイズを前の値から 2 段階減らします。各段階でサイズはおよそ 12% 増減します。

それではオッシアの例でフォント サイズを変更してみましょう:

 
\new Staff ="main" {
  \relative {
    r4 g'8 g c4 c8 d |
    e4 r8
    <<
      { f8 c c }
      \new Staff \with {
        alignAboveContext = "main"
        \omit Clef
        \omit TimeSignature
        % すべてのフォント サイズを約 24% 減らします
        fontSize = #-2
      }
      { f8 f c }
    >>
    r4 |
  }
}

[image of music]

これでもまだ完璧ではありません。符頭とフラグは小さくなりましたが、符幹はそれに対して長すぎ、譜線は離れすぎています。これらをフォント サイズの減少に比例してスケール ダウンさせる必要があります。次のサブ セクションでそれを行う方法について議論します。


[ < ] [ > ]   [ << ] [ 上へ ] [ >> ]         [トップ] [目次] [インデックス] [ ? ]

4.3.3 オブジェクトの長さと太さ

@translationof Length and thickness of objects

LilyPond では距離と長さは一般に譜スペース – 譜の中の隣り合う線の間隔 – で測ります (特別な場合では、譜スペースの半分で測ることもあります)。一方、たいていの thickness プロパティは line-thickness と呼ばれる内部プロパティを単位として測ります。例えば、デフォルトでは、ヘアピン (訳者: 強弱記号) の線の太さは 1 単位の line-thickness であり、音符の符幹の thickness は 1.3 です。けれども、それとは単位の異なる太さプロパティがあるということにも注意してください。例えば、連桁の太さプロパティは譜スペースで測ります。

それでは、どうやって長さをフォント サイズに比例させるのでしょうか?これは、まさにこの目的のために提供されている magstep と呼ばれる特別な関数の助けを借りることによって達成できます。この関数は引数を 1 つ – フォント サイズの変化 (前の例では #-2) – をとり、他のオブジェクトの縮小に比例したスケーリング ファクタを返します。以下のように使用します:

 
\new Staff ="main" {
  \relative {
    r4 g'8 g c4 c8 d |
    e4 r8
    <<
      { f8 c c }
      \new Staff \with {
        alignAboveContext = "main"
        \omit Clef
        \omit TimeSignature
        fontSize = #-2
        % 符幹の長さと譜線の間隔を減らします
        \override StaffSymbol.staff-space = #(magstep -2)
      }
      { f8 f c }
    >>
    r4 |
  }
}

[image of music]

符幹の長さと他の多くの長さに関係するプロパティは常に staff-space プロパティの値と比例関係になるよう算出されるため、それらの長さも自動的にスケール ダウンされます。これはオッシアの垂直方向のスケールだけに効果を及ぼすということに注意してください – 水平方向のスケールは、メインの音楽と同期するよう、メインの音楽のレイアウトによって決定されるため、水平方向のスケールは staff-space の変更によっていかなる影響も受けません。もちろん、メインの音楽のすべてのスケールがこの方法で変更された場合、水平方向のスペースも影響を受けます。このことについては、後のレイアウト セクションで議論します。

そして、これでオッシアの作成は完了です。他のすべてのオブジェクトのサイズと長さが類似の方法で変更されるかもしれません。

上記の例のようなスケールのちょっとした変更に対して、小節線、連桁、ヘアピン、スラーなどのさまざまな描画線の太さは通常はグローバルな調節を必要としません。ある特定のレイアウト オブジェクトの太さを調節する必要がある場合、それを達成する最良の方法はそのオブジェクトの thickness プロパティをオーバライドすることです。スラーの太さを変更する例は レイアウト オブジェクトのプロパティ で示されています。すべての描画オブジェクト (つまり、フォントから作り出されるオブジェクトではないもの) の太さが同様の方法で変更されるかもしれません。


[ < ] [ > ]   [ << ] [ 上へ ] [ >> ]

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.