SFZアンサンブル音源の編集(例3:ストリングス・ダイナミクスレイヤー)
(2020.09.08執筆)
前回の記事では、ピアノを例にベロシティクロスフェードによる強弱の設定方法を書きました。
今回はストリングス・アンサンブル音源等に合わせた、CC11(エクスプレッション)によるダイナミクス強弱の調整例を書き残します。
CC11の加減(大小)が流れるように調整
オーケストラ音源。奏法が多岐にわたって大変なように映りますが、基本のSustain奏法さえ抑えればシンプルです。
今回使う音源は、Logic付属のViolins1。元々はVienna(VSL)の音源(軽量版)
KontaktのFactoryLibraryにも似たようなものが入ってます。
この音源は、Sustainサンプルがp,mf,fの強弱3種類で用意されてます。
- 弱く弾くときはpのサンプル
- 中ぐらいでmfのサンプル
- 強く弾くときはfのサンプル
前回のようにベロシティでサンプルを区切っちゃうと、再生中にベロシティは動かせないので。一つの音符でサンプルが固定のままです。
そのため、CC1(MIDIコントロール1番に割り当てられるダイナミクスの変化)を主体に、サンプルクロスフェード設定を行います。すると、再生途中でもダイナミクス変化に応じて自由にサンプル単位で切り替わります。ついでに音量も合わせて上下する...という設計を、sfz上で実現させていきます。
CCクロスフェードの調整例(動画)
p,mf,f各サンプル毎の音量加減が難関か。
数値は、実際にDAWで確認しながら、耳を頼りに調整してみて。
およそ好きに鳴らしていいのだけど、ストリングス・アンサンブル音源は、音像の距離感が一定。
なので、どのダイナミクス領域で鳴らしても一定の距離感で聞こえるような構成が基本かと思われます。
と言っても、収録の時点でマイク距離が固定、元のサンプルにノーマライズが掛かってるだけでしょうから、各サンプルレイヤーにちょうどいい[volume]の設定とCC1による[クロスフェード]と[gain]の設定のみで十分かと。。
主に使う記述
- volume
- gain_cc1
- xfin_locc1, xfin_hicc1
- xfout_locc1, xfout_hicc1
一応大事なとこだけ、調整例の記述(一部)をメモしておきます。
SFZ ストリングス・レガート...サンプルコード
<control> default_path=50Ens_Violins1/ <global> amp_veltrack=0 //ベロシティでの音量推移は無し ampeg_release=0.4 //レガートが繋がるくらいリリースタイムを余分にとる xf_cccurve=gain //CCクロスフェード設定 //Legato_p v1 //*************************************************************************** <group> volume=-32 //弱い演奏は小さめの音量で gain_cc1=32 //CC1による音量推移の大きさ loop_mode=loop_continuous //ループモードON xfin_locc1=0 xfin_hicc1=35 //CC1によるフェードインの設定 xfout_locc1=35 xfout_hicc1=70 //CC1によるフェードアウトの設定 <region> lokey=55 pitch_keycenter=56 hikey=56 sample=VI1-L_legato_p_G#3.wav loop_start=47300 loop_end=350737 <region> lokey=57 pitch_keycenter=58 hikey=58 sample=VI1-L_legato_p_A#3.wav loop_start=96728 loop_end=434694 <region> lokey=59 pitch_keycenter=60 hikey=60 sample=VI1-L_legato_p_C4.wav loop_start=221081 loop_end=428942 //*************************************************************************** //Legato_mf v2 //*************************************************************************** <group> volume=-20 //中くらいの演奏はそこそこの音量で gain_cc1=20 loop_mode=loop_continuous xfin_locc1=35 xfin_hicc1=70 //CC1によるフェードインの設定 xfout_locc1=70 xfout_hicc1=127 //CC1によるフェードアウトの設定 <region> lokey=55 pitch_keycenter=56 hikey=56 sample=VI1-L_legato_mf_G#3.wav loop_start=145305 loop_end=426359 <region> lokey=57 pitch_keycenter=58 hikey=58 sample=VI1-L_legato_mf_A#3.wav loop_start=104652 loop_end=442975 <region> lokey=59 pitch_keycenter=60 hikey=60 sample=VI1-L_legato_mf_C4.wav loop_start=119707 loop_end=367816 //*************************************************************************** //Legato_f v3 //*************************************************************************** <group> volume=-16 gain_cc1=16 loop_mode=loop_continuous xfin_locc1=70 xfin_hicc1=127 //CC1によるフェードインの設定 <region> lokey=55 pitch_keycenter=56 hikey=56 sample=VI1-L_legato_f_G#3.wav loop_start=54982 loop_end=167815 <region> lokey=57 pitch_keycenter=58 hikey=58 sample=VI1-L_legato_f_A#3.wav loop_start=85309 loop_end=164384 <region> lokey=59 pitch_keycenter=60 hikey=60 sample=VI1-L_legato_f_C4.wav loop_start=54203 loop_end=183079 //***************************************************************************
参考リンク ⇒ https://sfzformat.com/tutorials/sustained_note_basics
アンサンブル弦、大事なところは以上かな。
あとは細々した所を補足していきます。
アタックタイム(音の立ち上がり)について
<group> ampeg_attack=0.6 ampeg_attackcc1=-0.6 //cc1が大きいほど、アタックタイムを小さく。
ampeg_attack=0.6を記述すると、ノート音の立ち上がりがフェードイン0.6秒で入ります。
この値を小さくするほどフェードイン時間が短くそのままの音に鳴る。
アタックを長めにとるとゆっくり音が立ち上がる、スロゥストリングス状態。
これは繊細な響きが必要なときに使えるので、CC1による弱い演奏のときほど立ち上がりを遅く、強く弾くときほど普通にサンプルを再生、といった記述の方法をとってみました。
譜面を書く時、なるだけCCの種類は少ない方が作りやすいので、このように音量の相互関連のものはまとめると楽。
普通に売ってる音源と違って、自分の演奏スタイルや癖に合わせて記述を1本化できるのが、独自カスタマイズの強みかなと思います。
補足:アーティキュレーション切り替えについて
Logic付属のアンサンブル弦には、6つの奏法サンプルが用意されています。
- サスティン(p,mf,f)
- スタッカート(downbow, upbow)
- トレモロ(mf)
- 半音トリル
- 全音トリル
- ピッチカート(p,f)
スタッカートサンプルは、レガートやトレモロと合わせて再生することで、立ち上がりが強調されたスタッカートレガート、スタッカートトレモロとして演奏することも出来ます。そうすると、以下の8通りの奏法が実現できます。
- サスティン
- スタッカート・サスティン
- スタッカート
- スタッカート・トレモロ
- トレモロ
- 半音トリル
- 全音トリル
- ピッチカート
SFZの形式でこれらのサンプルを切り替える場合、3通りの方法が在ります。
- [lochan], [hichan]...(MIDIチャンネル1〜16)で振り分け、MIDI譜面のノートチャンネルで切り替え
- [sw_lokey], [sw_hikey], [sw_last] キースイッチで切り替え。キーボードで打ち込む時に便利
- [loccN], [hiccN]... CCN番の値で切り替え。アーティキュレーションのクロスフェードも実現可。私はだいたいcc0(=音色のバンク・セレクト)を使う。。。locc0=0 hicc0=16 とか
例1:MIDIチャンネル1〜16で奏法切り替え
lochan=1 hichan=1のように、チャンネルの最低値と最高値を指定。1〜16までの間で割り振ります。ただし主要なsfzサンプルプレーヤーであるSforzandoはMIDIチャンネルに非対応なので、lochan=, hichan=の記述法は非推奨です。
<group> //Sustain p lochan=1 hichan=2 //Sustainはチャンネル1〜2に割り当て <region> //・・・ <region> lokey=55 pitch_keycenter=56 hikey=56 sample=VI1-L_legato_p_G#3.wav <region> //・・・ <group> //Sustain mf lochan=1 hichan=2 //Sustainはチャンネル1〜2に割り当て <region> //・・・ <region> lokey=55 pitch_keycenter=56 hikey=56 sample=VI1-L_legato_mf_G#3.wav <region> //・・・ <group> //Sustain f lochan=1 hichan=2 //Sustainはチャンネル1〜2に割り当て <region> //・・・ <region> lokey=55 pitch_keycenter=56 hikey=56 sample=VI1-L_legato_f_G#3.wav <region> //・・・ //***************************************************************** <group> //Staccato mf lochan=2 hichan=4 //スタッカートはチャンネル2〜4に割り当て seq_length=2 <region> //・・・ <region> lokey=55 pitch_keycenter=56 hikey=56 sample=VI1-stac_downbow_mf_G#3.wav seq_position=1 <region> //・・・ <region> //・・・ <region> lokey=55 pitch_keycenter=56 hikey=56 sample=VI1-stac_upbow_mf_G#3.wav seq_position=2 <region> //・・・ <group> //Staccato f lochan=2 hichan=4 //スタッカートはチャンネル2〜4に割り当て seq_length=2 <region> //・・・ <region> lokey=55 pitch_keycenter=56 hikey=56 sample=VI1-stac_downbow_f_G#3.wav seq_position=1 <region> //・・・ <region> //・・・ <region> lokey=55 pitch_keycenter=56 hikey=56 sample=VI1-stac_upbow_f_G#3.wav seq_position=2 <region> //・・・ //************************************* などなど
例2:キースイッチで奏法切り替え
キースイッチの場合、<global>にsw_lokey=、sw_hikey=でキースイッチに使う鍵盤の範囲を記述しておきます。
そして<group>以下などにsw_last=を指定することで、その奏法に対応するキーを指定できます。sforzandoプレーヤーでsw_lastを2重に指定したい場合、sw_lolast=, sw_hilast=, の範囲で記します。
<global> sw_lokey=47 //キースイッチに使う範囲の最低keyを指定、これはB1 sw_hikey=54 //キースイッチに使う範囲の最高keyを指定、これはF#2 sw_default=48 //初期値のキースイッチを指定 //キースイッチ用の範囲は、B1〜F#2まで。 <group> //Sustain p sw_lolast=47 sw_hilast=48 //Sustainはb1,c2に割り当て <region> //・・・ <region> lokey=55 pitch_keycenter=56 hikey=56 sample=VI1-L_legato_p_G#3.wav <region> //・・・ <group> //Sustain mf sw_lolast=47 sw_hilast=48 //Sustainはb1,c2に割り当て <region> //・・・ <region> lokey=55 pitch_keycenter=56 hikey=56 sample=VI1-L_legato_mf_G#3.wav <region> //・・・ <group> //Sustain f sw_lolast=47 sw_hilast=48 //Sustainはb1,c2に割り当て <region> //・・・ <region> lokey=55 pitch_keycenter=56 hikey=56 sample=VI1-L_legato_f_G#3.wav <region> //・・・ //***************************************************************** <group> //Staccato mf sw_lolast=48 sw_hilast=49 //スタッカートはc2,c#2に割り当て seq_length=2 <region> //・・・ <region> lokey=55 pitch_keycenter=56 hikey=56 sample=VI1-stac_downbow_mf_G#3.wav seq_position=1 <region> //・・・ <region> //・・・ <region> lokey=55 pitch_keycenter=56 hikey=56 sample=VI1-stac_upbow_mf_G#3.wav seq_position=2 <region> //・・・ <group> //Staccato f sw_lolast=48 sw_hilast=49 //スタッカートはc2,c#2に割り当て seq_length=2 <region> //・・・ <region> lokey=55 pitch_keycenter=56 hikey=56 sample=VI1-stac_downbow_f_G#3.wav seq_position=1 <region> //・・・ <region> //・・・ <region> lokey=55 pitch_keycenter=56 hikey=56 sample=VI1-stac_upbow_f_G#3.wav seq_position=2 <region> //・・・ //************************************* <group> //Pizzicato sw_last=54 //ピッチカートはf#2に割り当て //〜省略
例3:CC0で奏法切り替え
私がよく使う方法です。これの利点は、必要であればアーティキュレーションのクロスフェードも簡単に導入できることです。
スタッカートをレガートのアクセントに使用する場合、その割合を決められたりとか。します。その分CCの調節が面倒かもだけど。。REAPERだとスクリプトを応用すればショートカットキーでも切り替えられるようになります。
[locc0]、[hicc0]で範囲を指定。クロスフェードを使う場合は、エクスプレッションダイナミクスと同様な感じで[xfin_locc0]、[xfin_hicc0]、[xfout_locc0]、[xfout_hicc0]を指定すると良いです。
<group> //Sustain p locc0=0 hicc0=31 //Sustainはcc0=0〜31に割り当て <region> //・・・ <region> lokey=55 pitch_keycenter=56 hikey=56 sample=VI1-L_legato_p_G#3.wav <region> //・・・ <group> //Sustain mf locc0=0 hicc0=31 //Sustainはcc0=0〜31に割り当て <region> //・・・ <region> lokey=55 pitch_keycenter=56 hikey=56 sample=VI1-L_legato_mf_G#3.wav <region> //・・・ <group> //Sustain f locc0=0 hicc0=31 //Sustainはcc0=0〜31に割り当て <region> //・・・ <region> lokey=55 pitch_keycenter=56 hikey=56 sample=VI1-L_legato_f_G#3.wav <region> //・・・ //***************************************************************** <group> //Staccato mf locc0=16 hicc0=47 //スタッカートはcc0=16〜47に割り当て seq_length=2 <region> //・・・ <region> lokey=55 pitch_keycenter=56 hikey=56 sample=VI1-stac_downbow_mf_G#3.wav seq_position=1 <region> //・・・ <region> //・・・ <region> lokey=55 pitch_keycenter=56 hikey=56 sample=VI1-stac_upbow_mf_G#3.wav seq_position=2 <region> //・・・ <group> //Staccato f locc0=16 hicc0=47 //スタッカートはcc0=16〜47に割り当て seq_length=2 <region> //・・・ <region> lokey=55 pitch_keycenter=56 hikey=56 sample=VI1-stac_downbow_f_G#3.wav seq_position=1 <region> //・・・ <region> //・・・ <region> lokey=55 pitch_keycenter=56 hikey=56 sample=VI1-stac_upbow_f_G#3.wav seq_position=2 <region> //・・・ //************************************* などなど
まとめ
cc1によるダイナミクスクロスフェードの設定と、cc0での奏法切り替えがメインのお話でした。
今回のクロスフェードの方法はアンサンブルだからこそ出来るやり方で、これがソロになると難しいんですよね(ピッチがずれて重なるとアンサンブルに鳴るので)次回は、ソロ音源について突き詰められたらなぁと思います。