@c -*- coding: utf-8; mode: texinfo; documentlanguage: ja -*-
@ignore
- Translation of GIT committish: b5a7328d19ebb2e40c3fbb7f1715b6023dc8329d
+ Translation of GIT committish: c1b0482f63f881bd3f67845e5f76a3e04675ef2a
When revising a translation, copy the HEAD committish of the
version that you are working on. For details, see the Contributors'
Guide, node Updating translation committishes..
@end ignore
-@c \version "2.13.36"
+@c \version "2.19.2"
@c Translators: Yoshiki Sawada
@c Translation status: post-GDP
いくつかのタイプのオブジェクトには特別な名前が与えられています。@c
符頭、符幹、スラー、タイ、運指記号、音部記号などの譜刻される出力上の記譜要素を@c
表すオブジェクトは @q{レイアウト オブジェクト} と呼ばれ、@c
-しばしば @q{グラフィカル オブジェクト}
+しばしば @q{グラフィカル オブジェクト}
あるいは短くして @q{グロッブ (Grob: GRaphical OBject)} と呼ばれます。@c
これらのオブジェクトも上記の汎用的な観点から見るとオブジェクトであり、@c
-それゆえ、それらもまたそれらのオブジェクトに関連付けされたプロパティ --
+それゆえ、それらもまたそれらのオブジェクトに関連付けされたプロパティ --
そのオブジェクトの位置、サイズ、色など -- を持ちます。
いくつかのレイアウト オブジェクトも特別です。@c
他の多くのグラフィカル オブジェクトが置かれる場所は一点ではありません
-- それらは開始点、終了点、そしておそらくそれらの形に関係する@c
他のプロパティを持ちます。@c
-これらのオブジェクトのように形が伸長されるオブジェクトは
+これらのオブジェクトのように形が伸長されるオブジェクトは
@q{スパナ (Spanners)} と呼ばれます。
@q{インタフェイス} とは何なのかという説明が残っています。@c
-多くのオブジェクト -- たとえそれらが非常に異なっていたとしても --
+多くのオブジェクト -- たとえそれらが非常に異なっていたとしても --
は同じ方法で処理される必要がある共通特徴を共有します。@c
例えば、すべてのグラフィカル オブジェクトは色、サイズ、位置などを持ち、@c
これらのプロパティはすべて LilyPond が入力ファイルを構文解釈する最中に@c
同じ方法で処理されます。@c
これらの内部オペレーションを簡潔にするために、これらの共通アクションと@c
-プロパティは 1 つのグループとして
+プロパティは 1 つのグループとして
@code{grob-interface} と呼ばれるオブジェクトにまとめられています。@c
これと同じような共有プロパティのグループ化が他にも多くあり、@c
それぞれに対して最後に @code{interface} が付く名前が与えられています。@c
これから見ていくのですが、タイプが異なるオブジェクトのプロパティは@c
異なるコマンドによって変更されます。@c
-そのため、プロパティの名前からオブジェクトの種類を識別できるようになると@c
-役に立ちます。
+そのため、名前からオブジェクトやプロパティのタイプを識別できるように@c
+なると役に立ちます。
@node 調整手段
@cindex tweaking methods (調性手段)
-@strong{\override コマンド}
+@menu
+* \override コマンド::
+* \revert コマンド::
+* \once 接頭辞::
+* \overrideProperty コマンド::
+* \tweak コマンド::
+@end menu
+
+@node \override コマンド
+@unnumberedsubsubsec @code{\override} コマンド
+@translationof The \override command
@cindex override command (override コマンド)
@cindex override syntax (override 構文)
@funindex \override
@funindex override
-我々はすでに @ref{コンテキスト プロパティを変更する} と
+我々はすでに @ref{コンテキスト プロパティを変更する} と
@ref{エングラーバを追加 / 削除する} で @strong{コンテキスト} のプロパティを@c
変更したり、@strong{エングラーバ} を追加/削除したりするために使用するコマンド
@code{\set} と @code{\with} を見てきました。@c
このコマンドの一般的な構文は以下のようなものです:
@example
-\override @var{Context}.@var{LayoutObject} #'@var{layout-property} =
-#@var{value}
+\override @var{Context}.@var{LayoutObject}.@var{layout-property} = #@var{value}
@end example
@noindent
-これは @var{Context} コンテキストのメンバである
-@var{LayoutObject} という名前のレイアウトの
+これは @var{Context} コンテキストのメンバである
+@var{LayoutObject} という名前のレイアウトの
@var{layout-property} という名前のプロパティに値 @var{value} をセットします。
必要とされているコンテキストが明白であり、それが最下位レベルのコンテキストである
-- つまり、@code{Voice}, @code{ChordNames} や @code{Lyrics} である
--- 場合、その @var{Context} は省略可能可能であり (そして通常は省略されます)、@c
+-- 場合、その @var{Context} は省略可能であり (そして通常は省略されます)、@c
この後の例の多くでも省略します。@c
後ほど、コンテキストを指定しなければならない場合について見ていきます。
-これから後のセクションでは広範囲に亘るプロパティとそれらの値を扱います。@c
-しかしながら、そのフォーマットとそれらのコマンドの使用方法を示すためには、@c
-容易に理解できる簡単なプロパティと値を 2, 3 使用してみるだけです。
-
-今や、レイアウト プロパティの前に置かれなければならない @code{#'} や@c
-プロパティ値の前に置かれなければならない @code{#} について心配する必要は@c
-ありません。@c
-これらは常にそのような形式で正確に記述されなければなりません。@c
-これは調整では最も一般的に使用されるコマンドであり、この章の残りの部分の@c
-大半ではプロパティ (変更コマンド) の使用方法を示すための例を記述しています。@c
-ここでは符頭の色を変更する簡単な例を挙げます:
+これから後のセクションでは広範囲に亘るプロパティとそれらの値を扱います
+-- @ref{Types of properties} を参照してください。@c
+しかしながら、このセクションではそれらのフォーマットとコマンドの使い方を示す@c
+ために、容易に理解できる簡単なプロパティと値をいくつか使用してみるだけです。
+LilyPond の基本的な表記は音符、演奏時間、それにマークアップなどの音楽要素@c
+です。@c
+数字、文字列、それにリストなどのもっと基本的な表記は @q{Scheme モード}
+で処理されます -- 表記の先頭に @samp{#} を記述することでこのモードが@c
+呼び出されます。@c
+これらの表記は LilyPond の音楽モードでも有効な表現である場合もありますが、@c
+このマニュアルでは一貫性を保つために常に @samp{#} を付けて記述します。@c
+Scheme モードについての更なる情報は @rextend{LilyPond Scheme syntax}
+を参照してください。
+
+@code{\override} は調整で用いられる最も一般的なコマンドであり、@c
+本章の残りの大半を使ってこのコマンドの使用例を示します。@c
+まずは符頭の色を変更する簡単な例を挙げます:
@cindex color property, example (color プロパティの例)
@cindex NoteHead, example of overriding (NoteHead をオーバライドする例)
@lilypond[quote,fragment,ragged-right,verbatim,relative=1]
c4 d
-\override NoteHead #'color = #red
+\override NoteHead.color = #red
e4 f |
-\override NoteHead #'color = #green
+\override NoteHead.color = #green
g4 a b c |
@end lilypond
-@strong{\revert コマンド}
+
+@node \revert コマンド
+@unnumberedsubsubsec @code{\revert} コマンド
+@translationof The \revert command
@cindex revert command (revert コマンド)
@funindex \revert
@funindex revert
-一旦オーバライドされると、そのプロパティは再度オーバライドされるか
+一旦オーバライドされると、そのプロパティは再度オーバライドされるか
@code{\revert} コマンドに遭遇するまで新しい値のままでいます。@c
@code{\revert} コマンドは以下の構文を持ち、@c
プロパティの値をオリジナルのデフォルト値に戻します。@c
@example
-\revert @var{Context}.@var{LayoutObject} #'@var{layout-property}
+\revert @var{Context}.@var{LayoutObject}.@var{layout-property}
@end example
繰り返しますが、@code{\override} コマンドでの @var{Context} と同様に、@c
@lilypond[quote,fragment,ragged-right,verbatim,relative=1]
c4 d
-\override NoteHead #'color = #red
+\override NoteHead.color = #red
e4 f |
-\override NoteHead #'color = #green
+\override NoteHead.color = #green
g4 a
-\revert NoteHead #'color
+\revert NoteHead.color
b4 c |
@end lilypond
-@strong{\once 接頭辞}
+
+@node \once 接頭辞
+@unnumberedsubsubsec The @code{\once} prefix
+@translationof The \once prefix
@funindex \once
@funindex once
@cindex color property, example (color プロパティの例)
@cindex NoteHead, example of overriding (NoteHead をオーバライドする例)
-@lilypond[quote,fragment,ragged-right,verbatim,relative=1]
+@lilypond[quote,verbatim,relative=1]
c4 d
-\once \override NoteHead #'color = #red
+\override NoteHead.color = #red
e4 f |
-\once \override NoteHead #'color = #green
-g4 a b c |
+\once \override NoteHead.color = #green
+g4 a
+\revert NoteHead.color
+b c |
@end lilypond
-@strong{\overrideProperty コマンド}
+@code{\once} 接頭辞をさまざまな定義済みコマンドの前に置くことで、@c
+コマンドの効果を次の音楽タイミングに限定することもできます:
+
+@lilypond[quote,verbatim,relative=1]
+c4 d
+\once \stemDown
+e4 f |
+g4 a
+\once \hideNotes
+b c |
+@end lilypond
+
+しかしながら、@code{\...Neutral}, @code{\...Off}, それに @code{\un...}
+の形式の定義済みコマンドの前に @code{\once} を置いても効果はありません。@c
+なぜなら、それらのコマンドは内部的に @code{\override} ではなく、@code{\revert}
+を用いるためです。
+
+
+@node \overrideProperty コマンド
+@unnumberedsubsubsec @code{\overrideProperty} コマンド
+@translationof The \overrideProperty command
@cindex overrideProperty command (overrideProperty コマンド)
詳細は @rextend{Difficult tweaks} を参照してください。
@c Maybe explain in a later iteration -td
-@strong{\tweak コマンド}
+@node \tweak コマンド
+@unnumberedsubsubsec @code{\tweak} コマンド
+@translationof The \tweak command
@cindex tweak command (tweak コマンド)
@funindex tweak
利用可能な最後の調整コマンドは @code{\tweak} です。@c
-これは同じタイミングで起こるオブジェクト
--- 和音の中にある音符などのように --
-のプロパティを変更するために使用されます。@c
+これは同じ音楽タイミングで発生するいくつかのオブジェクトのうち、@c
+1 つのオブジェクトだけを選択してプロパティを変更したい場合に@c
+使用します
+-- 例えば、和音の中にある 1 つの音符のプロパティを変更する場合です。@c
@code{\override} コマンドを使用すると和音の中にあるすべての音符に@c
影響を与えます。@c
一方、@code{\tweak} は入力ストリームの中でその @code{\tweak} の@c
@lilypond[quote,fragment,ragged-right,verbatim,relative=1]
<c e g>4
-\once \override NoteHead #'font-size = #-3
+\once \override NoteHead.font-size = #-3
<c e g>4
<c e g>4
@end lilypond
@code{\tweak} コマンドはこれとは異なるやり方で処理されます。@c
これは入力ストリームの中ですぐ後に続く要素にだけ作用します。@c
-しかしながら、これは入力ストリームから直接作成されるオブジェクト
+最もシンプルな形式の @code{\tweak} コマンドは、@c
+コマンドの直後にある要素から直接作成されるオブジェクト
-- 本質的に符頭とアーティキュレーション -- にだけ効果を持ちます。@c
-符幹や臨時記号などのオブジェクトは後で作成されるため、@c
-この方法では調整できません。@c
-さらに、@code{\tweak} が符頭に適用される場合、@c
-それらは和音の内部になければ @emph{なりません}
--- つまり、単一山括弧 @code{< .. >} の内部です。@c
-そのため、単一の音符 (和音ではない音符) を調整するには、@c
-@code{\tweak} コマンドはその音符とともに@c
-単一の山括弧で囲わなければなりません。
それでは例に戻り、この方法で和音の真ん中の音符のサイズを変更します:
@lilypond[quote,fragment,ragged-right,verbatim,relative=1]
<c e g>4
-<c \tweak #'font-size #-3 e g>4
+<c \tweak font-size #-3 e g>4
@end lilypond
@code{\tweak} の構文は @code{\override} コマンドの構文とは@c
異なるということに注意してください。@c
-ã\82³ã\83³ã\83\86ã\82ã\82¹ã\83\88ã\82\82ã\83¬ã\82¤ã\82¢ã\82¦ã\83\88 ã\82ªã\83\96ã\82¸ã\82§ã\82¯ã\83\88ã\82\82æ\8c\87å®\9aã\81\95ã\82\8cã\81¾ã\81\9bã\82\93。@c
-実際、それらを指定するとエラーになります。@c
-これらは両方とも入力ストリームの中で後に続く要素によって示されます。@c
+ã\82³ã\83³ã\83\86ã\82ã\82¹ã\83\88ã\82\92æ\8c\87å®\9aã\81\97ã\81¾ã\81\9bã\82\93 -- å®\9fé\9a\9bã\80\81æ\8c\87å®\9aã\81\99ã\82\8bã\81¨ã\82¨ã\83©ã\83¼ã\81«ã\81ªã\82\8aã\81¾ã\81\99。@c
+コンテキストとレイアウト オブジェクトはどちらも入力ストリームの中で@c
+後に続く要素によって示されます。@c
さらに、イコール記号を使うべきではないということに注意してください。@c
-そのため、@code{\tweak} コマンドの一般的な構文は単純に以下のようになります:
+そのため、簡単な形式の @code{\tweak} コマンドは以下のようになります:
@example
-\tweak #'@var{layout-property} #@var{value}
+\tweak @var{layout-property} #@var{value}
@end example
さらに、@code{\tweak} コマンドは一連のアーティキュレーションの中にある@c
@lilypond[quote,fragment,ragged-right,verbatim,relative=2]
a4^"Black"
- -\tweak #'color #red ^"Red"
- -\tweak #'color #green _"Green"
+ -\tweak color #red ^"Red"
+ -\tweak color #green _"Green"
@end lilypond
@noindent
-@code{\tweak} コマンドは、まるでそれがアーティキュレーションの@c
-一部であるかのように、アーティキュレーション マークの前に@c
-置かれなければならないということに注意してください。
+@code{\tweak} コマンドはアーティキュレーション マークの前に配置する@c
+必要があることに注意してください。@c
+なぜなら、調整された表記がアーティキュレーションとして適用される必要がある@c
+ためです。@c
+複数の向き記号 (@code{^} または @code{_}) で上書きした場合、@c
+最後に適用される左端の記号が勝ち残ります。
+
+@cindex @code{\tweak}, Accidental (臨時記号に @code{\tweak} を用いる)
+@cindex @code{\tweak}, specific layout object (レイアウト オブジェクトを指定して @code{\tweak} を用いる)
+
+符幹や臨時記号などのオブジェクトは後になってから作成されるもので、@c
+@code{\tweak} コマンドの後に続くイベントから直接作成されません。@c
+そのような直接作成されないオブジェクトの場合、明示的にレイアウト
+オブジェクト名を指定して LilyPond がそれらのオブジェクトの起源を@c
+追跡できるようにすることで、@code{\tweak} で調整することができます:
+
+@lilypond[quote,fragment,ragged-right,verbatim,relative=2]
+<\tweak Accidental.color #red cis4
+ \tweak Accidental.color #green es
+ g>
+@end lilypond
+
+この長い形式の @code{\tweak} コマンドは以下のように記述することができます:
+
+@example
+\tweak @var{layout-object}.@var{layout-property} @var{value}
+@end example
@cindex tuplets, nested (ネストされた連符)
@cindex triplets, nested (ネストされた 3 連符)
@cindex color property, example (color プロパティの例)
@lilypond[quote,ragged-right,verbatim,fragment,relative=2]
-\tweak #'direction #up
-\times 4/3 {
- \tweak #'color #red
- \times 2/3 { c8[ c c] }
- \times 2/3 { c8[ c c] }
- \times 2/3 { c8[ c 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] }
}
@end lilypond
@cindex transparent property, example (transparent プロパティの例)
@cindex TupletNumber, example of overriding (TupletNumber をオーバライドする例)
-@c NOTE Tuplet brackets collide if notes are high on staff
-@c See issue 509
@lilypond[quote,ragged-right,verbatim,fragment,relative=1]
-\times 2/3 { c8[ c c] }
-\once \override TupletNumber
- #'text = #tuplet-number::calc-fraction-text
-\times 2/3 {
+\tuplet 3/2 { c8[ c c] }
+\once \override TupletNumber.text = #tuplet-number::calc-fraction-text
+\tuplet 3/2 {
c8[ c]
c8[ c]
- \once \override TupletNumber #'transparent = ##t
- \times 2/3 { c8[ c c] }
- \times 2/3 { c8[ c c] }
+ \once \override TupletNumber.transparent = ##t
+ \tuplet 3/2 { c8[ c c] }
+ \tuplet 3/2 { c8[ c c] }
}
@end lilypond
内部リファレンスを見ていく前に一言警告です。@c
これは @strong{リファレンス} ドキュメントであり、@c
-説明はほんの少しかまったく含まれていません:
+説明はほんの少しかまったく含まれていません:
リファレンスの目的は情報を正確に、かつ簡潔に提供することです。@c
そのため、内部リファレンスを一見してひるんでしまうかもしれません。@c
しかし、心配しないでください!@c
ということになります。@c
その答えを得るために内部リファレンス -- 縮めて IR -- を見なければなりません。
-あなたが使用しているバージョンの LilyPond のための内部リファレンスは
+あなたが使用しているバージョンの LilyPond のための内部リファレンスは
LilyPond ウェブサイト @uref{http://lilypond.org} で見つかるでしょう。@c
ドキュメント ページに行き、内部リファレンスへのリンクをクリックしてください。@c
学習目的のためには標準の HTML バージョンを使うべきであり、@c
しかしながら、あなたが調整するレイアウト オブジェクトの名前を@c
想像できる場合は、すぐに内部リファレンスに行ってそこで探す方が簡単です。
-内部リファレンスの Slur ページでは、まず Slur オブジェクトは
+内部リファレンスの Slur ページでは、まず Slur オブジェクトは
@code{Slur_engraver} によって作成されるということが述べられています。@c
-それから、標準設定がをリストアップされています。@c
-標準設定はアルファベット順にはなって @strong{いない} ということに@c
-注意してください。@c
-太さを制御していそうなプロパティを探してブラウザを@c
-スクロール ダウンさせていくと、以下が見つかります:
+それから、標準設定がリストアップされています。@c
+スラーの太さを制御していそうなプロパティを探してブラウザをスクロール ダウン@c
+させていくと、以下が見つかります:
@example
@code{thickness} (number)
スラーをもっと太くするには新しい値を 1.2 よりも大きくすべきであることが@c
わかります。
-今度は、レイアウト オブジェクト名で見つけた値を置き換えることによって
+今度は、レイアウト オブジェクト名で見つけた値を置き換えることによって
@code{\override} コマンドを構築することができます。@c
コンテキストは省略します。@c
最初は太さに非常に大きな値を割り当ててみます。@c
実行するコマンドは以下のようになります:
@example
-\override Slur #'thickness = #5.0
+\override Slur.thickness = #5.0
@end example
-プロパティ名の前に @code{#'} を付けること、@c
新しい値の前に @code{#} を付けることを忘れないでください!
最後の疑問は @q{このコマンドをどこに置くべきか?} ということです。@c
\time 6/8
{
% Increase thickness of all following slurs from 1.2 to 5.0
- \override Slur #'thickness = #5.0
+ \override Slur.thickness = #5.0
r4 bes8 bes[( g]) g |
g8[( es]) es d[( f]) as |
as8 g
-- しかしながら、まだ練習が必要でしょう。@c
これは以下の例で提供されます。
-@subheading コンテキストを見つけ出す
+@subsubsubheading コンテキストを見つけ出す
@cindex context, finding (コンテキストを見つけ出す)
@cindex context, identifying correct (正しいコンテキストを特定する)
そのため、スラーは @code{Slur_engraver} が存在しているコンテキストの@c
どれかで作成されるということになります。@c
@code{Slur_engraver} へのリンクを辿ります。@c
-そのページの最後の方で @code{Slur_engraver} は 5 つのボイス コンテキスト
+そのページの最後の方で @code{Slur_engraver} は 7 つのボイス コンテキスト
-- 標準のボイス コンテキストである @code{Voice} を含む
-- の一部であることが述べられています。@c
ですから、推測は正しかったのです。@c
-- このことは、そこに音符を入力するという事実によって明らかに示されています
-- ため、ここではそのコンテキストを省略することができるのです。
-@subheading 1 回だけオーバライドする
+@subsubsubheading 1 回だけオーバライドする
@cindex overriding once only (一度だけオーバライドする)
@cindex once override (一度だけオーバライドする)
{
r4 bes8
% 直後にあるスラーのみを太くします
- \once \override Slur #'thickness = #5.0
+ \once \override Slur.thickness = #5.0
bes8[( g]) g |
g8[( es]) es d[( f]) as |
as8 g
@code{\once} コマンドは @code{\set} コマンドの前でも使用される可能性があります。
-@subheading 元に戻す
+@subsubsubheading 元に戻す
@cindex revert (元に戻す)
@cindex default properties, reverting to (デフォルトのプロパティに戻す)
{
r4 bes8
% 直後にあるスラーのみを太くします
- \once \override Slur #'thickness = #5.0
+ \once \override Slur.thickness = #5.0
bes[( g]) g |
% 直後にあるスラーのみを太くします
- \once \override Slur #'thickness = #5.0
+ \once \override Slur.thickness = #5.0
g8[( es]) es d[( f]) as |
as8 g
}
@noindent
あるいは、@code{\once} コマンドを省略して、2 番目のスラーの後に
-@code{thickness} プロパティをデフォルト値に戻すために
+@code{thickness} プロパティをデフォルト値に戻すために
@code{\revert} コマンドを使うこともできます:
@cindex Slur, example of overriding (Slur をオーバライドする例)
{
r4 bes8
% 以後のスラーの太さを 1.2 から 5.0 に増やします
- \override Slur #'thickness = #5.0
+ \override Slur.thickness = #5.0
bes[( g]) g |
g8[( es]) es
% 以後のスラーの太さをデフォルトの 1.2 に戻します
- \revert Slur #'thickness
+ \revert Slur.thickness
d8[( f]) as |
as8 g
}
@code{font-shape(symbol)} を含むフォントを制御するユーザが@c
設定可能なプロパティをすべて見つけました。@c
-@code{font-shape(symbol)} では @code{symbol} を @code{upright},
+@code{font-shape(symbol)} では @code{symbol} を @code{upright},
@code{italics}, あるいは @code{caps} にセットすることができます。
そこには、@code{font-series} と @code{font-size} もリスト アップされている@c
ことに気づくでしょう。@c
-そこで次のような疑問が湧いてきます:
-共通フォントプロパティ @code{font-series} と @code{font-size} は
+そこで次のような疑問が湧いてきます:
+共通フォントプロパティ @code{font-series} と @code{font-size} は
@code{LyricText} とインタフェイス @code{font-interface} の両方で@c
リスト アップされているのに、なぜ @code{font-shape} はそうでないのか?@c
その答えは、@code{font-series} と @code{font-size} は、@c
前と同様に、コンテキストを省略します。
話は逸れますが重要なことを 1 つ挙げます。@c
-@code{font-shape} の値はシンボルなので、シングル アポストロフィ @code{'} を@c
-付ける必要があるということに注意してください。@c
-その理由は、以前の例での @code{thickness} や @code{font-shape} の前に@c
-アポストロフィを付ける必要がある理由と同じです。@c
-それらも両方ともシンボルです。@c
-シンボルは LilyPond によって内部的に読み取られます。@c
-それらのいくつかは @code{thickness} や @code{font-shape} のようなプロパティの@c
-名前であり、他のものは @code{italic} のようにプロパティに与えられる値として@c
-使用されます。@c
-任意のテキスト文字列との違い -- 任意のテキスト文字列は @code{"a text string"}
+プロパティには値としてシンボル (例えば @code{italic}) を取るものがあります。@c
+シンボルの前にはアポストロフィ @code{'} を置く必要があり、そうすることで内部的に
+LilyPond に読み込まれます。@c
+任意のテキスト文字列との違い -- 任意のテキスト文字列は @code{"a text string"}
のような形で表記されます -- に注意してください。@c
-シンボルと文字列についてのより詳細な説明は、@rextend{Scheme tutorial} を@c
-参照してください。
+シンボルと文字列についてのより詳細な説明は@rextend{Scheme tutorial}
+を参照してください。
-さて、それでは歌詞をイタリック体で譜刻するために必要となる
+さて、それでは歌詞をイタリック体で譜刻するために必要となる
@code{\override} コマンドは以下のようになります:
@example
-\override LyricText #'font-shape = #'italic
+\override LyricText.font-shape = #'italic
@end example
@noindent
as8 g
}
\addlyrics {
- \override LyricText #'font-shape = #'italic
+ \override LyricText.font-shape = #'italic
The man who | feels love's sweet e -- | mo -- tion
}
}
@noindent
これで歌詞がすべてイタリック体で譜刻されました。
-@subheading 歌詞モードの中でコンテキストを指定する
-
-@cindex context, specifying in lyric mode (歌詞モード内でコンテキストを指定する)
-@cindex lyric mode, specifying context (歌詞モード内でコンテキストを指定する)
-
-歌詞の場合、以前のようなコマンドの発行の仕方の中でコンテキストを@c
-指定しようとしても失敗するでしょう。@c
-歌詞モードの中で入力される音節はスペース、改行、数字のいずれかで区切られます。@c
-他のすべての文字は音節の一部と見なされます。@c
-これが、終端の @code{@}} の前にはスペースか改行を@c
-置かなければならない理由です。@c
-そうしないと、終端の @code{@}} は最後の音節の一部に含まれてしまいます。@c
-同様に、コンテキスト名とオブジェクト名を区切るために、@c
-ピリオドまたはドット @q{.} の前と後ろにスペースを挿入しなければなりません。@c
-さもないと 2 つの名前は一緒になってしまい、インタプリタはそれらを@c
-認識できなくなります。@c
-そのため、コマンドは以下のようにすべきです:
-
-@example
-\override Lyrics . LyricText #'font-shape = #'italic
-@end example
-
@warning{歌詞の中では、最後の音節と終端の波括弧の間に常にスペースを@c
置いてください。}
-@warning{歌詞の中のオーバライドでは、コンテキスト名とオブジェクト名の@c
-間にあるドットの両側に常にスペースを置いてください。}
-
@seealso
拡張: @rextend{Scheme tutorial}
@cindex property types (プロパティ タイプ)
-これまでにプロパティのタイプを 2 つ見てきました:
+これまでにプロパティのタイプを 2 つ見てきました:
@code{number} と @code{symbol} です。@c
プロパティに与える値が有効であるためには、その値は正しいタイプであり、@c
そのタイプのルールに従っていなければなりません。@c
表示されています。@c
ここに、あなたが必要になるであろうプロパティのタイプを、@c
そのタイプのルールといくつかの例と共にリスト アップします。@c
-もちろん、@code{\override} コマンドの中でプロパティの値を入力する時は、@c
-常にそれらの値の前にハッシュ記号 @code{#} を付け加える必要があります。
+@code{\override} コマンドの中でプロパティの値を入力する時は、@c
+当然、常にそれらの値の前にハッシュ記号 @code{#} を付け加える必要があります
+-- 例え、その値自体が @code{#} で始まっていたとしても付け加える必要があり@c
+ます。@c
+ここでは定数の例だけを示します: Scheme を用いて値の計算をしたいのであれば、@c
+@rextend{Calculations in Scheme} を参照してください。
@multitable @columnfractions .2 .45 .35
@headitem プロパティ タイプ
@tab 真か偽のどちらかで、それぞれ #t と #f で表されます
@tab @code{#t}, @code{#f}
@item Dimension (譜スペース)
- @tab 正の小数 (譜スペース単位)
+ @tab 小数 (譜スペース単位)
@tab @code{2.5}, @code{0.34}
@item Direction
- @tab 有効な向きを表す定数またはそれと等価な数値 (-1 から 1 までの小数が@c
+ @tab 向きを表す有効な定数またはそれと等価な数値 (-1 から 1 までの小数が@c
許可されます)
@tab @code{LEFT}, @code{CENTER}, @code{UP},
- @code{1}, @code{-1}
+ @code{1}, @w{@code{-1}}
@item Integer
- @tab æ£ã\81®æ\95´æ\95°
- @tab @code{3}, @code{1}
+ @tab 整数
+ @tab @code{3}, @code{-1}
@item List
- @tab 値のセット。@c
-セットの値はスペースで区切られ、前にアポストロフィが付いた括弧で囲まれます
- @tab @code{'(left-edge staff-bar)}, @code{'(1)},
+ @tab 一連の定数またはシンボル。@c
+ スペースで区切られ、前にアポストロフィが付いた括弧で囲まれます
+ @tab @code{'(left-edge staff-bar)}, @code{'(1)}, @code{'()},
@code{'(1.0 0.25 0.5)}
@item Markup
@tab 有効なマークアップ
@tab @code{\markup @{ \italic "cresc." @}}
@item Moment
@tab make-moment 関数で構築される全音符の分数
- @tab @code{(ly:make-moment 1 4)},
- @code{(ly:make-moment 3 8)}
+ @tab @code{(ly:make-moment 1/4)},
+ @code{(ly:make-moment 3/8)}
@item Number
@tab 正または負の小数
- @tab @code{3.5}, @code{-2.45}
+ @tab @code{3.5}, @w{@code{-2.45}}
@item (数の) Pair
@tab @q{スペース . スペース} で区切られ、前にアポストロフィが付いた括弧で@c
囲まれた 2 つの数値
@tab @code{bend::print}, @code{ly:text-interface::print},
@code{#f}
@item Vector
- @tab 前にアポストロフィ-ハッシュ @code{'#} が付いた括弧で囲まれた
-3 要素のリスト
- @tab @code{'#(#t #t #f)}
+ @tab @code{#(}@dots{}@code{)} で囲まれたいくつかの定数
+ @tab @code{#(#t #t #f)}
@end multitable
内部リファレンス ページの最後にリスト アップされていて、@c
それらのプロパティはそれらのインタフェイスを参照することによって閲覧できます。
-グラフィカル オブジェクトについての情報を見つけ出す方法を
+グラフィカル オブジェクトについての情報を見つけ出す方法を
@ref{レイアウト オブジェクトのプロパティ} で説明しました。@c
同じアプローチを使って、内部リファレンスで小節線を@c
譜刻するレイアウト オブジェクトを見つけ出します。@c
@emph{Backend} を経由して @emph{All layout objects} に行くと、@c
そこに @code{BarLine} と呼ばれる@c
レイアウト オブジェクトがあることがわかります。@c
-そのレイアウト オブジェクトのプロパティには小節線の可視性をコントロールする
+そのレイアウト オブジェクトのプロパティには小節線の可視性をコントロールする
2 つのプロパティが含まれています: @c
@code{break-visibility} と @code{stencil} です。@c
さらに、@code{BarLine} はインタフェイスのいくつかをサポートしています。@c
拡大解釈すれば他の多くのレイアウト オブジェクトにも影響を与えます)。@c
次はこれらのプロパティをそれぞれ見ていきましょう。
-@subheading ステンシル (stencil)
+@menu
+* stencil プロパティ::
+* break-visibility プロパティ::
+* transparent プロパティ::
+* color プロパティ::
+@end menu
+
+
+@node stencil プロパティ
+@unnumberedsubsubsec @code{stencil} プロパティ
+@translationof The stencil property
@cindex stencil property (stencil プロパティ)
このプロパティは譜刻すべきシンボル (図柄) を指定することによって@c
小節線の見た目を制御します。@c
-他の多くのプロパティでも共通に言えますが、このプロパティの値に
+他の多くのプロパティでも共通に言えますが、このプロパティの値に
@code{#f} をセットすることによって何も譜刻させなくすることができます。@c
ではやってみましょう。@c
以前と同様に、暗黙のコンテキスト @code{Voice} は省略します:
@lilypond[quote,fragment,ragged-right,verbatim,relative=2]
{
\time 12/16
- \override BarLine #'stencil = ##f
+ \override BarLine.stencil = ##f
c4 b8 c d16 c d8 |
g,8 a16 b8 c d4 e16 |
e8
何が間違っているのでしょうか?@c
内部リファレンスに戻って、@code{BarLine} のプロパティを記述しているページを@c
読み返してください。@c
-そのページの先頭に
+そのページの先頭に
@qq{BarLine オブジェクトは Bar_engraver によって作成されます} と@c
記述されています。@c
@code{Bar_engraver} ページに行ってください。@c
@lilypond[quote,fragment,ragged-right,verbatim,relative=2]
{
\time 12/16
- \override Staff.BarLine #'stencil = ##f
+ \override Staff.BarLine.stencil = ##f
c4 b8 c d16 c d8 |
g,8 a16 b8 c d4 e16 |
e8
}
@end lilypond
-今度は小節線が消えました。
+今度は小節線が消えました。@c
+@code{stencil} プロパティに @code{#f} をセットする操作は頻繁に行うので、@c
+短くしたコマンド @code{\omit} が用意されています:
+@funindex \omit
+
+@lilypond[quote,fragment,ragged-right,verbatim,relative=2]
+{
+ \time 12/16
+ \omit Staff.BarLine
+ c4 b8 c d16 c d8 |
+ g,8 a16 b8 c d4 e16 |
+ e8
+}
+@end lilypond
しかしながら、@code{stencil} プロパティを @code{#f} にセットするのではなく、@c
オブジェクトの大きさを修正する必要があるオブジェクトも存在するということに@c
@lilypond[quote,verbatim,relative=2]
{
c4 c
- \once \override NoteHead #'stencil = #point-stencil
+ \once \override NoteHead.stencil = #point-stencil
c4 c
}
@end lilypond
-@subheading 可視性の破棄 (break-visibility)
+
+@node break-visibility プロパティ
+@unnumberedsubsubsec @code{break-visibility} property
+@translationof The break-visibility property
@cindex break-visibility property (break-visibility プロパティ)
-内部リファレンスの @code{BarLine} のプロパティから
+内部リファレンスの @code{BarLine} のプロパティから
@code{break-visibility} プロパティには 3 つのブール値からなるベクトルが@c
必要であることがわかります。@c
これらはそれぞれ、小節線が行の最後、行の途中、行の最初に譜刻されるかどうかを@c
制御します。@c
-以下の例ではすべての小節線を消したいので、必要となる値は
-@code{'#(#f #f #f)} です。@c
+以下の例ではすべての小節線を消したいので、必要となる値は
+@code{#(#f #f #f)} です
+(同じ結果を @code{all-invisible} でも得ることができます)。@c
それではやってみましょう。@c
@code{Staff} コンテキストを含めることを忘れないでください。@c
-また、この値を書くときに括弧を始める前に @code{#'#} を@c
+また、この値を書くときに括弧を始める前に @code{##} を@c
付ける必要があることにも注意してください。@c
-@code{'#} はベクトルを導入するときに値の一部として必要とされ、@c
+@code{#} の 1 つはベクトルを導入するときに値の一部として必要とされ、@c
先頭の @code{#} は @code{\override} コマンドの中で常に値の前に@c
置くことが必要とされます。
@lilypond[quote,fragment,ragged-right,verbatim,relative=2]
{
\time 12/16
- \override Staff.BarLine #'break-visibility = #'#(#f #f #f)
+ \override Staff.BarLine.break-visibility = ##(#f #f #f)
c4 b8 c d16 c d8 |
g,8 a16 b8 c d4 e16 |
e8
今度もすべての小節線が消えました。
-@subheading 透過性 (transparent)
+
+@node transparent プロパティ
+@unnumberedsubsubsec @code{transparent} プロパティ
+@translationof The transparent property
@cindex transparent property (transparent プロパティ)
@cindex transparency (透明性)
-内部リファレンスの @code{grob-interface} ページにあるプロパティから
+内部リファレンスの @code{grob-interface} ページにあるプロパティから
@code{transparent} プロパティはブール値であることがわかります。@c
これはグラフィカル オブジェクトを透明にする場合には @code{#t} に@c
セットします。@c
@lilypond[quote,fragment,ragged-right,verbatim,relative=2]
{
\time 12/16
- \override Staff.TimeSignature #'transparent = ##t
+ \override Staff.TimeSignature.transparent = ##t
c4 b8 c d16 c d8 |
g,8 a16 b8 c d4 e16 |
e8
@end lilypond
@noindent
-拍子記号は消えました。@c
+@code{transparent} プロパティに @code{#t} をセットする操作も頻繁に行うので、@c
+短くしたコマンド @code{\hide} が用意されています:
+@funindex \hide
+
+@lilypond[quote,fragment,ragged-right,verbatim,relative=2]
+{
+ \time 12/16
+ \hide Staff.TimeSignature
+ c4 b8 c d16 c d8 |
+ g,8 a16 b8 c d4 e16 |
+ e8
+}
+@end lilypond
+
+@noindent
+どちらの場合でも拍子記号は消えました。@c
しかしながら、このコマンドは拍子記号があるべき場所に隙間を残しています。@c
たぶん、これは学生がその部分を埋めるための練習としては望ましいでしょうが、@c
他の状況ではこの隙間は望ましくありません。@c
@lilypond[quote,fragment,ragged-right,verbatim,relative=2]
{
\time 12/16
- \override Staff.TimeSignature #'stencil = ##f
+ \omit Staff.TimeSignature
c4 b8 c d16 c d8 |
g,8 a16 b8 c d4 e16 |
e8
@end lilypond
@noindent
-違いは明白です: ステンシルを @code{#f} にセットすると、@c
-オブジェクト自体が削除されます。@c
-一方、オブジェクトを @code{transparent} (透明) にするとそのオブジェクトは@c
-消えますが、オブジェクトは不可視になっただけです。
+違いは明白です: ステンシルを @code{#f} にセットする
+(@code{\omit} を用いることもできます) と、オブジェクト自体が削除されます。@c
+一方、オブジェクトを @code{transparent} (透明) にする
+(@code{\hide} を用いることもできます)とそのオブジェクトは消えますが、@c
+オブジェクトは不可視になっただけです。
@subheading 色 (color)
-@cindex color property (color プロパティ)
+@node color プロパティ
+@unnumberedsubsubsec @code{color} プロパティ
+@translationof The color property
最後に、小節線の色を白にすることによって小節線を不可視にしてみましょう。@c
(これには白い小節線が譜線と交差したところで@c
値のリストです。@c
しかし、内部ユニットの中にある値を知らなくても済むように、@c
カラーを指定するための手段がいくつか用意されています。@c
-最初の方法は @ruser{List of colors} にある最初の表でリスト アップされている
+最初の方法は @ruser{List of colors} にある最初の表でリスト アップされている
@q{標準} のカラーの 1 つを使用する方法です。@c
小節線を白にするには以下のように記述します:
@lilypond[quote,fragment,ragged-right,verbatim,relative=2]
{
\time 12/16
- \override Staff.BarLine #'color = #white
+ \override Staff.BarLine.color = #white
c4 b8 c d16 c d8 |
g,8 a16 b8 c d4 e16 |
e8
@noindent
今度も再び小節線は見えなくなりました。@c
@emph{white} の前にアポストロフィは付かないということに注意してください
--- これはシンボルではなく@emph{関数}です。@c
-この関数が呼び出されると、この関数はカラーを白にセットするために@c
-必要とされる内部値のリストを提供します。@c
-標準カラー リストにある他のカラーもまた関数です。@c
-これが機能していることをあなた自身が納得するために、@c
-ã\82«ã\83©ã\83¼ã\82\92ã\81\93ã\81®ã\83ªã\82¹ã\83\88ã\81®ä¸ã\81«ã\81\82ã\82\8bä»\96ã\81®é\96¢æ\95°ã\81® 1 ã\81«å¤\89æ\9b´ã\81\97ã\82\88ã\81\86ã\81¨æ\80\9dã\81\86ã\81\8bã\82\82ã\81\97ã\82\8cã\81¾ã\81\9bã\82\93。
+-- これはシンボルではなく@emph{変数}です。@c
+この変数は評価される時、小節線の色を白にセットするのに必要な内部的な値の@c
+リストを提供します。@c
+標準カラー リストにある他のカラーもまた変数です。@c
+小節線の色をこのリストの中にある他の変数に変更することで、@c
+ã\81\93ã\82\8cã\81\8cæ©\9fè\83½ã\81\99ã\82\8bã\81\93ã\81¨ã\82\92ã\81\82ã\81ªã\81\9fè\87ªèº«ã\81§ç´\8då¾\97ã\81§ã\81\8dã\81¾ã\81\99。
@cindex color, X11 (X11 カラー)
@cindex X11 colors (X11 カラー)
@funindex x11-color
-カラーを変えるための 2 番目の方法は、@ruser{List of colors} の
+カラーを変えるための 2 つ目の方法は、@ruser{List of colors} の
2 番目のリストの中にある X11 カラー名のリストを使用する方法です。@c
-しかしながら、以下のように、これらの前には X11 カラー名を内部値のリストに@c
-変更するもう 1 つの関数 -- @code{x11-color} -- がなければなりません:
+しかしながら、X11 カラー名は関数 @code{x11-color} によって実際の値に@c
+マッピングされます。@c
+@code{x11-color} は以下のように X11 カラー シンボルを内部値のリストに@c
+変換します:
@cindex BarLine, example of overriding (BarLine をオーバライドする例)
@cindex color property, example (color プロパティの例)
@lilypond[quote,fragment,ragged-right,verbatim,relative=2]
{
\time 12/16
- \override Staff.BarLine #'color = #(x11-color 'white)
+ \override Staff.BarLine.color = #(x11-color 'white)
c4 b8 c d16 c d8 |
g,8 a16 b8 c d4 e16 |
e8
@noindent
この場合、関数 @code{x11-color} はシンボルを引数として扱うので、@c
-シンボルの前にはアポストロフィをつけなくてはならず、@c
-@code{x11-color} とシンボルは括弧で囲まれていなければならないということに@c
-注意してください。
+変数として評価されないようシンボルの前にアポストロフィを付ける必要があり、@c
+関数呼び出し全体を括弧で囲む必要があるということに注意してください。
@cindex rgb colors (RGB カラー)
@cindex color, rgb (RGB カラー)
@funindex rgb-color
-ã\81¾ã\81 3 ç\95ªç\9b®ã\81®æ\96¹æ³\95ã\81\8cæ®\8bã\81£ã\81¦ã\81\84ます。@c
-これは RGB 値を内部カラーに変換する @code{rgb-color} 関数を使用する方法です。@c
+ã\82\82ã\81\86 1 ã\81¤é\96¢æ\95°ã\81\8cã\81\82ã\82\8aます。@c
+RGB 値を内部カラーに変換する @code{rgb-color} 関数です。@c
この関数は赤、緑、青の輝度を表す 3 つの引数をとります。@c
これらの引数は 0 から 1 までの値をとります。@c
ですから、カラーを赤にセットする場合の値は @code{(rgb-color 1 0 0)} となり、@c
@lilypond[quote,fragment,ragged-right,verbatim,relative=2]
{
\time 12/16
- \override Staff.BarLine #'color = #(rgb-color 1 1 1)
+ \override Staff.BarLine.color = #(rgb-color 1 1 1)
c4 b8 c d16 c d8 |
g,8 a16 b8 c d4 e16 |
e8
@end lilypond
最後に、X11 カラー セットの一部であるグレー スケールを用いる方法もあります。@c
-グレー スケールの範囲は黒 @code{'grey0'} から白 @code{'grey100'} まで
+グレー スケールの範囲は黒 @code{'grey0} から白 @code{'grey100} まで
1 段階ずつあります。@c
グレー スケールの使用方法を示すために、@c
例の中にあるすべてのレイアウト オブジェクトのカラーをさまざまな濃度の@c
@lilypond[quote,fragment,ragged-right,verbatim,relative=2]
{
\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)
+ \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)
c4 b8 c d16 c d8 |
g,8 a16 b8 c d4 e16 |
e8
@cindex objects, size of (オブジェクトのサイズ)
@cindex objects, changing size of (オブジェクトのサイズを変更する)
-以前の例を見直すことから始めてみましょう (@ref{音楽表記をネストする} を@c
-参照してください)。@c
+以前の例を見直すことから始めてみましょう
+(@ref{Nesting music expressions} を参照してください)。@c
そこでは @rglos{ossia} として新たに一時的な譜を導入する方法が示されています。
@cindex alignAboveContext property, example (alignAboveContext プロパティの例)
@cindex alignAboveContext property, example (alignAboveContext プロパティの例)
@cindex @code{\with}, example (@code{\with} の例)
-@cindex stencil property, example (stencil プロパティの例)
+@funindex \omit
@cindex Clef, example of overriding (Clef をオーバライドする例)
@cindex TimeSignature, example of overriding (TimeSignature をオーバライドする例)
alignAboveContext = #"main"
}
{
- \override Staff.Clef #'stencil = ##f
- \override Staff.TimeSignature #'stencil = ##f
+ \omit Staff.Clef
+ \omit Staff.TimeSignature
{ f8 f c }
}
>>
その括弧に囲まれているオーバライドと音楽がオッシア譜に適用されることを@c
保証するために、必要となります。
-しかし、@code{\with} を使った譜コンテキストの変更と
-@code{\override} を使った音部記号と拍子記号のステンシルの変更との違いは@c
-何なのでしょうか?@c
+しかし、@code{\with} を用いた譜コンテキストの変更と @code{\override}
+を用いた音部記号と拍子記号のステンシルの変更 (あるいはこのケースでは
+@code{\omit} を用いています) との違いは何なのでしょうか?@c
主な違いは、@code{\with} 節の中で行われた変更はそのコンテキストが@c
作成されるときに行われ、@c
そのコンテキストでは @strong{デフォルト} 値として残ります。@c
セットすることもできます。@c
通常の @code{\override} コマンドをコンテキスト名を省いて@c
使用するだけです。@c
-コンテキスト名を省略するのは、そのコンテキストは明らかに
+コンテキスト名を省略するのは、そのコンテキストは明らかに
@code{\with} 節が変更しようとしているコンテキストだからです。@c
実際、@code{\with} 節の中でコンテキストを指定するとエラーが発生します。
\new Staff \with {
alignAboveContext = #"main"
% この譜には音部記号を譜刻しません
- \override Clef #'stencil = ##f
+ \override Clef.stencil = ##f
+ % この譜には拍子記号を譜刻しません
+ \override TimeSignature.stencil = ##f
+ }
+ { f8 f c }
+ >>
+ r4 |
+ }
+}
+@end lilypond
+
+@code{transparent} プロパティを設定したり @code{stencil} を消すために@c
+短縮形 @code{\hide} と @code{\omit} を使うことができ、結果として@c
+以下のようになります:
+
+@lilypond[quote,fragment,ragged-right,verbatim,relative=2]
+\new Staff ="main" {
+ \relative g' {
+ r4 g8 g c4 c8 d |
+ e4 r8
+ <<
+ { f8 c c }
+ \new Staff \with {
+ alignAboveContext = #"main"
+ % この譜には音部記号を譜刻しません
+ \omit Clef
% この譜には拍子記号を譜刻しません
- \override TimeSignature #'stencil = ##f
+ \omit TimeSignature
}
{ f8 f c }
>>
フォント サイズを変更する:
@example
-\override NoteHead #'font-size = #-2
+\override NoteHead.font-size = #-2
@end example
あるいは、@code{\set} を使って特別なプロパティ @code{fontSize} を設定するか、@c
{ f8 c c }
\new Staff \with {
alignAboveContext = #"main"
- \override Clef #'stencil = ##f
- \override TimeSignature #'stencil = ##f
+ \omit Clef
+ \omit TimeSignature
% すべてのフォント サイズを約 24% 減らします
fontSize = #-2
}
で測ります (特別な場合では、譜スペースの半分で測ることもあります)。@c
一方、たいていの @code{thickness} プロパティは @code{line-thickness} と@c
呼ばれる内部プロパティを単位として測ります。@c
-例えば、デフォルトでは、ヘアピン (訳者: 強弱記号) の線の太さは
+例えば、デフォルトでは、ヘアピン (訳者: 強弱記号) の線の太さは
1 単位の @code{line-thickness} であり、@c
音符の符幹の @code{thickness} は 1.3 です。@c
けれども、それとは単位の異なる太さプロパティがあるということにも@c
それでは、どうやって長さをフォント サイズに比例させるのでしょうか?@c
これは、まさにこの目的のために提供されている @code{magstep} と呼ばれる@c
特別な関数の助けを借りることによって達成できます。@c
-この関数は引数を 1 つ -- フォント サイズの変化 (前の例では #-2) --
+この関数は引数を 1 つ -- フォント サイズの変化 (前の例では #-2) --
をとり、他のオブジェクトの縮小に比例したスケーリング ファクタを返します。@c
以下のように使用します:
{ f8 c c }
\new Staff \with {
alignAboveContext = #"main"
- \override Clef #'stencil = ##f
- \override TimeSignature #'stencil = ##f
+ \omit Clef
+ \omit TimeSignature
fontSize = #-2
% 符幹の長さと譜線の間隔を減らします
- \override StaffSymbol #'staff-space = #(magstep -2)
+ \override StaffSymbol.staff-space = #(magstep -2)
}
{ f8 f c }
>>
@end lilypond
@noindent
-符幹の長さと他の多くの長さに関係するプロパティは常に
+符幹の長さと他の多くの長さに関係するプロパティは常に
@code{staff-space} プロパティの値と比例関係になるよう算出されるため、@c
それらの長さも自動的にスケール ダウンされます。@c
これはオッシアの垂直方向のスケールだけに効果を及ぼすということに@c
注意してください -- 水平方向のスケールは、メインの音楽と同期するよう、@c
-メインの音楽のレイアウトによって決定されるため、水平方向のスケールは
+メインの音楽のレイアウトによって決定されるため、水平方向のスケールは
@code{staff-space} の変更によっていかなる影響も受けません。@c
もちろん、メインの音楽のすべてのスケールがこの方法で変更された場合、@c
水平方向のスペースも影響を受けます。@c
LilyPond が持つ譜外部オブジェクトの垂直位置のルールは、@c
譜外部オブジェクトをできるだけ譜の近くに、しかし他のオブジェクトと@c
衝突しない程度の近さに置くというものです。@c
-以下で示すように、LilyPond はオブジェクトを配置する順番を決定するために
+以下で示すように、LilyPond はオブジェクトを配置する順番を決定するために
@code{outside-staff-priority} プロパティを使用します。
最初に、LilyPond はすべての譜内部オブジェクトを配置します。@c
2 つのオブジェクトが同じ @code{outside-staff-priority} を持つ場合、@c
先に発生するオブジェクトが譜の近くに配置されます。
-以下の例では、すべてのマークアップ テキストが同じ優先度を持っています
+以下の例では、すべてのマークアップ テキストが同じ優先度を持っています
(なぜなら、優先度が明示的にセットされていないからです)。@c
@q{Text3} が自動的に譜の近く、@q{Text2} の@c
すぐ下に納まるよう配置されていることに注意してください。
c2^"Text4" |
@end lilypond
-デフォルトでは、譜も互いにできるだけ近くなるよう配置されます
+デフォルトでは、譜も互いにできるだけ近くなるよう配置されます
(最小間隔に従います)。@c
音符が隣接する譜に向かって長く突き出てている場合、譜を離さないと@c
記譜したものが重なり合ってしまう場合にのみ譜は離されます。@c
@translationof Within-staff objects
これまでにコマンド @code{\voiceXXX} がスラー、タイ、運指法記号、@c
-符幹の向きに依存する他のすべてに対してどのように影響を与えるかを見てきました。@c
+符幹の向きに依存する他のすべてに対してどのように影響を与えるかを見てきました
+-- @ref{Explicitly instantiating voices} を参照してください。
これらのコマンドは、多声部音楽を記述しているときに上下する旋律を@c
見分けられるようにすることを可能にするために不可欠なものです。@c
しかしながら、この自動機能をオーバライドする必要がある場合もあります。@c
このオーバライドは音楽全体に対しても、個々の音符に対してもできます。@c
-この自動機能を制御しているプロパティは各レイアウト オブジェクトの
+この自動機能を制御しているプロパティは各レイアウト オブジェクトの
@code{direction} プロパティです。@c
まず、これは何をするのかを説明し、それから、作成済みのコマンドを@c
いくつか紹介します。@c
符幹やフラグのような他のオブジェクトも上下の向きによって位置が左右します。@c
@code{direction} がセットされているときは、これは自動的に制御されます。
+@menu
+* direction プロパティ::
+* 運指::
+@end menu
+
+@node direction プロパティ
+@unnumberedsubsubsec @code{direction} プロパティ
+@translationof The direction property
+
@cindex down (下)
@cindex up (上)
@cindex center (中央)
@lilypond[quote,fragment,ragged-right,verbatim,relative=2]
a4 g c a |
-\override Stem #'direction = #DOWN
+\override Stem.direction = #DOWN
a4 g c a |
-\override Stem #'direction = #UP
+\override Stem.direction = #UP
a4 g c a |
-\revert Stem #'direction
+\revert Stem.direction
a4 g c a |
@end lilypond
ここで定数 @code{DOWN} と @code{UP} を使っています。@c
-これらはそれぞれ値 @code{-1} と @code{+1} を持ち、定数の代わりに@c
+これらはそれぞれ値 @w{@code{-1}} と @code{+1} を持ち、定数の代わりに@c
それらの数値を使うこともできまはす。@c
さらに値 @code{0} を使う場合もあります。@c
この値は符幹では @code{UP} を意味するものとして扱われますが、@c
@tab 連符記号が音符の下/上にくる
@end multitable
-これらの定義済みコマンドの前には @code{\once} が@c
-付か @strong{ない} かもしれません。@c
-ã\82³ã\83\9eã\83³ã\83\89ã\81®å\8a¹æ\9e\9cã\82\92å\8d\98ä¸\80ã\81®é\9f³ç¬¦ã\81«å\88¶é\99\90ã\81\97ã\81\9fã\81\84å ´å\90\88ã\80\81@c
-等価の @code{\once \override} コマンドを使用するか、@c
-ã\81\82ã\82\8bã\81\84ã\81¯ã\80\81å®\9a義æ¸\88ã\81¿ã\82³ã\83\9eã\83³ã\83\89ã\82\92使ç\94¨ã\81\97ã\81¦ã\80\81å\8a¹æ\9e\9cã\82\92å\8f\97ã\81\91ã\81\9fé\9f³ç¬¦ã\81®å¾\8cã\81«@c
-対応する @code{\xxxNeutral} コマンドを置かなければなりません。
+これらのコマンドで中立/通常の位置に戻すコマンドは @code{\revert} を@c
+用いることで実装されていて、前に @code{\once} が付いて @strong{いない}
+ã\81\8bã\82\82ã\81\97ã\82\8cã\81¾ã\81\9bã\82\93ã\80\82@c
+@code{\override} を用いて実装されているコマンドの効果を単一のタイミング@c
+ã\81«é\99\90å®\9aã\81\97ã\81\9fã\81\84ã\81®ã\81§ã\81\82ã\82\8cã\81°ã\80\81æ\98\8e示ç\9a\84ã\81ªã\82ªã\83¼ã\83\90ã\83©ã\82¤ã\83\89ã\81®å ´å\90\88ã\81¨å\90\8cæ§\98ã\81«ã\80\81@c
+コマンドの前に @code{\once} を配置します。
-@subheading 運指法記号 (Fingering)
+@node 運指
+@unnumberedsubsubsec 運指
+@translationof Fingering
@cindex fingering, placement (運指法記号の配置)
@cindex fingering, chords (和音の運指法記号)
@lilypond[quote,verbatim,relative=2]
c4-5 a-3 f-1 c'-5 |
-\override Fingering #'direction = #DOWN
+\override Fingering.direction = #DOWN
c4-5 a-3 f-1 c'-5 |
-\override Fingering #'direction = #UP
+\override Fingering.direction = #UP
c4-5 a-3 f-1 c'-5 |
@end lilypond
このプロパティには 1 つから 3 つまでの値のリストがセットされるかもしれません。@c
このプロパティは運指法記号を上 (リストに @code{up} がある場合)、@c
下 (リストに @code{down} がある場合)、@c
-左 (リストに @code{left} がある場合。リストに @code{right} がある場合は右)
+左 (リストに @code{left} がある場合。リストに @code{right} がある場合は右)
に配置します。@c
逆に配置位置がリストされていない場合、その位置に運指法記号は配置されません。@c
LilyPond はこれらの制約を受け取り、
後に続く和音の音符への運指法記号をうまく配置します。@c
-@code{left} と @code{right} は相互排他的であるということに注意してください --
+@code{left} と @code{right} は相互排他的であるということに注意してください --
運指法記号は左右のどちらかにしか配置されないか、どちらにも配置されません。
@warning{このコマンドを使って単一の音符への運指法記号の配置を@c
@noindent
運指法記号が少し込み合っているように見える場合は、@c
@code{font-size} でサイズを下げることができます。@c
-デフォルト値は内部リファレンスの @code{Fingering} オブジェクトのページから
-@code{-5} であることがわかるので、@code{-7} にセットしてみましょう:
+デフォルト値は内部リファレンスの @code{Fingering} オブジェクトのページから
+@w{@code{-5}} であることがわかるので、@w{@code{-7}} にセットしてみましょう:
@lilypond[quote,fragment,ragged-right,verbatim,relative=1]
-\override Fingering #'font-size = #-7
+\override Fingering.font-size = #-7
\set fingeringOrientations = #'(left)
<f-2>4
<c-1 e-2 g-3 b-5>4
@translationof Outside-staff objects
譜外部オブジェクトは自動的に衝突を回避するよう配置されます。@c
+配置が最適でない場合に自動配置をオーバライドする方法がいくつかあります。
+
+@menu
+* outside-staff-priority プロパティ::
+* \textLengthOn コマンド::
+* 強弱記号の配置::
+* グラフィカル オブジェクトのサイズ::
+@end menu
+
+
+@node outside-staff-priority プロパティ
+@unnumberedsubsubsec @code{outside-staff-priority} プロパティ
+@translationof The outside-staff-priority property
+
小さな値の @code{outside-staff-priority} プロパティを持つオブジェクトは@c
譜の近くに配置され、他の譜外部オブジェクトは衝突を避けるのに必要な分だけ@c
離されます。@c
@code{#f} にセットされていて、譜外部オブジェクトが作成されたときに@c
その譜外部オブジェクトの @code{outside-staff-priority} に適当な数値が@c
セットされます。@c
-以下の表はデフォルトで @code{Staff} コンテキストまたは
-@code{Voice} コンテキストの中に配置される@c
-いくつかの一般的な譜外部オブジェクトのデフォルトの
+以下の表はいくつかの一般的な譜外部オブジェクトのデフォルトの
@code{outside-staff-priority} 値を示しています。
@multitable @columnfractions .3 .3 .3
@headitem レイアウト オブジェクト
@tab 優先度
@tab 以下のオブジェクトの配置を制御する:
-@item @code{MultiMeasureRestText}
- @tab @code{450}
- @tab 全休符上のテキスト
+@item @code{RehearsalMark}
+ @tab @code{1500}
+ @tab リハーサル記号
+@item @code{MetronomeMark}
+ @tab @code{1000}
+ @tab メトロノーム記号
+@item @code{VoltaBracketSpanner}
+ @tab @code{600}
+ @tab Volta (番号付きのリピート) の囲み
@item @code{TextScript}
@tab @code{450}
@tab マークアップ テキスト
+@item @code{MultiMeasureRestText}
+ @tab @code{450}
+ @tab 全休符上のテキスト
@item @code{OttavaBracket}
@tab @code{400}
@tab オッターバ (オクターブを上下させる記号) の囲み
@item @code{DynamicLineSpanner}
@tab @code{250}
@tab すべての強弱記号
-@item @code{VoltaBracketSpanner}
+@item @code{BarNumber}
@tab @code{100}
- @tab Volta (番号付きのリピート) の囲み
+ @tab 小節番号
@item @code{TrillSpanner}
@tab @code{50}
@tab トリル記号
@c KEEP LY
@lilypond[quote,fragment,ragged-right,verbatim,relative=1]
% 以降のテキスト スパナの詳細を設定します
-\override TextSpanner #'(bound-details left text)
+\override TextSpanner.bound-details.left.text
= \markup { \small \bold Slower }
% 強弱記号を譜の上に配置します
\dynamicUp
スパナは @code{\startTextSpan} コマンドから
@code{\stopTextSpan} コマンドまで延び、テキストのフォーマットは
@code{\override TextSpanner} コマンドによって定義されます。@c
-詳細は @ruser{Text spanners} を参照してください。
+詳細は @ruser{テキスト スパナ} を参照してください。
この例はさらにオッターバ囲みを作成する方法についても示しています。
@cindex tweaking rehearsal mark placement (リハーサル記号の配置を調節する)
@cindex rehearsal marks, tweaking placement (リハーサル記号の配置を調節する)
-小節番号、メトロノーム記号、リハーサル記号は示されていないということに@c
-注意してください。@c
-デフォルトでは、それらは @code{Score} コンテキストの中で作成され、@c
-それらの @code{outside-staff-priority} は @code{Staff} コンテキストの中で@c
-作成されるレイアウト オブジェクトとは異なり無視されます。@c
-小節番号、メトロノーム記号あるいはリハーサル記号を@c
-それらの @code{outside-staff-priority} に従って配置したいのなら、@c
-@code{Score} コンテキストからそれぞれ @code{Bar_number_engraver},
-@code{Metronome_mark_engraver}, @code{Mark_engraver} を削除して最上位の
-@code{Staff} コンテキストに置く必要があります。@c
-そうした場合、それらの記号には@c
-以下のデフォルトの @code{outside-staff-priority} 値が与えられます:
-
-@multitable @columnfractions .3 .3
-@headitem レイアウト オブジェクト @tab 優先度
-@item @code{RehearsalMark} @tab @code{1500}
-@item @code{MetronomeMark} @tab @code{1000}
-@item @code{BarNumber} @tab @code{ 100}
-@end multitable
-
@code{outside-staff-priority} のデフォルト値による配置が@c
あなたの望みに合わない場合、いずれかのオブジェクトの優先度を@c
オーバライドすることになるかもしれません。@c
@cindex TextSpanner, example of overriding (TextSpanner をオーバライドする例)
@cindex bound-details property, example (bound-details プロパティの例)
+@c KEEP LY
@lilypond[quote,fragment,ragged-right,verbatim,relative=1]
% 以降のテキスト スパナの詳細を設定します
-\override TextSpanner #'(bound-details left text)
+\override TextSpanner.bound-details.left.text
= \markup { \small \bold Slower }
% 強弱記号を譜の上に配置します
\dynamicUp
% 以降のオッターバ囲みをテキスト スパナの下に配置します
-\once \override Staff.OttavaBracket #'outside-staff-priority = #340
+\once \override Staff.OttavaBracket.outside-staff-priority = #340
% オッターバ囲みの開始
\ottava #1
c'4 \startTextSpan
c,4 c c c |
@end lilypond
+これらのオブジェクトのいくつか
+-- 特に、小節番号、メトロノーム記号、それにリハーサル記号 --
+はデフォルトでは @code{Score} コンテキストの中にあるため、@c
+それらのプロパティをオーバライドする場合は適切なコンテキストを@c
+指定する必要があることに注意してください。
+
@cindex slurs and outside-staff-priority (スラーと outside-staff-priority)
@cindex slurs and articulations (スラーとアーティキュレーション)
@cindex articulations and slurs (アーティキュレーションとスラー)
しばしば譜の上に表示されます。@c
このことは、スラーがまず最初に配置されるため、アーティキュレーションなどの@c
譜外部オブジェクトをあまりにも高い位置に押し上げる可能性があります。@c
-アーティキュレーションの @code{avoid-slur} プロパティに
+アーティキュレーションの @code{avoid-slur} プロパティに
@code{'inside} をセットすることでアーティキュレーションを@c
スラーよりも内側に配置することができます。@c
-しかし、@code{avoid-slur} プロパティはアーティキュレーションの
+しかし、@code{avoid-slur} プロパティはアーティキュレーションの
@code{outside-staff-priority} が @code{#f} にセットされている場合にのみ@c
効果を持ちます。@c
代替手段として、スラーの @code{outside-staff-priority} に数値を@c
@lilypond[quote,verbatim,relative=2]
c4( c^\markup { \tiny \sharp } d4.) c8 |
c4(
-\once \override TextScript #'avoid-slur = #'inside
-\once \override TextScript #'outside-staff-priority = ##f
+\once \override TextScript.avoid-slur = #'inside
+\once \override TextScript.outside-staff-priority = ##f
c4^\markup { \tiny \sharp } d4.) c8 |
-\once \override Slur #'outside-staff-priority = #500
+\once \override Slur.outside-staff-priority = #500
c4( c^\markup { \tiny \sharp } d4.) c8 |
@end lilypond
@lilypond[quote,fragment,ragged-right,verbatim,relative=2]
c2^"Text1"
c2^"Text2" |
-\once \override TextScript #'outside-staff-priority = #500
+\once \override TextScript.outside-staff-priority = #500
c2^"Text3"
c2^"Text4" |
@end lilypond
音符を水平方向に広げる必要があります。@c
これは @code{\textLengthOn} コマンドを用いることで達成できます。
-@subheading \textLengthOn
+@node \textLengthOn コマンド
+@unnumberedsubsubsec @code{\textLengthOn} コマンド
+@translationof The \textLengthOn command
@cindex notes, spreading out with text (テキストに合わせて音符の間隔を広げる)
@end lilypond
デフォルトの動作に戻すためのコマンドは @code{\textLengthOff} です。@c
-@code{\once} は @code{\override}, @code{\set}, @code{\revert}
-それに @code{\unset} だけに付けることができるということを@c
-思い出してください。@c
-そのため、@code{\textLengthOn} で @code{\once} を使うことはできません。
+効果を与えるのが単一の音楽タイミングであれば、@code{\textLengthOn}
+に @code{\once} を付ける方法もあります。
@cindex markup text, allowing collisions (マークアップ テキストの衝突を許可する)
R1 |
% 衝突回避を OFF にします
-\once \override TextScript #'outside-staff-priority = ##f
+\once \override TextScript.outside-staff-priority = ##f
c,,2^"Long Text " c'' |
R1 |
% 衝突回避を OFF にします
-\once \override TextScript #'outside-staff-priority = ##f
+\once \override TextScript.outside-staff-priority = ##f
\textLengthOn % そして textLengthOn を ON にします
c,,2^"Long Text " % 後ろにスペースが付け加えられます
c''2 |
@end lilypond
-@subheading 強弱記号
+
+@node 強弱記号の配置
+@unnumberedsubsubsec 強弱記号の配置
+@translationof Dynamics placement
@cindex tweaking dynamics placement (強弱記号の配置を調整する)
@cindex dynamics, tweaking placement (強弱記号の配置を調整する)
通常、強弱記号は譜の下に配置されます。@c
-しかしながら、@code{dynamicUp} コマンドを使うことで上に@c
-配置されるかもしれません。@c
+しかしながら、@code{\dynamicUp} コマンドを使うことで上に配置される@c
+かもしれません。@c
強弱記号は、その記号が付いている音符と垂直方向の関係で配置され、@c
フレージング スラーや小節番号などの譜内部オブジェクトのすべてよりも@c
下 (あるいは上) に配置されます。@c
そのため、@code{\override} コマンドを用いてそれを達成する方法を@c
見出す必要があります。
-@subheading グラフィカル オブジェクトのサイズ
+@node グラフィカル オブジェクトのサイズ
+@unnumberedsubsubsec グラフィカル オブジェクトのサイズ
+@translationof Grob sizing
@cindex grob sizing (グラフィカル オブジェクトのサイズを決定する)
@cindex sizing grobs (グラフィカル オブジェクトのサイズを決定する)
以下は強弱記号テキストに対してこれを行うコマンドです:
@example
-\override DynamicText #'extra-spacing-width = #'(0 . 0)
+\override DynamicText.extra-spacing-width = #'(0 . 0)
@end example
@noindent
@lilypond[quote,fragment,ragged-right,verbatim,relative=2]
\dynamicUp
-\override DynamicText #'extra-spacing-width = #'(0 . 0)
+\override DynamicText.extra-spacing-width = #'(0 . 0)
a4\f b\mf c\mp b\p |
@end lilypond
@lilypond[quote,fragment,ragged-right,verbatim,relative=2]
\dynamicUp
% Extend width by 1 staff space
-\override DynamicText #'extra-spacing-width = #'(-0.5 . 0.5)
+\override DynamicText.extra-spacing-width = #'(-0.5 . 0.5)
a4\f b\mf c\mp b\p
@end lilypond
@enumerate
@item
-重なり合っているオブジェクトの 1 つの @strong{direction} を
+重なり合っているオブジェクトの 1 つの @strong{direction} を
@ref{譜内部オブジェクト} でリストアップした内部オブジェクトのための@c
定義済みコマンドを用いて変更することになるかもしれません。@c
符幹、スラー、連桁、タイ、強弱記号、テキスト、@c
@item
@code{direction}
-これはすでに詳しくカバーされています --
+これはすでに詳しくカバーされています --
@ref{譜内部オブジェクト} を参照してください。
@item
@cindex right-padding property (right-padding プロパティ)
@cindex staff-padding property (staff-padding プロパティ)
-あるオブジェクトが配置されるとき、そのオブジェクトの
+あるオブジェクトが配置されるとき、そのオブジェクトの
@code{padding} プロパティが、そのオブジェクトとそのオブジェクトに@c
最も隣接するオブジェクトの端との間に置かれる間隔を指定します。@c
@strong{配置される最中}のオブジェクトの @code{padding} 値が@c
@code{padding} によって指定された間隔は @code{side-position-interface} を@c
サポートするオブジェクトすべてに適用することができます。
-臨時記号のグループの配置は、@code{padding} の代わりに、@code{left-padding} と
+臨時記号のグループの配置は、@code{padding} の代わりに、@code{left-padding} と
@code{right-padding} によって制御されます。@c
これらのプロパティは @code{AccidentalPlacement} オブジェクトの中にあり、@c
-注意すべきことに、そのオブジェクトは
+注意すべきことに、そのオブジェクトは
@strong{Staff} コンテキストの中にあります。@c
譜刻プロセスでは、符頭が最初に譜刻され、臨時記号 (がある場合は) が@c
次に符頭の左側に付け加えられます。@c
-このとき、臨時記号と符頭の間隔は
+このとき、臨時記号と符頭の間隔は
@code{right-padding} プロパティによって指定されます。@c
-そのため、@code{AccidentalPlacement} オブジェクトの
+そのため、@code{AccidentalPlacement} オブジェクトの
@code{right-padding} プロパティだけが臨時記号の配置に影響を与えます。
@code{staff-padding} プロパティは @code{padding} プロパティと@c
-深い関わりがあります:
+深い関わりがあります:
@code{padding} プロパティは、@code{side-position-interface} を@c
-サポートするオブジェクトとそれに最隣接する他のオブジェクト
+サポートするオブジェクトとそれに最隣接する他のオブジェクト
(一般には音符や譜線) との間のスペースの最小量を制御します。@c
一方、@code{staff-padding} は常に譜の外側に配置される@c
-レイアウト オブジェクトにのみ適用されます --
+レイアウト オブジェクトにのみ適用されます --
これは譜の外側に配置されるオブジェクトと譜の間に挿入されるべき@c
スペースの最小量を制御します。@c
@code{staff-paddin} は譜ではなく音符との相対関係で配置されるオブジェクトには@c
そのようなオブジェクトに対して @code{staff-padding} のオーバライドを@c
行ったとしてもエラーは起きないかもしれませんが、無視されます。
-あなたが再配置しようとしているオブジェクトに対して求められる
+あなたが再配置しようとしているオブジェクトに対して求められる
@code{padding} プロパティはどれなのかを見つけるには、内部リファレンスに@c
戻ってそのオブジェクトのプロパティを調べる必要があります。@c
@code{padding} プロパティはあなたが再配置しようとしているオブジェクトの中には@c
オブジェクトすべてに対して使用することができます。@c
一般に、テキストを保持するオブジェクトです。@c
値は @code{Left}, @code{RIGHT}, @code{CENTER} です。@c
-代替手段として、@code{-1} から @code{+1} までの数値を@c
+代替手段として、@w{@code{-1}} から @code{+1} までの数値を@c
指定することもできます。@c
@code{-1} は左揃えであり、@code{+1} は右揃え、@c
-その間の数値は左揃えから右揃えへのテキストを移動させます
+その間の数値は左揃えから右揃えへのテキストを移動させます
(訳者: @code{-0.5} であれば、左揃えと中央揃えの中間ということ)。@c
@code{1} よりも大きな数値を指定することでテキストをさらに左へ、@c
-@code{-1} よりも小さな数値を指定することでテキストを@c
+@w{@code{-1}} よりも小さな数値を指定することでテキストを@c
さらに右へ移動させることができます。@c
この値を @code{1} 増減することによる移動量はそのテキストの長さの半分です。
和音の中で近接して配置された音符や異なるボイスの中にあって同時に起こる音符は、@c
符頭の衝突を避けるために、2 つ (場合によってはそれ以上) の列に@c
配置されます。@c
-この列は音符列と呼ばれ、その列に音符をレイアウトするために @code{NoteColumn}
+この列は音符列と呼ばれ、その列に音符をレイアウトするために @code{NoteColumn}
と呼ばれるオブジェクトが作成されます。
-@code{force-hshift} プロパティは @code{NoteColumn} のプロパティです
+@code{force-hshift} プロパティは @code{NoteColumn} のプロパティです
(実際には @code{note-column-interface} のプロパティです)。@c
-このプロパティを変更することで音符列を、音符列特有の単位 --
+このプロパティを変更することで音符列を、音符列特有の単位 --
すなわち、最初のボイスの中にある音符の符頭の幅 -- に従って、@c
移動させることができます。@c
-このプロパティは、通常の
+このプロパティは、通常の
@code{\shiftOn} コマンド
-(@ref{ã\83\9cã\82¤ã\82¹ã\81®æ\98\8e示ç\9a\84ã\81ªã\82¤ã\83³ã\82¹ã\82¿ã\83³ã\82¹å\8c\96} ã\82\92å\8f\82ç\85§ã\81\97ã\81¦ã\81\8fã\81 ã\81\95ã\81\84)
+(@ref{ã\83\9cã\82¤ã\82¹ã\82\92æ\98\8e示ç\9a\84ã\81«ã\82¤ã\83³ã\82¹ã\82¿ã\83³ã\82¹å\8c\96ã\81\99ã\82\8b} ã\82\92å\8f\82ç\85§ã\81\97ã\81¦ã\81\8fã\81 ã\81\95ã\81\84)
が音符の衝突を解決できないような複雑な状況で使用されるべきです。@c
-この目的のためには、@code{extra-offset} プロパティを用いるよりも
+この目的のためには、@code{extra-offset} プロパティを用いるよりも
@code{force-hshift} プロパティを用いる方が好ましいです。@c
なぜなら、譜スペースを単位とした距離を算出する必要が無く、@c
@code{NoteColumn} の内外に音符を移動させることは符頭のマージといった@c
最後に、他の方法がすべて失敗した場合、オブジェクトを手動で譜の中央線からの@c
垂直方向の相対位置に従って、あるいは新たに設定した位置との距離に従って、@c
再配置することになるかもしれません。@c
-この方法の欠点は、再配置のための正確な値を算出する必要がある --
+この方法の欠点は、再配置のための正確な値を算出する必要がある --
しばしば、その算出はそれぞれのオブジェクトに対して個々に、トライ&エラーで@c
-行われます -- 必要があるということ、さらに、この方法による移動は
+行われます -- 必要があるということ、さらに、この方法による移動は
LilyPond が他のオブジェクトをすべて配置した後に行われるため、@c
ユーザはその結果として起こるかもしれない衝突を@c
すべて回避する責任があるということです。@c
単位は譜スペースです。@c
けれども、スラーとフレージング スラーを任意の値で@c
再配置することはできないということに注意してください。@c
-LilyPond はまずスラーが取り得る位置のリストを生成し、それからデフォルトでは
+LilyPond はまずスラーが取り得る位置のリストを生成し、それからデフォルトでは
@qq{最良に見える} スラーを探します。@c
@code{positions} がオーバライドされていた場合、@c
そのリストの中からリクエストされた位置に最も近いスラーが選択されます。
今度は、前のセクションで扱ったプロパティが記譜の重なりを解決する手助けを@c
どのようにできるかを見ていきましょう。
-@subheading padding プロパティ
+@menu
+* padding プロパティ::
+* right-padding プロパティ::
+* staff-padding プロパティ::
+* self-alignment-X プロパティ::
+* staff-position プロパティ::
+* extra-offset プロパティ::
+* positions プロパティ::
+* force-hshift プロパティ::
+@end menu
+
+
+@node padding プロパティ
+@unnumberedsubsubsec @code{padding} プロパティ
+@translationof The padding property
@cindex padding (パディング)
@cindex fixing overlapping notation (記譜要素の重なりを修正する)
@lilypond[quote,fragment,relative=1,verbatim]
c2\fermata
-\override Script #'padding = #3
+\override Script.padding = #3
b2\fermata
@end lilypond
@c KEEP LY
@lilypond[quote,fragment,relative=1,verbatim]
% これは機能しません。この下を見てください
-\override MetronomeMark #'padding = #3
+\override MetronomeMark.padding = #3
\tempo 4 = 120
c1 |
% これは機能します
-\override Score.MetronomeMark #'padding = #3
+\override Score.MetronomeMark.padding = #3
\tempo 4 = 80
d1 |
@end lilypond
あるオブジェクトの @code{padding} プロパティが増やされた場合、@c
そのオブジェクトとそれよりも外側にあるすべてオブジェクトが移動させられます。
-@subheading right-padding
+
+@node right-padding プロパティ
+@unnumberedsubsubsec @code{right-padding} プロパティ
+@translationof The right-padding property
@cindex right-padding property (right-padding プロパティ)
\relative c'' {
c4
% これは 1.5 倍シャープを譜刻しますが、スペースが小さすぎます
- \once \override Accidental
- #'stencil = #ly:text-interface::print
- \once \override Accidental #'text = #sesquisharp
+ \once \override Accidental.stencil = #ly:text-interface::print
+ \once \override Accidental.text = #sesquisharp
cis4 c
% これはスペースを改善しています
- \once \override Score.AccidentalPlacement #'right-padding = #0.6
- \once \override Accidental
- #'stencil = #ly:text-interface::print
- \once \override Accidental #'text = #sesquisharp
+ \once \override Score.AccidentalPlacement.right-padding = #0.6
+ \once \override Accidental.stencil = #ly:text-interface::print
+ \once \override Accidental.text = #sesquisharp
cis4 |
}
@end lilypond
@noindent
これは必然的に臨時記号のステンシルをオーバライドすることになります。@c
このオーバライドについては後々までカバーされません。@c
-ステンシル タイプは手続きでなければならず、ここでは @code{Accidental} の
+ステンシル タイプは手続きでなければならず、ここでは @code{Accidental} の
@code{text} プロパティの内容
-- 内容には 1.5 倍シャープがセットされています
-- を譜刻するように変更されています。@c
@noindent
-@subheading staff-padding プロパティ
+
+@node staff-padding プロパティ
+@unnumberedsubsubsec @code{staff-padding} プロパティ
+@translationof The staff-padding property
@cindex aligning objects on a baseline (オブジェクトをベースラインに揃える)
@cindex objects, aligning on a baseline (オブジェクトをベースラインに揃える)
@lilypond[quote,fragment,ragged-right,verbatim,relative=2]
\dynamicUp
% 幅を 1 単位広げます
-\override DynamicText #'extra-spacing-width = #'(-0.5 . 0.5)
+\override DynamicText.extra-spacing-width = #'(-0.5 . 0.5)
% 強弱記号を譜から 2 単位上のベース ラインに揃えます
-\override DynamicLineSpanner #'staff-padding = #2
+\override DynamicLineSpanner.staff-padding = #2
a4\f b\mf c\mp b\p
@end lilypond
-@subheading self-alignment-X プロパティ
+
+@node self-alignment-X プロパティ
+@unnumberedsubsubsec @code{self-alignment-X} プロパティ
+@translationof The self-alignment-X property
以下の例はこのプロパティが、運指法記号オブジェクトの右端を親の音符の@c
参照ポイントに揃えることによって、@c
@lilypond[quote,fragment,ragged-right,verbatim,relative=3]
\voiceOne
<a\2>
-\once \override StringNumber #'self-alignment-X = #RIGHT
+\once \override StringNumber.self-alignment-X = #RIGHT
<a\2>
@end lilypond
-@subheading staff-position プロパティ
+
+@node staff-position プロパティ
+@unnumberedsubsubsec @code{staff-position} プロパティ
+@translationof The staff-position property
@cindex object collision within a staff (譜内部でのオブジェクトの衝突)
ここでの最良の解決策は、複数小節に亘る休符を下へ移動させることです。@c
なぜなら、その休符はボイス 2 の中にあるからです。@c
-@code{\voiceTwo} (すなわち、@code{<<@{...@} \\ @{...@}>>} 構造の
+@code{\voiceTwo} (すなわち、@code{<<@{...@} \\ @{...@}>>} 構造の
2 番目のボイス) のデフォルト状態では、@c
@code{MultiMeasureRest} の @code{staff-position} は @code{-4} に@c
セットされています。@c
そのため、そのプロパティを、例えば半譜スペース 4 つ分押し下げるには、@c
-@code{-8} に変更する必要があります。
+@w{@code{-8}} に変更する必要があります。
@cindex MultiMeasureRest, example of overriding (MultiMeasureRest をオーバライドする例)
@cindex staff-position property, example (staff-position プロパティの例)
<<
{ c4 c c c }
\\
- \override MultiMeasureRest #'staff-position = #-8
+ \override MultiMeasureRest.staff-position = #-8
{ R1 }
>>
@end lilypond
これは、例えば @code{extra-offset} を使うよりも良い解決方法です。@c
なぜなら、その休符の上に加線が自動的に挿入されるからです。
-@subheading extra-offset プロパティ
+
+@node extra-offset プロパティ
+@unnumberedsubsubsec @code{extra-offset} プロパティ
+@translationof The extra-offset property
@cindex positioning objects (オブジェクトの位置を決定する)
@cindex positioning grobs (グラフィカル オブジェクトの位置を決定する)
@lilypond[quote,fragment,relative=1,verbatim]
\stemUp
f4-5
-\once \override Fingering #'extra-offset = #'(-0.3 . -1.8)
+\once \override Fingering.extra-offset = #'(-0.3 . -1.8)
f4-5
@end lilypond
-@subheading positions プロパティ
+
+@node positions プロパティ
+@unnumberedsubsubsec @code{positions} プロパティ
+@translationof The positions property
@cindex controlling tuplets, slurs, phrasing slurs, and beams manually (連符、スラー、フレージング スラーそれに連桁を手動で制御する)
@cindex manually controlling tuplets, slurs, phrasing slurs, and beams (連符、スラー、フレージング スラーそれに連桁を手動で制御する)
@cindex beams, controlling manually (連桁を手動で制御する)
@code{positions} プロパティは連符、スラー、フレージング スラー、@c
-連桁の位置と傾きを手動で制御することを可能にします。@c
-ここで、装飾音符に付いたスラーを避けようとしているために@c
-醜いフレージング スラーを持つ例を挙げます。
-
-@lilypond[quote,verbatim,fragment,ragged-right,relative=1]
-r4 \acciaccatura e8\( d8 c~ c d c d\)
-@end lilypond
+連桁の位置を手動で制御することができ、それにより傾きも制御できます。
-@noindent
-フレージング スラーを音符の上へ移動させることで、より良い結果が得られます:
+ここで、フレージング スラーとスラーが衝突している例を示します:
-@lilypond[quote,verbatim,fragment,ragged-right,relative=1]
-r4
-\phrasingSlurUp
-\acciaccatura e8\( d8 c~ c d c d\)
+@lilypond[quote,verbatim,fragment,ragged-right,relative=2]
+a8 \( ( a'16 ) a \)
@end lilypond
-@noindent
-しかし、何らかの理由でそうすることができない場合、それに代わる解決策は、@c
-@code{positions} プロパティを使ってフレージング スラーの左端を@c
-少し下げることです。@c
-この方法でも見栄えの悪さを解決できます。
-
@cindex PhrasingSlur, example of overriding (PhrasingSlur をオーバライドする例)
@cindex positions property, example (positions プロパティの例)
-@lilypond[quote,verbatim,fragment,ragged-right,relative=1]
-r4
-\once \override PhrasingSlur #'positions = #'(-4 . -3)
-\acciaccatura e8\( d8 c~ c d c d\)
+@noindent
+衝突を解決するために、フレージング スラーの両端を上に移動させます。@c
+左端を譜中央線よりも 2.5 譜スペース上に設定し、右端を 4.5 譜スペース上に@c
+設定すると、LilyPond は候補の中から両端の位置が最も設定に近いフレージング
+スラーを選択します:
+
+@lilypond[quote,verbatim,fragment,ragged-right,relative=2]
+\once \override PhrasingSlur.positions = #'(2.5 . 4.5)
+a8 \( ( a'16 ) a \)
@end lilypond
-さらに、Chopin の 前奏曲 Op 28 No. 2 の左手の譜の開始部分から取った@c
-例を挙げます。@c
-連桁が上部にある音符と衝突しています:
+これで改善されました。@c
+しかしながら、スラーの右端を少し下げてみてはどうでしょうか?@c
+そうしようとした場合、この方法では実行できないことがわかります。@c
+すでに表示されているスラーよりも右端が下がっている候補は無く、@c
+そのような場合には @code{positions} は効果を持たないからです。@c
+しかしながら、必要があればタイ、スラー、それにフレージング スラーの@c
+位置と形状を非常に正確に設定することが @emph{できます}。@c
+正確な設定を行う方法は @ruser{Modifying ties and slurs} で学習してください。
+
+もう 1 つ例を示します。@c
+連桁がタイと衝突しています:
@lilypond[quote,verbatim,fragment,ragged-right]
{
- \clef "bass"
- << { b,8 ais, b, g, } \\ { e,8 g e, g } >>
- << { b,8 ais, b, g, } \\ { e,8 g e, g } >>
+ \time 4/2
+ <<
+ { c'1 ~ 2. e'8 f' }
+ \\
+ { e''8 e'' e'' e'' e'' e'' e'' e'' f''2 g'' }
+ >>
+ <<
+ { c'1 ~ 2. e'8 f' }
+ \\
+ { e''8 e'' e'' e'' e'' e'' e'' e'' f''2 g'' }
+ >>
}
@end lilypond
@noindent
-これは、譜の中央線から 2 譜スペース上の位置にある連桁の両端を、例えば、3
+これは、譜の中央線から 1.81 譜スペース上の位置にある連桁の両端を、例えば、1
に手動で上げることによって解決することができます:
@cindex Beam, example of overriding (Beam をオーバライドする例)
@lilypond[quote,verbatim,fragment,ragged-right]
{
- \clef "bass"
+ \time 4/2
<<
- \override Beam #'positions = #'(3 . 3)
- { b,8 ais, b, g, }
- \\
- { e,8 g e, g }
+ { c'1 ~ 2. e'8 f' }
+ \\
+ {
+ \override Beam.positions = #'(-1 . -1)
+ e''8 e'' e'' e'' e'' e'' e'' e'' f''2 g''
+ }
+ >>
+ <<
+ { c'1 ~ 2. e'8 f' }
+ \\
+ { e''8 e'' e'' e'' e'' e'' e'' e'' f''2 g'' }
>>
- << { b,8 ais, b, g, } \\ { e,8 g e, g } >>
}
@end lilypond
@noindent
-オーバライドの効果は継続して 2 番目のブロックのボイス 1 にも@c
-適用されていますが、ボイス 2 の連桁にはまったく適用されていないということに@c
-注意してください。
+オーバライドの効果は継続して第 2 小節のボイス 1 の 8 分音符にも@c
+適用されていますが、@c
+ボイス 2 の連桁にはまったく適用されていないということに注意してください。
-@subheading force-hshift プロパティ
+@node force-hshift プロパティ
+@unnumberedsubsubsec @code{force-hshift} プロパティ
+@translationof The force-hshift property
今や、@ref{私はボイスを聴いている} の最後で挙げた Chopin の例に@c
どのように修正を加えるべきかを知っています。@c
<<
{ c2 aes4. bes8 }
\\
- { aes2 f4 fes }
+ { <ees, c>2 des }
\\
- {
- \voiceFour
- <ees c>2 des
- }
+ \\
+ { aes'2 f4 fes }
>> |
<c ees aes c>1 |
}
@end lilypond
@noindent
-最初の和音の下の方にある 2 つの音符 (つまり、3 番目のボイス (ボイス 4) の音符)
-を上の方にある 2 つの音符の音符列からずらすべきではありません。@c
-これを修正するには、下の音符の @code{force-hshift} --
+最初の和音の内声の音 (つまり、4 番目のボイスにある A-フラット) を上の音符の@c
+音符列からずらす必要はありません。@c
+これを修正するには、下の音符の @code{force-hshift} --
これは @code{NoteColumn} のプロパティです -- を 0 にセットします。@c
+
+2 番目の和音では、F を A-フラットに揃えて、符幹の衝突を避けるために@c
+最下段の音符を少し右に移動させるべきでしょう。@c
+そうするには、D-フラットの @code{NoteColumn} の @code{force-hshift}
+を設定して譜スペースの半分だけ右にずらします。
2 番目の和音の下の方の音符は、上の方の音符のすぐ右に置くのが最良です。@c
-そうするには、この音符の @code{force-hshift} を 0.5 にセットします --
+そうするには、この音符の @code{force-hshift} を 0.5 にセットします --
つまり、上の方の音符の音符列から符頭の幅の半分だけ右にずらします。
ここで、最終結果を挙げます:
<<
{ c2 aes4. bes8 }
\\
- { aes2 f4 fes }
- \\
{
- \voiceFour
- \once \override NoteColumn #'force-hshift = #0
- <ees c>2
- \once \override NoteColumn #'force-hshift = #0.5
+ <ees, c>2
+ \once \override NoteColumn.force-hshift = #0.5
des2
}
+ \\
+ \\
+ {
+ \override NoteColumn.force-hshift = #0
+ aes'2 f4 fes
+ }
>> |
<c ees aes c>1 |
}
rhMusic = \relative c'' {
\new Voice {
r2 c4.\( g8 |
- \once \override Tie #'staff-position = #3.5
+ \once \override Tie.staff-position = #3.5
bes1~ |
\bar "||"
\time 6/4
\voiceTwo
c,8~
% マージされる音符の右にある c2 を再配置します
- \once \override NoteColumn #'force-hshift = #1.0
- % c2 をメインの音符列から外したため、マージが機能します
+ \once \override NoteColumn.force-hshift = #1.0
+ % c2 をメインの音符列から外したため、
+ % マージが機能します
\shiftOnn
c2
}
% マージさせるために d2 の符幹を下向きにする必要があります
\stemDown
% d2 の符幹を不可視にします
- \once \override Stem #'transparent = ##t
+ \tweak Stem.transparent ##t
d2
}
\new Voice {
他の部分はすべて単一のボイスなので、最も容易な方法は
4 つのボイスを必要になったときに一時的に導入する方法です。@c
一時的に多声にする方法を忘れてしまったのならば、@c
-@ref{ç§\81ã\81¯ã\83\9cã\82¤ã\82¹ã\82\92è\81´ã\81\84ã\81¦ã\81\84ã\82\8b} ã\81¨ @ref{ã\83\9cã\82¤ã\82¹ã\81®æ\98\8e示ç\9a\84ã\81ªã\82¤ã\83³ã\82¹ã\82¿ã\83³ã\82¹å\8c\96}
+@ref{ç§\81ã\81¯ã\83\9cã\82¤ã\82¹ã\82\92è\81´ã\81\84ã\81¦ã\81\84ã\82\8b} ã\81¨ @ref{ã\83\9cã\82¤ã\82¹ã\82\92æ\98\8e示ç\9a\84ã\81«ã\82¤ã\83³ã\82¹ã\82¿ã\83³ã\82¹å\8c\96ã\81\99ã\82\8b}
を参照してください。@
ここでは、多声パッセージに明示的にインスタンス化されたボイスを使うことにします。@c
なぜなら、すべてのボイスが明示的にインスタンス化されている方が、@c
{ c,8 d fis bes a } % メイン ボイスの続き
\new Voice {
\voiceTwo
- c,8~ c2
+ c,8~ 2
}
\new Voice {
\voiceThree
{ c,8 d fis bes a } % メイン ボイスの続き
\new Voice {
\voiceTwo
- c,8~ c2
+ c,8~ 2
}
\new Voice {
\voiceThree
この学習マニュアルではこれらのことは言及されてこなかったのに、@c
どうやってやればいいのでしょうか?@c
ここで、記譜法リファレンスに移行する必要があります。@c
-索引で @q{arpeggio} と @q{bar line} を探せばすぐに、アルペジオは
+索引で @q{arpeggio} と @q{bar line} を探せばすぐに、アルペジオは
@code{\arpeggio} を和音の後に付け加えることによって作り出され、@c
2 重小節線は @code{\bar "||"} コマンドによって作り出されることが@c
わかります。@c
ですから、以下の以下のオーバライドをタイで結ばれる最初の音符の前に置けば、@c
タイは中央線から 3.5 半譜スペースだけ上の位置に移動させられます:
-@code{\once \override Tie #'staff-position = #3.5}
+@code{\once \override Tie.staff-position = #3.5}
これで第 2 小節の修正も完了で、以下のようになります:
rhMusic = \relative c'' {
\new Voice {
r2 c4.\( g8 |
- \once \override Tie #'staff-position = #3.5
+ \once \override Tie.staff-position = #3.5
bes1~ |
\bar "||"
\time 6/4
{ c,8 d fis bes a } % メイン ボイスの続き
\new Voice {
\voiceTwo
- c,8~ c2
+ c,8~ 2
}
\new Voice {
\voiceThree
記譜法リファレンスで @qq{merge} を探せばすぐに、@c
@ruser{Collision resolution} で符頭や付点の付き方が異なる音符を@c
マージするためのコマンドにたどり着きます。@c
-今回の例では、多声部セクションで両方のタイプの音符をマージする
-(異なる符頭を持つ音符のマージと、付点の付き方が異なる音符のマージ)
+今回の例では、多声部セクションで両方のタイプの音符をマージする
+(異なる符頭を持つ音符のマージと、付点の付き方が異なる音符のマージ)
必要があるので、記譜法リファレンスで見つけた情報を使って、以下のコマンド:
@example
rhMusic = \relative c'' {
\new Voice {
r2 c4.\( g8 |
- \once \override Tie #'staff-position = #3.5
+ \once \override Tie.staff-position = #3.5
bes1~ |
\bar "||"
\time 6/4
{ c,8 d fis bes a } % メイン ボイスの続き
\new Voice {
\voiceTwo
- c,8~ c2
+ c,8~ 2
}
\new Voice {
\voiceThree
今回の例では、2 つの D は両方とも上向きの符幹を持っていて、@c
3 つ目の音符 -- C -- が存在します。@c
我々は @code{\stemDown} を用いて符幹の向きを変更する方法を知っていて、@c
-記譜法リファレンスも C を移動させる方法について述べています --
+記譜法リファレンスも C を移動させる方法について述べています --
@code{\shift} コマンドの 1 つを用いてシフトを行います。@c
しかし、どのシフトを行えばよいのでしょうか?@c
-C はシフト off のボイス 2 の中にあり、2 つの D はボイス 1 とボイス 3 --
+C はシフト off のボイス 2 の中にあり、2 つの D はボイス 1 とボイス 3 --
それぞれ、シフト off とシフト on -- の中にあります。@c
ですから、C が 2 つの D と衝突するのを避けるために、@c
@code{\shiftOnn} を用いて C を更にシフトさせる必要があります。@c
rhMusic = \relative c'' {
\new Voice {
r2 c4.\( g8 |
- \once \override Tie #'staff-position = #3.5
+ \once \override Tie.staff-position = #3.5
bes1~ |
\bar "||"
\time 6/4
{ c,8 d fis bes a } % メイン ボイスの続き
\new Voice {
\voiceTwo
- % c2 をメインの音符列から外したため、マージが機能します
+ % c2 をメインの音符列から外したため、
+ % マージが機能します
c,8~ \shiftOnn c2
}
\new Voice {
@end lilypond
もうちょっとです。@c
-残っている問題は 2 つだけです:
+残っている問題は 2 つだけです:
マージされた D の下向きの符幹はあるべきではなく、C は D の右側に配置した方が@c
良いということです。@c
-以前に行った調整からこれらを行う方法を両方とも知っています:
+以前に行った調整からこれらを行う方法を両方とも知っています:
符幹を透明にして、@code{force-hshift} プロパティを用いて C を移動させます。@c
ここで、最終結果を示します:
rhMusic = \relative c'' {
\new Voice {
r2 c4.\( g8 |
- \once \override Tie #'staff-position = #3.5
+ \once \override Tie.staff-position = #3.5
bes1~ |
\bar "||"
\time 6/4
\voiceTwo
c,8~
% マージされる音符の右にある c2 を再配置します
- \once \override NoteColumn #'force-hshift = #1.0
+ \once \override NoteColumn.force-hshift = #1.0
% c2 をメインの音符列から外したため、マージが機能します
\shiftOnn
c2
% マージさせるために d2 の符幹を下向きにする必要があります
\stemDown
% d2 の符幹を不可視にします
- \once \override Stem #'transparent = ##t
+ \tweak Stem.transparent ##t
d2
}
\new Voice {
* 調整のために変数を使用する::
* スタイル シート::
* その他の情報源::
-* 処理に時間のかかる調整を避ける::
* Scheme を用いた高度な調整::
@end menu
@subsection 調整のその他の使用方法
@translationof Other uses for tweaks
+@menu
+* 異なるボイスの中にある音符をタイで結ぶ::
+* MIDI でフェルマータをシミュレートする::
+@end menu
+
@cindex transparent property, use of (transparent プロパティの使用方法)
@cindex objects, making invisible (オブジェクトを不可視にする)
@cindex removing objects (オブジェクトを削除する)
@cindex objects, hiding (オブジェクトを隠す)
@cindex invisible objects (不可視のオブジェクト)
@cindex objects, invisible (不可視のオブジェクト)
-@cindex tying notes across voices (異なるボイスの中にある音符をタイで結ぶ)
-@subheading 異なるボイスの中にある音符をタイで結ぶ
+
+@node 異なるボイスの中にある音符をタイで結ぶ
+@unnumberedsubsubsec 異なるボイスの中にある音符をタイで結ぶ
+@translationof Tying notes across voices
+
+@cindex tying notes across voices (異なるボイスの中にある音符をタイで結ぶ)
以下の例は異なるボイスの中にある音符をタイで結ぶ方法を示しています。@c
通常、タイで結べるのは同じボイスの中にある 2 つ音符だけです。@c
2 つのボイスを使い、そのうちの 1 つにタイで結んだ音符を置きます:
@lilypond[quote,fragment,relative=2]
-<< { b8~ b\noBeam } \\ { b8[ g] } >>
+<< { b8~ 8\noBeam } \\ { b8[ g] } >>
@end lilypond
@noindent
@lilypond[quote,fragment,relative=2,verbatim]
<<
{
- \once \override Stem #'transparent = ##t
- b8~ b\noBeam
+ \tweak Stem.transparent ##t
+ b8~ 8\noBeam
}
\\
{ b8[ g] }
@lilypond[quote,fragment,relative=2,verbatim]
<<
{
- \once \override Stem #'transparent = ##t
- \once \override Stem #'length = #8
- b8~ b\noBeam
+ \tweak Stem.transparent ##t
+ \tweak Stem.length #8
+ b8~ 8\noBeam
}
\\
{ b8[ g] }
>>
@end lilypond
-@subheading MIDI でフェルマータをシミュレートする
+@funindex \single
+@cindex tweak, generated from override
+今度は、グラフィカル オブジェクトの透明性を @emph{オーバライド} する@c
+ことで実現します。@c
+これまでに説明した短縮形 @code{\hide} を使います。@c
+調整と異なり、オーバライドは単一の音楽表記から生成されたプロパティにだけ@c
+効果を持ちます。@c
+@code{\single} を用いてオーバライドを調整に変換することができので、@c
+上記の例を以下のように書き換えることができます:
+
+@lilypond[quote,fragment,relative=2,verbatim]
+<<
+ {
+ \single \hide Stem
+ \single \hide Flag
+ \tweak Stem.length #8
+ b8~ 8\noBeam
+ }
+\\
+ { b8[ g] }
+>>
+@end lilypond
+
+今回のケースでは、@code{\once \hide} との違いははっきりしません。@c
+同じ音楽タイミングに複数のオブジェクトが存在する場合
+(和音の中にある符頭のように)、この違いは重要になります。@c
+そのような場合、@code{\once} はすべてのオブジェクトに影響を与える@c
+のに対して、@code{\single} は直後にある音楽表記によって生成された@c
+ただ 1 つのオブジェクトだけに影響を与えます。
+
+
+@node MIDI でフェルマータをシミュレートする
+@unnumberedsubsubsec MIDI でフェルマータをシミュレートする
+@translationof Simulating a fermata in MIDI
@cindex stencil property, use of (stencil プロパティの使用方法)
@cindex fermata, implementing in MIDI (MIDI でフェルマータ を実装する)
譜外部オブジェクトを出力から削除しようとする場合、そのオブジェクトの
@code{transparent} プロパティではなく @code{stencil} プロパティを@c
オーバライドする方が通常は望ましいです。@c
-あるオブジェクトの @code{stencil} プロパティを
+あるオブジェクトの @code{stencil} プロパティを
@code{#f} にセットすると、@c
そのオブジェクトは出力から完全に削除されます。@c
このことは、削除されたオブジェクトがそのオブジェクトとの相対位置で@c
その場合、メトロノーム記号を出力に表示させたくありません。@c
そして、それが 2 つのシステム (小節とその中にある表記) 間のスペースと、@c
譜上にある隣接する注釈の位置に影響を与えることを望みません。@c
-そのため、そのメトロノーム記号の @code{stencil} プロパティを
+そのため、そのメトロノーム記号の @code{stencil} プロパティを
@code{#f} にセットする方法が最良です。@c
ここで、2 つの手法の結果を示します:
% Visible tempo marking
\tempo 4=120
a4 a a
- \once \override Score.MetronomeMark #'transparent = ##t
+ \once \hide Score.MetronomeMark
% Invisible tempo marking to lengthen fermata in MIDI
\tempo 4=80
a4\fermata |
% Visible tempo marking
\tempo 4=120
a4 a a
- \once \override Score.MetronomeMark #'stencil = ##f
+ \once \omit Score.MetronomeMark
% Invisible tempo marking to lengthen fermata in MIDI
\tempo 4=80
a4\fermata |
使うことはできないでしょうか?
@example
-@code{\override Lyrics . LyricText #'font-shape = #'italic}
-@code{\override Lyrics . LyricText #'font-series = #'bold}
+@code{\override Lyrics.LyricText.font-shape = #'italic}
+@code{\override Lyrics.LyricText.font-series = #'bold}
-@code{\revert Lyrics . LyricText #'font-shape}
-@code{\revert Lyrics . LyricText #'font-series}
+@code{\revert Lyrics.LyricText.font-shape}
+@code{\revert Lyrics.LyricText.font-series}
@end example
これらも、強調する必要のある単語がたくさんある場合、入力するのが@c
@lilypond[quote,verbatim]
emphasize = {
- \override Lyrics.LyricText #'font-shape = #'italic
- \override Lyrics.LyricText #'font-series = #'bold
+ \override Lyrics.LyricText.font-shape = #'italic
+ \override Lyrics.LyricText.font-series = #'bold
}
normal = {
- \revert Lyrics.LyricText #'font-shape
- \revert Lyrics.LyricText #'font-series
+ \revert Lyrics.LyricText.font-shape
+ \revert Lyrics.LyricText.font-series
}
global = { \key c \major \time 4/4 \partial 4 }
}
VerseTwo = \lyricmode {
- O | \emphasize Christ, \normal whose voice the | wa -- ters heard,
+ O | \once \emphasize Christ, whose voice the | wa -- ters heard,
}
VerseThree = \lyricmode {
@subsection スタイル シート
@translationof Style sheets
-LilyPond が作り出す出力にはさまざまな変更を加えることができます
+LilyPond が作り出す出力にはさまざまな変更を加えることができます
(詳細は @ref{出力を調整する} を参照してください)。@c
しかしながら、調整を加えたい入力ファイルがたくさんあるとしたらどうでしょう?@c
また、単に調整を実際の音楽表記から分離したいとしたらどうでしょう?@c
@lilypond[quote,verbatim,ragged-right]
mpdolce =
#(make-dynamic-script
- (markup #:hspace 0
- #:translate '(5 . 0)
- #:line (#:dynamic "mp"
- #:text #:italic "dolce")))
+ #{ \markup { \hspace #0
+ \translate #'(5 . 0)
+ \line { \dynamic "mp"
+ \text \italic "dolce" } }
+ #})
inst =
#(define-music-function
(parser location string)
(string?)
- (make-music
- 'TextScriptEvent
- 'direction UP
- 'text (markup #:bold (#:box string))))
+ #{ <>^\markup \bold \box #string #})
\relative c'' {
\tempo 4=50
}
@end lilypond
-この例には出力が重なり合うという問題がいくつかあり、@c
-@ref{オブジェクトを移動させる} のテクニックを使ってそれらを修正しています。@c
-そこで、さらに @code{mpdolce} 定義と @code{tempoMark} 定義に関して@c
-何かしてみましょう。@c
-それらは望みの出力を作り出していますが、@c
-それらを別の楽曲で使いたいとします。@c
+@code{mpdolce} と @code{tempoMark} の定義に手を加えてみることにします。@c
+それらは望みの出力を作り出していますが、それらを別の楽曲で使いたいとします。@c
単純にそれらを各ファイルの先頭部分にカット&ペーストすることもできますが、@c
わずらわしいです。@c
その方法では定義は依然として入力ファイルの中にあり、@c
%%% これを "definitions.ily" というファイル名で保存してください
mpdolce =
#(make-dynamic-script
- (markup #:hspace 0
- #:translate '(5 . 0)
- #:line (#:dynamic "mp"
- #:text #:italic "dolce")))
+ #@{ \markup @{ \hspace #0
+ \translate #'(5 . 0)
+ \line @{ \dynamic "mp"
+ \text \italic "dolce" @} @}
+ #@})
inst =
#(define-music-function
(parser location string)
(string?)
- (make-music
- 'TextScriptEvent
- 'direction UP
- 'text (markup #:bold (#:box string))))
+ #@{ <>^\markup \bold \box #string #@})
@end example
音楽ファイルの先頭付近で @code{\include} コマンドを使ってこのファイルを@c
参照します。@c
(インクルードされるファイルをコンパイルされるメイン ファイルと区別するため、@c
拡張子 @file{.ily} を使っています。)
-今度は音楽ファイルを変更しましょう
+今度は音楽ファイルを変更しましょう
(このファイルを @file{"music.ly"} として保存してください)。
@c We have to do this awkward example/lilypond-non-verbatim
@lilypond[quote,ragged-right]
mpdolce =
#(make-dynamic-script
- (markup #:hspace 0
- #:translate '(5 . 0)
- #:line (#:dynamic "mp"
- #:text #:italic "dolce")))
+ #{ \markup { \hspace #0
+ \translate #'(5 . 0)
+ \line { \dynamic "mp"
+ \text \italic "dolce" } }
+ #})
inst =
#(define-music-function
(parser location string)
(string?)
- (make-music
- 'TextScriptEvent
- 'direction UP
- 'text (markup #:bold (#:box string))))
+ #{ <>^\markup \bold \box #string #})
\relative c'' {
\tempo 4=50
%%% definitions.ily
mpdolce =
#(make-dynamic-script
- (markup #:hspace 0
- #:translate '(5 . 0)
- #:line (#:dynamic "mp"
- #:text #:italic "dolce")))
+ #@{ \markup @{ \hspace #0
+ \translate #'(5 . 0)
+ \line @{ \dynamic "mp"
+ \text \italic "dolce" @} @}
+ #@})
inst =
#(define-music-function
(parser location string)
(string?)
- (make-music
- 'TextScriptEvent
- 'direction UP
- 'text (markup #:bold (#:box string))))
+ #@{ <>^\markup \bold \box #string #@})
\layout@{
\context @{
\Score
- \override MetronomeMark #'extra-offset = #'(-9 . 0)
- \override MetronomeMark #'padding = #'3
+ \override MetronomeMark.extra-offset = #'(-5 . 0)
+ \override MetronomeMark.padding = #'3
@}
\context @{
\Staff
- \override TimeSignature #'style = #'numbered
+ \override TimeSignature.style = #'numbered
@}
\context @{
\Voice
- \override Glissando #'thickness = #3
- \override Glissando #'gap = #0.1
+ \override Glissando.thickness = #3
+ \override Glissando.gap = #0.1
@}
@}
@end example
@lilypond[quote,ragged-right]
mpdolce =
#(make-dynamic-script
- (markup #:hspace 0
- #:translate '(5 . 0)
- #:line (#:dynamic "mp"
- #:text #:italic "dolce")))
+ #{ \markup { \hspace #0
+ \translate #'(5 . 0)
+ \line { \dynamic "mp"
+ \text \italic "dolce" } }
+ #})
inst =
#(define-music-function
(parser location string)
(string?)
- (make-music
- 'TextScriptEvent
- 'direction UP
- 'text (markup #:bold (#:box string))))
+ #{ <>^\markup \bold \box #string #})
\layout{
\context {
\Score
- \override MetronomeMark #'extra-offset = #'(-9 . 0)
- \override MetronomeMark #'padding = #'3
+ \override MetronomeMark.extra-offset = #'(-5 . 0)
+ \override MetronomeMark.padding = #'3
}
\context {
\Staff
- \override TimeSignature #'style = #'numbered
+ \override TimeSignature.style = #'numbered
}
\context {
\Voice
- \override Glissando #'thickness = #3
- \override Glissando #'gap = #0.1
+ \override Glissando.thickness = #3
+ \override Glissando.gap = #0.1
}
}
出力のフォントを全体に大きくすることにします。
@example
-%%% definitions.ily
+%%% web-publish.ily
mpdolce =
#(make-dynamic-script
- (markup #:hspace 0
- #:translate '(5 . 0)
- #:line (#:dynamic "mp"
- #:text #:italic "dolce")))
+ #@{ \markup @{ \hspace #0
+ \translate #'(5 . 0)
+ \line @{ \dynamic "mp"
+ \text \italic "dolce" @} @}
+ #@})
inst =
#(define-music-function
(parser location string)
(string?)
- (make-music
- 'TextScriptEvent
- 'direction UP
- 'text (markup #:bold (#:box string))))
+ #@{ <>^\markup \bold \box #string #@})
#(set-global-staff-size 23)
\layout@{
\context @{
\Score
- \override MetronomeMark #'extra-offset = #'(-9 . 0)
- \override MetronomeMark #'padding = #'3
+ \override MetronomeMark.extra-offset = #'(-5 . 0)
+ \override MetronomeMark.padding = #'3
@}
\context @{
\Staff
@}
\context @{
\Voice
- \override Glissando #'thickness = #3
- \override Glissando #'gap = #0.1
+ \override Glissando.thickness = #3
+ \override Glissando.gap = #0.1
@}
@}
@end example
@lilypond[quote,ragged-right]
mpdolce =
#(make-dynamic-script
- (markup #:hspace 0
- #:translate '(5 . 0)
- #:line (#:dynamic "mp"
- #:text #:italic "dolce")))
+ #{ \markup { \hspace #0
+ \translate #'(5 . 0)
+ \line { \dynamic "mp"
+ \text \italic "dolce" } }
+ #})
inst =
#(define-music-function
(parser location string)
(string?)
- (make-music
- 'TextScriptEvent
- 'direction UP
- 'text (markup #:bold (#:box string))))
+ #{ <>^\markup \bold \box #string #})
#(set-global-staff-size 23)
\layout{
\context { \Score
- \override MetronomeMark #'extra-offset = #'(-9 . 0)
- \override MetronomeMark #'padding = #'3
+ \override MetronomeMark.extra-offset = #'(-5 . 0)
+ \override MetronomeMark.padding = #'3
}
\context { \Voice
- \override Glissando #'thickness = #3
- \override Glissando #'gap = #0.1
+ \override Glissando.thickness = #3
+ \override Glissando.gap = #0.1
}
}
あなたがパーツ一式を作っているだけだとしても役に立つ可能性があります。@c
私は自分のプロジェクトのために@c
半ダースの @q{スタイル シート} ファイルを使います。@c
-私はそれぞれの音楽ファイルを
+私はそれぞれの音楽ファイルを
@code{\include "../global.ily"} で始め、@c
@file{gloval.ily} には以下の内容を記述しています:
まずあなたの使っているシステム特有のディレクトリを見つけ出す必要があります。@c
このディレクトリの場所は、(a) あなたが lilypond.org からコンパイル済みの@c
バイナリをダウンロードすることによって LilyPond を手に入れたのか、@c
-それとも、パッケージ マネージャから LilyPond をインストールした
-(つまり、Linux と一緒に配布されたか、fink や cygwin でインストールされた)
+それとも、パッケージ マネージャから LilyPond をインストールした
+(つまり、GNU/Linux と一緒に配布されたか、fink や cygwin でインストールされた)
のか、(b) LilyPond はどの OS 上で使用されているのか、に依存します:
-@strong{lilypond.org からダウンロードした}
+@subsubsubheading lilypond.org からダウンロードした
@itemize @bullet
-@item Linux
+@item GNU/Linux
-@file{@var{INSTALLDIR}/lilypond/usr/share/lilypond/current/} に進んでください
+@example
+@file{@var{INSTALLDIR}/lilypond/usr/share/lilypond/current/}
+@end example
+に進んでください
@item MacOS X
+@example
@file{@var{INSTALLDIR}/LilyPond.app/Contents/Resources/share/lilypond/current/}
+@end example
に進んでください。@c
ターミナルからこのディレクトリへ @code{cd} で移動するか、@c
-LilyPond アプリケーション上でコントロール クリックして
+LilyPond アプリケーション上でコントロール クリックして
@q{Show Package Contents} を選択します。
@item Windows
-@file{@var{INSTALLDIR}/LilyPond/usr/share/lilypond/current/} に@c
-進んでください。Windows Explorer を使います。
+@example
+@file{@var{INSTALLDIR}/LilyPond/usr/share/lilypond/current/}
+@end example
+に進んでください。Windows Explorer を使います。
@end itemize
-@strong{パッケージ マネージャからインストールした、あるいは、@c
-ソースからコンパイルした}
+@subsubsubheading パッケージ マネージャからインストールした、あるいは、ソースからコンパイルした
@file{@var{PREFIX}/share/lilypond/@var{X.Y.Z}/} に進んでください。@c
@var{PREFIX} はパッケージ マネージャか @code{configure} スクリプトによって@c
@example
tieDotted = @{
- \override Tie #'dash-period = #0.75
- \override Tie #'dash-fraction = #0.1
+ \override Tie.dash-period = #0.75
+ \override Tie.dash-fraction = #0.1
@}
@end example
あなたがこれらのデフォルト値を好まない場合、これらの定義済みコマンドを@c
-容易に再定義することができます --
+容易に再定義することができます --
他の変数と同様に、入力ファイルの先頭で定義します。
以下のファイルは @file{ly/} で見つかる有用なファイルです:
@tab スパナ関係の定義済みコマンドの定義
@end multitable
-他の設定 (マークアップ コマンドの定義など) は
+他の設定 (マークアップ コマンドの定義など) は
@code{.scm} (Scheme) ファイルとして保存されています。@c
Scheme プログラミング言語は、LilyPond 内部処理へのプログラム可能な@c
インタフェイスを提供するために使用されます。@c
これらのファイルについての詳しい説明は、Scheme 言語についての知識が@c
必要となるため、このマニュアルの範囲外です。@c
Scheme 言語とこれらのファイルを理解するには、十分な知識や時間が@c
-必要であるということを知っておくべきです
+必要であるということを知っておくべきです
(@rextend{Scheme tutorial} を参照してください)。
あなたがこの知識を持っているのなら、興味を持つかもしれない Scheme ファイルは@c
@end multitable
-@node 処理に時間のかかる調整を避ける
-@subsection 処理に時間のかかる調整を避ける
-@translationof Avoiding tweaks with slower processing
-
-LilyPond は入力ファイルの処理中に追加のチェックを行うことができます。@c
-これらのチェックは実行時間を伸ばしますが、適切な結果を得るのに必要とされる@c
-手動調整を減らすかもしれません。@c
-テキスト スクリプトや歌詞の一部が余白まではみ出す場合、これらのチェックは@c
-楽譜のその行を縮めてマージンの内側に収まるようにします。
-
-すべての状況下で有効にするには、以下のように、音楽の中の行ではなく
-@code{Score} の @code{\with} ブロックの中に@c
-これらのチェックのオーバライドを置くことによって、@c
-動作可能な状態にする必要があります:
-
-@example
-\score @{
- @{ @dots{}notes@dots{} @}
- \layout @{
- \context @{
- \Score
- % テキスト スクリプトと歌詞が紙面のマージン内に納まることを保証します
- \override PaperColumn #'keep-inside-line = ##t
- \override NonMusicalPaperColumn #'keep-inside-line = ##t
- @}
- @}
-@}
-@end example
-
-しかしながら、@code{keep-inside-line} は処理時間を伸ばすため、@c
-最終バージョンを作るまでは有効化しないことをお勧めします。@c
-この機能を用いると、手動で @code{\break} コマンドを入力しなくても@c
-テキストがページの右端からはみ出すことを防げます。
-
-
@node Scheme を用いた高度な調整
@subsection Scheme を用いた高度な調整
@translationof Advanced tweaks with Scheme
@code{\override} と @code{\tweak} コマンドを用いることで@c
-多くのことが可能になりますが、LilyPond のアクションを変更するもっと強力な手段が
+多くのことが可能になりますが、LilyPond のアクションを変更するもっと強力な手段が
LilyPond 内部処理へのプログラム可能なインタフェイスを通じて利用可能です。@c
Scheme プログラミング言語で書かれたコードは LilyPond の内部処理に@c
直接組み込むことができます。@c
もちろん、それを行うには Scheme プログラミングについての基礎知識が必要であり、@c
その手引きが @rextend{Scheme tutorial} で提供されています。
-多くの実現可能なことの 1 つの例としては、プロパティに定数をセットする代わりに
+多くの実現可能なことの 1 つの例としては、プロパティに定数をセットする代わりに
Scheme プロシージャをセットすることができます。@c
このプロパティが LilyPond によってアクセスされたときに、@c
このプロシージャが呼び出されます。@c
\relative c' {
% Arrange to obtain color from color-notehead procedure
- \override NoteHead #'color = #color-notehead
+ \override NoteHead.color = #color-notehead
a2 b | c2 d | e2 f | g2 a |
}
@end lilypond