| [ << 入出力全般 ] | [トップ][目次][インデックス][ ? ] | [ スペースの問題 >> ] | ||
| [ < 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.