[ << 入出力全般 ] | [トップ][目次][インデックス][ ? ] | [ スペースの問題 >> ] | ||
[ < MIDI での繰り返し ] | [ 上へ : MIDI 出力 ] | [ > ] |
3.5.5 MIDI での音の強弱を制御する
MIDI での音の強弱は Dynamic_performer
– これはデフォルトでは Voice コンテキストの中に存在します –
によって実装されます。MIDI 全体のボリューム、強弱記号による相対ボリューム、楽器間の相対ボリュームを制御することができます。
[ << 入出力全般 ] | [トップ][目次][インデックス][ ? ] | [ スペースの問題 >> ] | ||
[ < MIDI での音の強弱を制御する ] | [ 上へ : MIDI での音の強弱を制御する ] | [ > ] |
強弱記号
強弱記号は利用可能な MIDI ボリューム レンジ内のある固定の分数に翻訳されます。デフォルトでの分数の範囲は、ppppp に対する 0.25 から、fffff に対する 0.95 までです。強弱記号とそれに対応する分数のセットを ‘../scm/midi.scm’ で調べることができます
–
Other sources of information を参照してください。引数として強弱記号をとり、それに対する分数を返す関数を作成し、その関数を Score.dynamicAbsoluteVolumeFunction
にセットすることによって、分数のセットを変更あるいは拡張することができます。
例えば、リンフォルツァンド 強弱記号 – \rfz
– を使う必要がある場合、この強弱記号はデフォルト セットの中に含まれていないため、MIDI ボリュームに影響を与えません。同様に make-dynamic-script
で新しい強弱記号を定義した場合、その強弱記号もデフォルト セットには含まれません。以下の例は、そのような強弱記号に対する MIDI ボリュームを追加する方法を示しています。以下の Scheme 関数は、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 {} }
分数テーブル全体を再定義する必要がある場合、上記の方法の代わりに ‘../scm/midi.scm’ の中にある default-dynamic-absolute-volume プロシージャとそのモデルとなる関連テーブルを使用する方が良いでしょう。このセクションの最後の例で、その方法を示しています。
[ << 入出力全般 ] | [トップ][目次][インデックス][ ? ] | [ スペースの問題 >> ] | ||
[ < ] | [ 上へ : MIDI での音の強弱を制御する ] | [ > ] |
MIDI 全体でのボリューム
強弱記号に対する MIDI 全体の最小ボリュームと最大ボリュームは
Score
レベルでプロパティ midiMinimumVolume
と
midiMaximumVolume
を設定することで制御できます。これらのプロパティは強弱記号に対してのみ効果を発揮します。そのため、楽譜の開始からそれらのプロパティを適用するには、楽譜の開始点に強弱記号を置く必要があります。各強弱記号に対応する分数は以下の式で算出されます:
midiMinimumVolume + (midiMaximumVolume - midiMinimumVolume) * fraction
以下の例では、MIDI 全体のボリュームの範囲は 0.2 - 0.5 の範囲に制限されています。
\score { << \new Staff { \key g \major \time 2/2 \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 { \tempo 2 = 72 \context { \Score midiMinimumVolume = #0.2 midiMaximumVolume = #0.5 } } }
[ << 入出力全般 ] | [トップ][目次][インデックス][ ? ] | [ スペースの問題 >> ] | ||
[ < ] | [ 上へ : MIDI での音の強弱を制御する ] | [ > ] |
楽器の音の強さを均一化する (i)
Staff
コンテキストの中で最小 MIDI ボリューム プロパティと最大 MIDI ボリューム プロパティが設定されている場合、MIDI 楽器間の相対ボリュームを制御することができます。これは基本的な楽器イコライザであり、MIDI 出力の品質を著しく高めることができます。
以下の例では、クラリネットのボリュームはフルートのボリュームよりも相対的に低く設定されています。これを正しく機能させるには、それぞれの楽器の最初の音符に強弱記号を置く必要があります。
\score { << \new Staff { \key g \major \time 2/2 \set Staff.midiInstrument = #"flute" \set Staff.midiMinimumVolume = #0.7 \set Staff.midiMaximumVolume = #0.9 \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" \set Staff.midiMinimumVolume = #0.3 \set Staff.midiMaximumVolume = #0.6 \new Voice \relative { b'1\p a2. b8 a g2. fis8 e fis2 r } } >> \layout {} \midi { \tempo 2 = 72 } }
[ << 入出力全般 ] | [トップ][目次][インデックス][ ? ] | [ スペースの問題 >> ] | ||
[ < ] | [ 上へ : MIDI での音の強弱を制御する ] | [ MIDI での打楽器 > ] |
楽器の音の強さを均一化する (ii)
MIDI 最小/最大ボリューム プロパティが設定されていない場合、デフォルトでは、LilyPond はいくつかの楽器に軽度の均一化を適用します。適用を受ける楽器とその equalization は ‘../scm/midi.scm’ の中にあるテーブル instrument-equalizer-alist に示されています。
引数として MIDI 楽器名だけを受け入れて、その楽器に適用する最小/最大ボリュームの分数ペアを返す Scheme プロシージャを
Score
コンテキストの中にある
instrumentEqualizer
にセットすることで、この基本的なデフォルト イコライザを置き換えることができます。この置き換えは、このセクションの始めでの
dynamicAbsoluteVolumeFunction
の再設定の方法とまったく同じです。‘../scm/midi.scm’ の中にあるデフォルト イコライザ
default-instrument-equalizer はそのようなプロシージャをどのように記述するのかを示しています。
以下の例は、フルートとクラリネットの相対ボリュームを前の例と同じ値にセットしています。
#(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 { \tempo 2 = 72 } }
[ << 入出力全般 ] | [トップ][目次][インデックス][ ? ] | [ スペースの問題 >> ] | ||
[ < ] | [ 上へ : MIDI での音の強弱を制御する ] | [ MIDI での打楽器 > ] |
他の言語: English, català, deutsch, español, français, italiano
About automatic language selection.