3.5.4 MIDI での音の強弱を制御する

MIDI 全体の音量や、強弱記号による相対的な音量、楽器ごとの相対的な音量を設定することができます。

強弱記号は、可能な範囲内の MIDI 音量に変換されます。一方、クレッシェンドやデクレッシェンドは、始点と終点の間の音量を線形に変化させます。強弱記号の相対的な音量や、楽器ごとの全体的な音量を設定することができます。


MIDI での強弱記号

mp, mf, sf を含む、ppppp から fffff までの強弱記号のみが音量値を設定されています。そして、この値が全体の MIDI 音量レンジの値に適用されます。MIDI 出力において、指定された強弱記号に対応した最終的な音量を得るために、これらの値が全体の音量範囲に収まるように適用されます。デフォルトで、割合の最小値は 0.25 (ppppp) で、最大値は 0.95 (fffff) です。全ての強弱記号と、それに関連付けられた音量の割合の一覧は ‘scm/midi.scm’ にあります。

Selected Snippets

MIDI 出力でカスタム強弱記号を作成する

次の例は、デフォルトのリストには含まれていない強弱記号を作成し、MIDI 出力に反映されるように音量値を割り当てる方法を示しています。

強弱記号 \rfz0.9 の値が割り当てられています。

#(define (myDynamics dynamic)
    (if (equal? dynamic "rfz")
      0.9
      (default-dynamic-absolute-volume dynamic)))

\score {
  \new Staff {
    \set Staff.midiInstrument = #"cello"
    \set Score.dynamicAbsoluteVolumeFunction = #myDynamics
    \new Voice {
      \relative {
        a'4\pp b c-\rfz
      }
    }
  }
  \layout {}
  \midi {}
}

[image of music]

インストールされているファイル: ‘ly/script-init.ly’ ‘scm/midi.scm

コード断片集: MIDI

内部リファレンス: Dynamic_performer


MIDI の音量を設定する

全体の MIDI 音量の最小値と最大値は、midiMinimumVolumemidiMaximumVolumeScore レベルでセットすることで設定できます。これらのプロパティはボイスの開始時か強弱記号が配置された時に適用されます。それぞれの強弱記号に対応する音量の割合は次の式で計算されます:

midiMinimumVolume + (midiMaximumVolume - midiMinimumVolume) * fraction

次の例では、全体の MIDI 音量の範囲を 0.2 - 0.5 に制限します:

\score {
  <<
    \new Staff {
      \set Staff.midiInstrument = "flute"
      … music …
    }
    \new Staff {
      \set Staff.midiInstrument = "clarinet"
      … music …
    }
  >>
  \midi {
    \context {
      \Score
      midiMinimumVolume = #0.2
      midiMaximumVolume = #0.5
    }
  }
}

楽器ごとの音量を均等化するための単純な方法は、midiMinimumVolumemidiMaximumVolume プロパティを Staff コンテキストでセットすることです:

\score {
  \new Staff {
    \set Staff.midiInstrument = "flute"
    \set Staff.midiMinimumVolume = #0.7
    \set Staff.midiMaximumVolume = #0.9
    … music …
  }
  \midi { }
}

複数の譜を持ち、複数の MIDI 楽器を用いる楽譜では、それぞれの相対的な音量をセットすることができます:

\score {
  <<
    \new Staff {
      \set Staff.midiInstrument = "flute"
      \set Staff.midiMinimumVolume = #0.7
      \set Staff.midiMaximumVolume = #0.9
      … music …
    }
    \new Staff {
      \set Staff.midiInstrument = "clarinet"
      \set Staff.midiMinimumVolume = #0.3
      \set Staff.midiMaximumVolume = #0.6
      … music …
    }
  >>
  \midi { }
}

この例では、フルートの音量に比べてクラリネットの音量が減らされています。

これらの音量プロパティがセットされていない場合でも、LilyPond は特定の楽器に‘わずかな’音量の均等化を行っています。‘scm/midi.scm’ を参照してください。

インストールされているファイル: ‘scm/midi.scm

参照

記譜法リファレンス: 楽譜レイアウト

内部リファレンス: Dynamic_performer

Selected Snippets

デフォルトの MIDI 楽器の音量を置き換える

デフォルトの MIDI 楽器の音量は Score コンテキストの instrumentEqualizer プロパティをセットすることで置き換えることができます。セットするのは Scheme 関数で、音色名を引数で与えられた際にその音色に対応する最小音量と最大音量 (音量は割合で指定) のペアを返すものです。

次の例は、それぞれフルートとクラリネットに対して最小音量を最大音量をセットしています。

#(define my-instrument-equalizer-alist '())

#(set! my-instrument-equalizer-alist
  (append
    '(
      ("flute" . (0.7 . 0.9))
      ("clarinet" . (0.3 . 0.6)))
    my-instrument-equalizer-alist))

#(define (my-instrument-equalizer s)
  (let ((entry (assoc s my-instrument-equalizer-alist)))
    (if entry
      (cdr entry))))

\score {
  <<
    \new Staff {
      \key g \major
      \time 2/2
      \set Score.instrumentEqualizer = #my-instrument-equalizer
      \set Staff.midiInstrument = "flute"
      \new Voice \relative {
        r2 g''\mp g fis~
        4 g8 fis e2~
        4 d8 cis d2
      }
    }
    \new Staff {
      \key g \major
      \set Staff.midiInstrument = "clarinet"
      \new Voice \relative {
        b'1\p a2. b8 a
        g2. fis8 e
        fis2 r
      }
    }
  >>
  \layout { }
  \midi {  }
}

[image of music]

既知の問題と警告

MIDI での音量変化は音符の開始時にのみ適用されます。そのため、クレッシェンドやデクレッシェンドが単一の音符に適用された場合、音量は変化しません。


MIDI ブロック プロパティを設定する

\midi ブロックでは、コンテキストを再構成したり、新たなコンテキストを定義したり、特定のプロパティに値をセットしたりすることができます。

\score {
  … music …
  \midi {
    \tempo 4 = 72
  }
}

この例では、テンポが四分音符 72 にセットされます。\midi ブロックのテンポ記号は、楽譜には出力されません。しかし、他の \tempo 指示が \score ブロックで指定された場合、それも MIDI 出力に反映されます。

\midi ブロック内で、\tempo コマンドが記述された場合、音楽の解釈中に、出力定義のコンテキスト内でプロパティをセットします。そのため、それはコンテキストの変更であるかのように解釈されます。

コンテキスト定義は、\layout ブロックと同じ表記を用います:

\score {
  … music …
  \midi {
    \context {
      \Voice
      \remove Dynamic_performer
    }
  }
}

この例は、MIDI 出力から強弱記号の効果を取り除きます。注: LilyPond では、音楽表記から MIDI 出力に変換するモジュール (translator) は‘パフォーマ’ (performer) と呼ばれます。

参照

学習マニュアル: Other sources of information

記譜法リファレンス: 発想記号, 楽譜レイアウト

インストールされているファイル: ‘ly/performer-init.ly

コード断片集: MIDI

内部リファレンス: Dynamic_performer

既知の問題と警告

MIDI プレイヤの中には,出力のテンポ変化を正しく処理しないものがあります。

midiInstrument や他の MIDI オプションの変更を譜の始めに行った場合、MIDI 出力ファイル内でその変更が二重に記述されている場合があります。


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