[ << 音楽記譜法 ] | [Top][Contents][Index] | [ 専門的な記譜法 >> ] |
[ < 自動連桁 ] | [ Up : 連桁 ] | [ 手動連桁 > ] |
自動連桁の振る舞いを設定する
自動連桁が有効な場合、連桁の配置は以下の 3 つのコンテキスト プロパティによって決定されます:
baseMoment
, beatStructure
, beamExceptions
。これらの値は以下で示すようにオーバライドすることができますが、拍子 で説明しているように、デフォルトの値そのものを変更することもできます。
beamExceptions
が現在の拍子記号に対して定義されている時、そのルールのみが連桁の配置の決定に使用されます。
baseMoment
や beatStructure
の値は使用されません。
beamExceptions
が現在の拍子記号に対して定義されていない時、baseMoment
と beatStructure
の値によって連桁の配置が決定されます。
baseMoment
と beatStructure
による連桁
デフォルトで、非常によく使われる拍子に対しては beamExceptions
のルールが定義されているため、自動連桁に baseMoment
と
beatStructure
の値を使用させるためには、beamExceptions
のルールを無効化しなければいけません。beamExceptions
はこのようにして無効化します:
\set Timing.beamExceptions = #'()
beamExceptions
が #'()
にセットされた場合 (明示的にセットされた場合と、現在の拍子記号に対してルールが定義されていない場合の両方を含みます)、連桁の終了点は baseMoment
と beatStructure
コンテキスト プロパティで指定された拍に従います。beatStructure
は小節内の各拍の長さが baseMoment
の単位で定義された Scheme リストです。デフォルトでは、baseMoment
は 1/拍子の分母です。
beatStructure
と baseMoment
の値はそれぞれの拍子記号に対して別々に存在するということに注意してください。これらの値を変更しても、影響が及ぶのは現在有効な拍子記号に対してのみです。そのため、これらの変更は新しい拍子記号のセクションが始まる \time
コマンドの前ではなく後に置かれなければいけません。ある拍子記号に与えられた新しい値は記憶されており、その拍子記号が新たに出現した際に再び有効になります。
\relative c'' { \time 5/16 c16^"default" c c c c | % beamExceptions は 5/16 の拍子については定義されていないようですが、 % 念のために無効にしておきましょう \set Timing.beamExceptions = #'() \set Timing.beatStructure = 2,3 c16^"(2+3)" c c c c | \set Timing.beatStructure = 3,2 c16^"(3+2)" c c c c | }
\relative { \time 4/4 a'8^"default" a a a a a a a % beamExceptions は 4/4 に対しては明らかに定義されているため、 % これを無効にします \set Timing.beamExceptions = #'() \set Timing.baseMoment = \musicLength 4 \set Timing.beatStructure = 1,1,1,1 a8^"changed" a a a a a a a }
連桁の設定変更をある特定のテキストに限定することができます。下位コンテキストに連桁の設定が含まれない場合、そのコンテキストを囲んでいる上位コンテキストの設定が適用されます。
\new Staff { \time 7/8 % beamExceptions は 7/8 に対しては定義されていないため % 無効にする必要はありません \set Staff.beatStructure = 2,3,2 << \new Voice = one { \relative { a'8 a a a a a a } } \new Voice = two { \relative { \voiceTwo \set Voice.beatStructure = 1,3,3 f'8 f f f f f f } } >> }
譜で複数のボイスが使用されている場合に連桁設定を譜のすべてのボイスに適用するには、Staff
コンテキストで設定を行う必要があります:
\time 7/8 % リズム 3-1-1-2 % デフォルトで連桁設定の変更は Voice に適用され、うまくいきません % なぜなら、自動生成されるボイスで、すべての拍は baseMoment (1 . 8) だからです \set beatStructure = 3,1,1,2 << \relative {a'8 a a a16 a a a a8 a} \\ \relative {f'4. f8 f f f} >> % コンテキスト Staff を指定するとうまくいきます \set Staff.beatStructure = 3,1,1,2 << \relative {a'8 a a a16 a a a a8 a} \\ \relative {f'4. f8 f f f} >>
baseMoment
の値を調整することで、連桁の振る舞いを変更することができます。baseMoment
の値を変更した場合、beatStructure
に新しい baseMoment
と矛盾しない値を設定する必要があります。
\time 5/8 % beamExceptions は 5/8 に対しては定義されていないため % 無効にする必要はありません \set Timing.baseMoment = \musicLength 16 \set Timing.beatStructure = 7,3 \repeat unfold 10 { a'16 }
beatLength
は moment – 演奏時間の単位 – です。タイプ moment の量は
Scheme 関数 ly:make-moment
によって作り出されます。この関数についての更なる情報は 時間管理 を参照してください。
デフォルトでは、baseMoment
には「1/拍子の分母」がセットされています。このデフォルトの例外は scm/time-signature-settings.scm で見つかります。
beamExceptions
に基づいた連桁
特殊な自動連桁規則 (連桁の終わりが拍に従わないもの) はプロパティ
beamExceptions
に定義します。
beamExceptions
の値は – 少し複雑な Scheme データ構造ですが – は、
\beamExceptions
関数によって非常に簡単に生成できます。この関数には 1 つ以上の手動連桁を含む、小節の長さのリズムパターンを与えます
(小節は小節チェック記号 |
で分割されている必要があります。この関数では他に小節の長さを識別する方法が無いためです)。簡単な例を示します:
\relative c'' { \time 3/16 \set Timing.beatStructure = 2,1 \set Timing.beamExceptions = \beamExceptions { 32[ 32] 32[ 32] 32[ 32] } c16 c c | \repeat unfold 6 { c32 } | }
Note: beamExceptions
の値は 完全な 例外リストである必要があります。つまり、その設定には適用されるべき例外がすべて含まれている必要があります。例外の 1 つだけを追加、削除、変更することはできません。このことは扱い難いように思えるかもしれませんが、新しい連桁パターンを指定する際に現在の連桁設定を知る必要がないということを意味します。
拍子が変更されると、Timing.baseMoment
, Timing.beatStructure
,
それに Timing.beamExceptions
のデフォルト値が設定されます。拍子を設定すると、その Timing
コンテキストの自動連桁設定はデフォルトの振る舞いにリセットされます。
\relative a' { \time 6/8 \repeat unfold 6 { a8 } % (4 + 2) にグループ化します \set Timing.beatStructure = 4,2 \repeat unfold 6 { a8 } % デフォルトの振る舞いに戻ります \time 6/8 \repeat unfold 6 { a8 } }
ある拍子に対するデフォルトの自動連桁設定は scm/beam-settings.scm の中で決定されます。ある拍子に対する自動連桁のデフォルト設定を変更する方法は 拍子 で説明しています。
ある拍子に対する自動連桁設定の多くには
beamExceptions
が登録されています。例えば、4/4 拍子は 16 分音符しかない小節を 2 つの連桁で囲もうとします。beamExceptions
がリセットされていなければ、beamExceptions
規則は beatStructure
設定をオーバライドすることができます。
\time 4/4 \set Timing.baseMoment = \musicLength 8 \set Timing.beatStructure = 3,3,2 % 以下は beamExceptions のため、(3 3 2) の連桁にはなりません \repeat unfold 8 {c''8} | % 以下は beamExceptions をクリアするため、(3 3 2) の連桁になります \set Timing.beamExceptions = #'() \repeat unfold 8 {c''8}
同様に、3/4 拍子はデフォルトで 8 分音符しかない小節を 1 つの連桁で囲みます。3/4 拍子の 8 分音符に拍毎の連桁を付けるには、beamExceptions
をリセットします。
\time 3/4 % beamExceptions により、デフォルトで (6) の連桁を付けます \repeat unfold 6 {a'8} | % beatLength により、これは (1 1 1) の連桁を付けます \set Timing.beamExceptions = #'() \repeat unfold 6 {a'8}
ロマン派や古典派時代の譜刻では、3/4 拍子の小節の途中から連桁が始まることがありますが、誤った 6/8 拍子の印象を与えるため現代の習慣では用いません (Gould の 153 ページを参照してください)。3/8 拍子でも同様の状況が発生します。この振る舞いはコンテキスト プロパティ beamHalfMeasure
によって制御されます – これは分子が 3 の拍子記号の場合にのみ効果を持ちます:
\relative a' { \time 3/4 r4. a8 a a | \set Timing.beamHalfMeasure = ##f r4. a8 a a | }
自動連桁はどのように機能するのか
自動連桁が有効である場合、自動連桁の配置はコンテキスト プロパティ
baseMoment
, beatStructure
, それに beamExceptions
によって決定されます。
連桁の配置を決定する際、以下の規則が並び順の優先度で適用されます:
-
[…]
で手動連桁が指定されている場合、連桁は指定どおりに設定されます。手動連桁が指定されていない場合、 - その連桁タイプに対する
beamExceptions
に連桁終了規則が定義されている場合、その規則を用いて連桁を終了させる位置を決定します。連桁終了規則が定義されていない場合、 - もっと長い連桁タイプに対する
beamExceptions
に連桁終了規則が定義されている場合、その規則を用いて連桁を終了させる位置を決定します。連桁終了規則が定義されていない場合、 -
baseMoment
とbeatStructure
の値を用いてその小節での拍の終わりを決定し、拍の終わりで連桁を終了させます。
上記の規則で、連桁タイプ は連桁でグループ化された音符の最短演奏時間です。
デフォルトの連桁規則は scm/time-signature-settings.scm の中にあります。
Selected Snippets
連桁を細分する
16 分音符 (あるいはそれより短い音符) の連桁は、デフォルトでは細分されません。つまり、3 つ以上の音符全体が分かれることなく平等に連桁で繋がれます。この挙動は、subdivideBeams
プロパティをセットすることで、連桁を細分するように変更することができます。このプロパティがセットされると、連桁が現在の baseMoment
の間隔で細分されて表示されるようになります。分割された後の音符全体の長さが分割長より短い (不完全な連桁) 場合は、連桁の本数は可能な最長分割グループが基になります。しかし、分割された後の音符が 1 つしか存在しない場合、この制限は適用されません。
baseMoment
は、明示的にセットされなければ、現在の拍子記号の分母分の 1 に設定されます。baseMoment
は、このスニペットのように
ly:make-moment
関数を用いて、連桁を分割する単位となる長さを分数で指定する必要があります。また、baseMoment
が変更された場合、beatStructure
も新たな
baseMoment
に合わせて変更する必要があります:
\relative c'' { c32[ c c c c c c c] \set subdivideBeams = ##t c32[ c c c c c c c] % Set minimum beam subdivision interval to 1/8 just for this beam \once \set minimumBeamSubdivisionInterval = \musicLength 8 c32[ c c c c c c c] % Set maximum beam subdivision interval to 1/16 just for this beam \once \set maximumBeamSubdivisionInterval = \musicLength 16 c32[ c c c c c c c] % Set maximum beam subdivision interval to 3/8 just for this beam \once \set maximumBeamSubdivisionInterval = \musicLength 8*3 [ \repeat unfold 16 c64 ] r2. % Set maximum beam subdivision interval to 1/64 to limit subdivision depth, % despite not being metrically correct \once \set minimumBeamSubdivisionInterval = \musicLength 32 \once \set maximumBeamSubdivisionInterval = \musicLength 64 [ \repeat unfold 32 c128 ] r2. % Shorten beam by 1/32 c32[ c c c c c c] r32 % Shorten beam by 3/32 c32[ c c c c] r16. % Respect the incomplete beams of the previous two examples \set respectIncompleteBeams = ##t c32[ c c c c c c] r32 % no visual change here as last two stems are exempt from this % special rule c32[ c c c c] r16. }
厳密な拍に基づく連桁
16 分音符以下の連桁の向きは、音符が属する拍に基づいて決定することができます。最初の連桁では突き出るものが避けられ (デフォルト)、次の連桁は拍に厳密に従います。
\relative c'' { \time 6/8 a8. a16 a a \set strictBeatBeaming = ##t a8. a16 a a }
小節のグループ化記号
小節内の拍のまとまりは、beatStructure
コンテキスト プロパティによりコントロールされます。beatStructure
の値はscm/time-signature-settings.scm
に、多くの拍子記号に対して設定されています。beatStructure
の値は、\set
で変更することができます。あるいは、\time
を拍子記号と beatStructure
の明示的な変更のために用いることができます。そのためには、拍子記号の前に小節内部の拍のグループを数値のリストで (Scheme の構文で) 与えます。
\time
は Timing
コンテキストに適用されるため、Voice
のような他のより低いレベルのコンテキストにセットされた
beatStructure
や baseMoment
の値を上書きしません。
Measure_grouping_engraver
がコンテキストに含まれている場合、拍のグループを示す記号が表示されます。この記号はリズムが複雑な現代音楽を読みやすくします。この例では、9/8 の小節が 2 つの方法で 2 つのパターンにグループ化されています。5/8 は scm/time-signature-settings.scm
のデフォルト設定を用いています。
\score { \new Voice \relative c'' { \time 9/8 g8 g d d g g a( bes g) | \set Timing.beatStructure = 2,2,2,3 g8 g d d g g a( bes g) | \time 4,5 9/8 g8 g d d g g a( bes g) | \time 5/8 a4. g4 | } \layout { \context { \Staff \consists "Measure_grouping_engraver" } } }
Score コンテキストでの自動連桁
Score
コンテキストに設定された自動連桁の設定は全ての譜に適用されますが、Staff
や Voce
レベルで設定することもできます。
\relative c'' { \time 5/4 % Set default beaming for all staves \set Score.baseMoment = \musicLength 8 \set Score.beatStructure = 3,4,3 << \new Staff { c8 c c c c c c c c c } \new Staff { % Modify beaming for just this staff \set Staff.beatStructure = 6,4 c8 c c c c c c c c c } \new Staff { % Inherit beaming from Score context << { \voiceOne c8 c c c c c c c c c } % Modify beaming for this voice only \new Voice { \voiceTwo \set Voice.beatStructure = 6,4 a8 a a a a a a a a a } >> } >> }
参照
記譜法リファレンス: 拍子
インストールされているファイル: scm/time-signature-settings.scm
コード断片集: Rhythms
内部リファレンス: Auto_beam_engraver, Beam, BeamForbidEvent, beam-interface
既知の問題と警告
自動連桁が終了しておらず、まだ音符を受け付けている最中に楽譜が終了する場合、その最後の連桁はまったく譜刻されません。<< … \\ … >>
で入力される多声ボイスでも同様です。自動連桁がまだ音符を受け付けている最中に多声ボイスが終了する場合、その最後の連桁はまったく譜刻されません。ボイスや楽譜の最後の連桁には手動で連桁を付けることにより、これらの問題を回避できます。
デフォルトでは、Timing
コンテキストは Score
コンテキストにエイリアスされています。このことは、ある譜で拍子の設定を行うと、他の譜での連桁の付け方にも影響を与えると言うことを意味します。このため、後で出てくる譜で拍子の設定を行うと、前にある譜でセットしたカスタム連桁はリセットされます。この問題を回避する方法の 1 つは、拍子の設定は 1 つの譜でしか行わないことです。
<< \new Staff { \time 3/4 \set Timing.baseMoment = \musicLength 8 \set Timing.beatStructure = 1,5 \set Timing.beamExceptions = #'() \repeat unfold 6 { a'8 } } \new Staff { \repeat unfold 6 { a'8 } } >>
拍子に対するデフォルトの連桁設定を変更することで、常にお望みの連桁を使うこともできます。ある拍子に対する自動連桁設定を変更する方法は 拍子 で説明しています。
<< \new Staff { \overrideTimeSignatureSettings 3/4 % timeSignatureFraction 1/8 % baseMoment 1,5 % beatStructure #'() % beamExceptions \time 3/4 \repeat unfold 6 { a'8 } } \new Staff { \time 3/4 \repeat unfold 6 { a'8 } } >>
[ << 音楽記譜法 ] | [Top][Contents][Index] | [ 専門的な記譜法 >> ] |
[ < 自動連桁 ] | [ Up : 連桁 ] | [ 手動連桁 > ] |