1.6.3 パートを記述する

このセクションでは、楽譜に楽器名を挿入するためにしばしば必要となる、オーケストラまたはアンサンブル音楽用のパートを作成する方法について説明します。他のボイスを引用する方法、演奏指示音符を譜刻する方法、個々のパートで複数の連続する空の小節をまとめる方法についても記述します。


楽器名

Staff, PianoStaff, StaffGroup, GrandStaff それに ChoirStaff コンテキストの中にある譜の左側に、楽器名を譜刻することができます。instrumentName の値が最初の行の譜に対して使用され、shortInstrumentName の値がそれに続くすべての行の譜に対して使用されます。

\new Staff \with {
  instrumentName = "Violin "
  shortInstrumentName = "Vln. "
} \relative {
  c'4.. g'16 c4.. g'16 \break | c1 |
}

[image of music]

\markup を用いて、より複雑な楽器名を作成することができます:

\new Staff \with {
  instrumentName = \markup {
    \column { "Clarinetti"
      \line { "in B" \smaller \flat }
    }
  }
} \relative {
  c''4 c,16 d e f g2
}

[image of music]

2 つ以上の譜コンテキストがグループ化されている場合、デフォルトでは楽器名と短縮楽器名は中央揃えされます。複数行にわたる楽器名を中央揃えするには、\center-column を用いる必要があります:

<<
  \new Staff \with {
    instrumentName = "Flute"
  } \relative {
    f''2 g4 f
}
  \new Staff \with {
    instrumentName = \markup {
      \center-column { "Clarinet"
        \line { "in B" \smaller \flat }
      }
    }
  } \relative { c''4 b c2 }
>>

[image of music]

しかしながら、楽器名が長い場合、indent 設定と short-indent 設定の値を増やさない限り、譜グループの中にある楽器名は中央揃えされません。これらの設定についての詳細は シフトとインデントのための \paper 変数 を参照してください。

<<
  \new Staff \with {
    instrumentName = "Alto Flute in G"
    shortInstrumentName = "Flt."
  } \relative {
    f''2 g4 f \break
    g4 f g2
  }
  \new Staff \with {
    instrumentName = "Clarinet"
    shortInstrumentName = "Clar."
  } \relative {
    c''4 b c2 \break
    c2 b4 c
  }
>>

\layout {
  indent = 3.0\cm
  short-indent = 1.5\cm
}

[image of music]

楽器名を他のコンテキスト (ChordNamesFiguredBass など) に付け加えるには、 そのコンテキストに Instrument_name_engraver を追加する必要があります。詳細は コンテキストのプラグインを変更する を参照してください。

楽曲の途中で shortInstrumentName や、新しい楽器に必要なその他の設定を変更することもできます。しかしながら、instrumentName は最初のインスタンスが譜刻され、楽曲の途中での変更は無視されます:

prepPiccolo = <>^\markup \italic { muta in Piccolo }

prepFlute = <>^\markup \italic { muta in Flauto }

setPiccolo = {
  <>^\markup \bold { Piccolo }
  \transposition c''
}

setFlute = {
  <>^\markup \bold { Flute }
  \transposition c'
}

\new Staff \with {
  instrumentName = "Flute"
  shortInstrumentName = "Flt."
}
\relative {
  g'1 g g g \break
  g1 g \prepPiccolo R R \break
  \set Staff.instrumentName = "Piccolo"
  \set Staff.shortInstrumentName = "Picc."
  \setPiccolo
  g1 g g g \break
  g1 g \prepFlute R R \break
  \set Staff.instrumentName = "Flute"
  \set Staff.shortInstrumentName = "Flt."
  \setFlute
  g1 g g g
}

[image of music]

参照

記譜法リファレンス: シフトとインデントのための \paper 変数, コンテキストのプラグインを変更する

コード断片集: Staff notation

内部リファレンス: InstrumentName, PianoStaff, Staff


他のボイスを引用する

あるボイスが他のボイスと同じ音符を演奏することはごく一般的なことです。例えば、第 1 バイオリンと第2バイオリンがあるパッセージで同じフレーズを演奏することがあります。これは、ボイスに他のボイスを 引用 させることで実現でき、第 2 ボイスの音楽全体を再入力する必要はありません。

最上位レベルのスコープで用いる \addQuote コマンドは一部を引用することができる音楽を定義します。

\quoteDuring コマンドを用いて、引用を開始する位置を示します。このコマンドは 2 つの引数をとります: \addQuote で定義した引用するボイスの名前と、引用部分の演奏時間を示す音楽表記です。

fluteNotes = \relative {
  a'4 gis g gis | b4^"quoted" r8 ais\p a4( f)
}

oboeNotes = \relative {
  c''4 cis c b \quoteDuring "flute" { s1 }
}

\addQuote "flute" { \fluteNotes }

\score {
  <<
    \new Staff \with { instrumentName = "Flute" } \fluteNotes
    \new Staff \with { instrumentName = "Oboe" } \oboeNotes
  >>
}

[image of music]

\quoteDuring で使用される音楽表記が空白休符や複数小節休符ではなく音符を保持している場合、引用は多声となり、予期しない結果となる可能性があります。

fluteNotes = \relative {
  a'4 gis g gis | b4^"quoted" r8 ais\p a4( f)
}

oboeNotes = \relative {
  c''4 cis c b \quoteDuring "flute" { e4 r8 ais b4 a }
}

\addQuote "flute" { \fluteNotes }

\score {
  <<
    \new Staff \with { instrumentName = "Flute" } \fluteNotes
    \new Staff \with { instrumentName = "Oboe" } \oboeNotes
  >>
}

[image of music]

\unfoldRepeats コマンドを \quoteDuring と一緒に使う場合、引用の中でも \unfoldRepeats コマンドを使わなければなりません:

fluteNotes = \relative {
  \repeat volta 2 { a'4 gis g gis }
}

oboeNotesDW = \relative {
  \repeat volta 2 \quoteDuring "incorrect" { s1 }
}

oboeNotesW = \relative {
  \repeat volta 2 \quoteDuring "correct" { s1 }
}


\addQuote "incorrect" { \fluteNotes }

\addQuote "correct" { \unfoldRepeats \fluteNotes }

\score {
  \unfoldRepeats
  <<
    \new Staff \with { instrumentName = "Flute" }
    \fluteNotes
    \new Staff \with { instrumentName = "Oboe (incorrect)" }
    \oboeNotesDW
    \new Staff \with { instrumentName = "Oboe (correct)" }
    \oboeNotesW
  >>
}

[image of music]

\quoteDuring コマンドは引用されるパートと引用するパート両方の \transposition を使用して、引用されるパートと同じ響きのピッチに変換して、引用するパートの音符を作り出します。

clarinetNotes = \relative c'' {
  \transposition bes
  \key d \major
  b4 ais a ais | cis4^"quoted" r8 bis\p b4( f)
}

oboeNotes = \relative {
  c''4 cis c b \quoteDuring "clarinet" { s1 }
}

\addQuote "clarinet" { \clarinetNotes }


\score {
  <<
    \new Staff \with { instrumentName = "Clarinet" } \clarinetNotes
    \new Staff \with { instrumentName = "Oboe" } \oboeNotes
  >>
}

[image of music]

デフォルトでは引用される音楽はすべてのアーティキュレーション、強弱記号、マークアップ等を含んでいます。quotedEventTypes コンテキスト プロパティを用いることで、引用される音楽から引用するオブジェクトを選択することが可能です。

fluteNotes = \relative {
  a'2 g2 |
  b4\<^"quoted" r8 ais a4\f( c->)
 }

oboeNotes = \relative {
  c''2. b4 |
  \quoteDuring "flute" { s1 }
}

\addQuote "flute" { \fluteNotes }

\score {
  <<
    \set Score.quotedEventTypes = #'(note-event articulation-event
                                     crescendo-event rest-event
                                     slur-event dynamic-event)
    \new Staff \with { instrumentName = "Flute" } \fluteNotes
    \new Staff \with { instrumentName = "Oboe" } \oboeNotes
  >>
}

[image of music]

引用にもタグを付けることができます。タグを使用する を参照してください。

参照

記譜法リファレンス: 楽器の移調, タグを使用する

インストールされているファイル: ‘scm/define-event-classes.scm’.

コード断片集: Staff notation

内部リファレンス: + Music classes, QuoteMusic, Voice

既知の問題と警告

\addQuote 中にある最初の Voice の内容だけが引用されます。そのため、音楽表記が \new\context Voice を含んでいても、それらの内容は引用されません。装飾小音符の引用はサポートされておらず、LilyPond がクラッシュする可能性さえあります。 ネストされた連符を引用しようとしてもうまくいきません。


合図音符をフォーマットする

合図音符をフォーマットする最も簡単な方法は、パートの中で明示的に CueVoice コンテキストを作成することです。

\relative {
  R1
  <<
    { e'2\rest r4. e8 }
    \new CueVoice {
      \stemUp d'8^"flute" c d e fis2
    }
  >>
  d,4 r a r
}

[image of music]

音部記号の変更が必要で、合図音符に適切なサイズの音部記号を譜刻する場合、\cueClef コマンドは明示的な CueVoice コンテキストと共に用いられます。その後、\cueClefUnset コマンドを用いて、オリジナルの音部記号 – 再度、適切なサイズにされた – に戻すことができます。

\relative {
  \clef "bass"
  R1
  <<
    { e'2\rest r4. \cueClefUnset e,8 }
    \new CueVoice {
      \cueClef "treble" \stemUp d''8^"flute" c d e fis2
    }
  >>
  d,,4 r a r
}

[image of music]

必要があれば、CueVoice 無しで \cueClef コマンドと \cueClefUnset コマンドを用いることもできます。

\relative {
  \clef "bass"
  R1
  \cueClef "treble"
  d''8^"flute" c d e fis2
  \cueClefUnset
  d,,4 r a r
}

[image of music]

もっと複雑な合図音符 – 例えば、移調を含んでいる、複数の音楽ソースからの合図音符を挿入する – の場合、\cueDuring コマンドや \cueDuringWithClef コマンドを用いることができます。これらのコマンドは \quoteDuring を特殊化したものです。\quoteDuring については、前のセクションの 他のボイスを引用する を参照してください。

構文は以下の通りです:

\cueDuring quotename #direction music

\cueDuringWithClef quotename #direction #clef music

quotename に対応する小節の音楽は CueVoice コンテキストとして追加されて music と同時進行して、多声になります。direction は引数 UP または DOWN を取り – それぞれ第 1 ボイス及び第 2 ボイスと対応します – 合図音符が他のボイスに対してどのように譜刻されるかを決定します。

fluteNotes = \relative {
  r2. c''4 | d8 c d e fis2 | g2 d |
}

oboeNotes = \relative c'' {
  R1
  <>^\markup \tiny { flute }
  \cueDuring "flute" #UP { R1 }
  g2 c,
}

\addQuote "flute" { \fluteNotes }

\new Staff {
  \oboeNotes
}

[image of music]

instrumentCueName プロパティを設定することによって、\cueDuring で音楽のどの部分を引用するか調節することができます。このプロパティのデフォルト値は '(note-event rest-event tie-event beam-event tuplet-span-event) であり、音符、休符、タイ、連桁、それに連符だけが引用され、アーティキュレーション、強弱記号、マークアップ等は引用されません。

Note: 以下の例のように Voice\cueDuring で始まる場合、Voice を明示的に宣言する必要があります。そうしないと音楽表記全体が CueVoice コンテキストに属してしまいます。

oboeNotes = \relative {
  r2 r8 d''16(\f f e g f a)
  g8 g16 g g2.
}
\addQuote "oboe" { \oboeNotes }

\new Voice \relative c'' {
  \set Score.quotedCueEventTypes = #'(note-event rest-event tie-event
                                      beam-event tuplet-span-event
                                      dynamic-event slur-event)
  \cueDuring "oboe" #UP { R1 }
  g2 c,
}

[image of music]

引用される楽器の名前を表示するために、マークアップを用いることができます。合図音符が音符記号の変更を必要とする場合、手動で変更することができますが、合図音符が終わったところで手動で元の音部記号に戻す必要がありmす。

fluteNotes = \relative {
  r2. c''4 d8 c d e fis2 g2 d2
}

bassoonNotes = \relative c {
  \clef bass
  R1
  \clef treble
  <>^\markup \tiny { flute }
  \cueDuring "flute" #UP { R1 }
  \clef bass
  g4. b8 d2
}

\addQuote "flute" { \fluteNotes }

\new Staff {
  \bassoonNotes
}

[image of music]

あるいはまた、代わりに \cueDuringWithClef 関数を用いることができます。このコマンドは追加の引数で音部の変更を指定して、合図音符に音部記号を譜刻しますが、合図音部が終了したところで元の音部記号を自動的に譜刻します。

fluteNotes = \relative {
  r2. c''4 d8 c d e fis2 g2 d2
}

bassoonNotes = \relative c {
  \clef bass
  R1
  <>^\markup { \tiny "flute" }
  \cueDuringWithClef "flute" #UP "treble" { R1 }
  g4. b8 d2
}

\addQuote "flute" { \fluteNotes }

\new Staff {
  \bassoonNotes
}

[image of music]

\quoteDuring と同様に、\cueDuring は楽器の移調を考慮します。合図音符は合図を受け取る楽器のピッチで作り出され、ソース楽器の同じ響きのピッチになります。

合図音符を移調させるには \transposedCueDuring を使用します。このコマンドはコンサート ミドル C の音を表すピッチを (絶対モードで) 指定する追加の引数を取ります。これは、全く別の場所で登録された楽器から合図を取る場合に有用です。

piccoloNotes = \relative {
  \clef "treble^8"
  R1
  c'''8 c c e g2
  c4 g g2
}

bassClarinetNotes = \relative c' {
  \key d \major
  \transposition bes,
  d4 r a r
  \transposedCueDuring "piccolo" #UP d { R1 }
  d4 r a r
}

\addQuote "piccolo" { \piccoloNotes }

<<
  \new Staff \piccoloNotes
  \new Staff \bassClarinetNotes
>>

[image of music]

\killCues コマンドは音楽表記から合図音符を削除します。これにより、同じ音楽表記を使って合図を持つ楽器パートと楽譜を作り出すことが可能です。\killCues コマンドは \cueDuring によって引用された音符とイベントだけを削除します。合図に関連する他のマークアップ – 音部変更と引用元の楽器を識別するラベルなど – にはタグを付けて楽譜に含めるかどうかを選択することができます。タグを使用する を参照してください。

fluteNotes = \relative {
  r2. c''4 d8 c d e fis2 g2 d2
}

bassoonNotes = \relative c {
  \clef bass
  R1
  \tag #'part {
    \clef treble
    <>^\markup \tiny { flute }
  }
  \cueDuring "flute" #UP { R1 }
  \tag #'part \clef bass
  g4. b8 d2
}

\addQuote "flute" { \fluteNotes }

\new Staff {
  \bassoonNotes
}

\new StaffGroup <<
  \new Staff {
    \fluteNotes
  }
  \new Staff {
    \removeWithTag #'part { \killCues { \bassoonNotes } }
  }
>>

[image of music]

参照

記譜法リファレンス: 他のボイスを引用する, 楽器の移調, 楽器名, 音部記号, 合図, タグを使用する

コード断片集: Staff notation

内部リファレンス: CueVoice, Voice

既知の問題と警告

\cueDuring を使用した場合、Voice コンテキストと CueVoice コンテキストの間で休符の衝突が発生する可能性があります。\cueDuringWithClef\transposedCueDuring を使用する場合、追加で必要となる引数は引用と向きの後に配置する必要があります。


空の小節を圧縮する

デフォルトでは、すべての小節は空であっても譜刻されます – これは、リズムイベント (音符、休符、非表示の休符など) が複数の小節にまたがるほど長い場合に発生する可能性があります。 この動作は、次の図に示すように、すべての空の小節を単一の小節にまとめることで変更できます (この例の 2 番目の部分は小節を展開して実際にはデフォルトの動作に戻ります):

\override Score.BarNumber.break-visibility = #'#(#f #t #t)
\time 2/4
\compressEmptyMeasures
c'1 d'1. e'\breve
\bar "||"
\expandEmptyMeasures
c'1 d'1. e'\breve

[image of music]

その表記法は構文的には正しいですが、前の例で示したように、音楽的な観点からは混乱するかもしれません。したがって、break-visibility を用いる で説明されている構文を使用して、小節番号を明示的に譜刻する必要があります。

そのような表記がより有用になる可能性があるのは、小節単位の休符 に適用される場合です。複数小節にまたがる休符は、複数小節にまたがる休符の記号を含む単一の小節として表示され、休符の小節数が小節の上に譜刻されます。

% デフォルトの振る舞い
\time 3/4 r2. | R2.*2 |
\time 2/4 R2 |
\time 4/4
% 休みの小節を 1 つの小節にまとめます
\compressEmptyMeasures
r1 | R1*17 | R1*4 |
\expandEmptyMeasures
% 休みの小節を展開します
\time 3/4
R2.*2 |

[image of music]

\compressEmptyMeasures とは異なり、音楽関数 \compressMMRests は休符にのみ適用され、他のイベントは圧縮されません。プロパティ設定ではなく関数として、その構文は音楽表現が続く必要があるという点でわずかに異なります:

\compressMMRests {
  % 休符は圧縮されます…
  R1*7
  % …ただし、音符は複数の小節にまたがることができます。
  g'1 a'1*2 d'1
  R1*2
}

[image of music]

このセクションで説明するすべてのコマンドは、実際には skipBars 内部プロパティに依存しています。これは、\set コマンド で説明されているように、 Score コンテキストで設定されます。

定義済みコマンド

\compressEmptyMeasures, \expandEmptyMeasures, \compressMMRests

Selected Snippets

単一の小節の休符に数字を付ける

複数小節にまたがる休符は、単一の小節を除いて、長さを数字で表示します。これは、restNumberThreshold を設定することで変更できます。

{
  \compressEmptyMeasures
  R1 R1*10 R1*11 \bar "||"
  \set restNumberThreshold = 0
  R1 R1*10 R1*11 \bar "||"
  \set restNumberThreshold = 10
  R1 R1*10 R1*11
}

[image of music]

複数小節にまたがる休符の形を変更する

休符が複数小節に渡り、それが 10 小節以下の場合には、四全休符や二全休符が並んだものとして表記されます (ドイツ語で Kirchenpausen – 教会休符と呼ばれます)。10 小節より長い場合は、単純な線として表示されます。このデフォルトの 10 を変更するには、expand-limit プロパティをオーバライドします。

\relative c'' {
  \compressMMRests {
    R1*2 | R1*5 | R1*9
    \override MultiMeasureRest.expand-limit = #3
    R1*2 | R1*5 | R1*9
  }
}

[image of music]

参照

記譜法リファレンス: break-visibility を用いる, 小節単位の休符, \set コマンド

内部リファレンス: MultiMeasureRest, MultiMeasureRestNumber, MultiMeasureRestScript, MultiMeasureRestText


LilyPond — 記譜法リファレンス v2.23.82 (開発版).