| [ << 入出力全般 ] | [トップ][目次][インデックス] | [ スペースの問題 >> ] |
| [ < MIDI ブロック ] | [ 上へ : MIDI 出力を作り出す ] | [ MIDI での強弱記号 > ] |
3.5.4 MIDI での音の強弱を制御する
MIDI 全体の音量や、強弱記号による相対的な音量、楽器ごとの相対的な音量を設定することができます。
強弱記号は、可能な範囲内の MIDI 音量に変換されます。一方、クレッシェンドやデクレッシェンドは、始点と終点の間の音量を線形に変化させます。強弱記号の相対的な音量や、楽器ごとの全体的な音量を設定することができます。
| MIDI での強弱記号 | ||
| MIDI の音量を設定する | ||
| MIDI ブロック プロパティを設定する |
| [ << 入出力全般 ] | [トップ][目次][インデックス] | [ スペースの問題 >> ] |
| [ < MIDI での音の強弱を制御する ] | [ 上へ : MIDI での音の強弱を制御する ] | [ MIDI の音量を設定する > ] |
MIDI での強弱記号
mp, mf, sf を含む、ppppp から fffff までの強弱記号のみが音量値を設定されています。そして、この値が全体の MIDI 音量レンジの値に適用されます。MIDI 出力において、指定された強弱記号に対応した最終的な音量を得るために、これらの値が全体の音量範囲に収まるように適用されます。デフォルトで、割合の最小値は 0.25 (ppppp) で、最大値は
0.95 (fffff) です。全ての強弱記号と、それに関連付けられた音量の割合の一覧は ‘scm/midi.scm’ にあります。
Selected Snippets
MIDI 出力でカスタム強弱記号を作成する
次の例は、デフォルトのリストには含まれていない強弱記号を作成し、MIDI 出力に反映されるように音量値を割り当てる方法を示しています。
強弱記号 \rfz は 0.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 {}
}
インストールされているファイル: ‘ly/script-init.ly’ ‘scm/midi.scm’
コード断片集: MIDI
内部リファレンス: Dynamic_performer
| [ << 入出力全般 ] | [トップ][目次][インデックス] | [ スペースの問題 >> ] |
| [ < MIDI での強弱記号 ] | [ 上へ : MIDI での音の強弱を制御する ] | [ MIDI ブロック プロパティを設定する > ] |
MIDI の音量を設定する
全体の MIDI 音量の最小値と最大値は、midiMinimumVolume と
midiMaximumVolume を Score レベルでセットすることで設定できます。これらのプロパティはボイスの開始時か強弱記号が配置された時に適用されます。それぞれの強弱記号に対応する音量の割合は次の式で計算されます:
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
}
}
}
楽器ごとの音量を均等化するための単純な方法は、midiMinimumVolume と midiMaximumVolume プロパティを
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 { }
}
既知の問題と警告
MIDI での音量変化は音符の開始時にのみ適用されます。そのため、クレッシェンドやデクレッシェンドが単一の音符に適用された場合、音量は変化しません。
| [ << 入出力全般 ] | [トップ][目次][インデックス] | [ スペースの問題 >> ] |
| [ < MIDI の音量を設定する ] | [ 上へ : MIDI での音の強弱を制御する ] | [ 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 出力ファイル内でその変更が二重に記述されている場合があります。
| [ << 入出力全般 ] | [トップ][目次][インデックス] | [ スペースの問題 >> ] |
| [ < MIDI の音量を設定する ] | [ 上へ : MIDI での音の強弱を制御する ] | [ MIDI の楽器を用いる > ] |