SFZアンサンブル音源の編集(例3:ストリングス・ダイナミクスレイヤー)

(2020.09.08執筆)


前回の記事では、ピアノを例にベロシティクロスフェードによる強弱の設定方法を書きました。
今回はストリングス・アンサンブル音源等に合わせた、CC11(エクスプレッション)によるダイナミクス強弱の調整例を書き残します。

CC11の加減(大小)が流れるように調整

オーケストラのアンサンブル音源。奏法が多岐にわたって大変なように映りますが、基本のレガート奏法さえ抑えればシンプルです。

今回使う音源は、Logic付属のViolins1。これ、元々はVienna(VSL)の音源(軽量版)みたい。KontaktのFactoryLibraryにも同様のものが入ってそう。。

ということで、Viennaのストリングス(軽量版)が題材です。
この音源は、レガートサンプルがp,mf,fの強弱3種類で用意されてます。

  • 弱く弾くときはpのサンプル
  • 中ぐらいでmfのサンプル
  • 強く弾くときはfのサンプル


これを前回のようにベロシティで区切っちゃうと、ベロシティは再生途中で動かせないので。一つの音符でサンプルが固定のまま。。 そのため、CC11(これはMIDIコントロール11番に割り当てられるエクスプレッションの強弱という意味)を主体にダイナミクス調整やクロスフェード設定を行います。すると、レガート再生途中でも自由にサンプル単位で切り替え可能。ついでに音量も合わせて上下する...という考えを形にしていきます。

CCクロスフェードの調整例(動画)



p,mf,f各サンプル毎の音量加減が難関か。
数値は、実際にDAWで確認しながら、耳を頼りに調整してみて。

およそ好きに鳴らしていいのだけど、ストリングス・アンサンブル音源は、音像の距離感が固定。
なので、どのダイナミクス領域で鳴らしても一定の距離感で聞こえるような構成が基本かと思われます。
と言っても、収録の時点でマイク距離が固定、元のサンプルにノーマライズが掛かってるだけでしょうから、各サンプルレイヤーにちょうどいい[volume]の設定とCC11による[クロスフェード]と[gain]の設定のみで十分かと。。

主に使う記述

  • volume
  • gain_cc11
  • xfin_locc11, xfin_hicc11
  • xfout_locc11, xfout_hicc11


一応大事なとこだけ、調整例の記述(一部)をメモしておきます。

SFZ ストリングス・レガート...サンプルコード

<control>
default_path=50Ens_Violins1/


<global>
amp_veltrack=12 //ベロシティでの音量推移は少しに抑える
ampeg_release=0.4 //レガートが繋がるくらいリリースタイムを余分にとる
xf_cccurve=gain //CCクロスフェード設定


//Legato_p v1
//***************************************************************************
<group>
volume=-32 //弱い演奏は小さめの音量で
gain_cc11=32 //CC11による音量推移の大きさ
loop_mode=loop_continuous //ループモードON

xfin_locc11=0 xfin_hicc11=35 //CC11によるフェードインの設定
xfout_locc11=35 xfout_hicc11=70 //CC11によるフェードアウトの設定

<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_cc11=20
loop_mode=loop_continuous

xfin_locc11=35 xfin_hicc11=70 //CC11によるフェードインの設定
xfout_locc11=70 xfout_hicc11=127 //CC11によるフェードアウトの設定

<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_cc11=16 
loop_mode=loop_continuous

xfin_locc11=70 xfin_hicc11=127 //CC11によるフェードインの設定

<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


アンサンブル弦、大事なところは以上かな。
あとは細々した所を補足していきます。

補足1:アタックタイム(音の立ち上がり)について

<group>
ampeg_attack=0.6
ampeg_attackcc11=-0.6 //cc11が大きいほど、アタックタイムを小さく。

ampeg_attack=0.6を記述すると、ノート音の立ち上がりがフェードイン0.6秒で入ります。 この値を小さくするほどフェードイン時間が短くそのままの音に鳴る。 アタックを長めにとるとゆっくり音が立ち上がる、スロゥストリングス状態。

これは繊細な響きが必要なときに使えるので、CC11による弱い演奏のときほど立ち上がりを遅く、強く弾くときほど普通にサンプルを再生、といった記述の方法をとってみました。

譜面を書く時、なるだけCCの種類は少ない方が作りやすいので、このように音量の相互関連のものはまとめると楽。 普通に売ってる音源と違って、自分の演奏スタイルや癖に合わせて記述を1本化できるのが、独自カスタマイズの強みかなと思います。

補足2:アーティキュレーション切り替えについて

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までの間で割り振ります。

<group> //Legato p
lochan=1 hichan=2 //レガートはチャンネル1〜2に割り当て
<region> //・・・
<region> lokey=55 pitch_keycenter=56 hikey=56 sample=VI1-L_legato_p_G#3.wav
<region> //・・・

<group> //Legato mf
lochan=1 hichan=2 //レガートはチャンネル1〜2に割り当て
<region> //・・・
<region> lokey=55 pitch_keycenter=56 hikey=56 sample=VI1-L_legato_mf_G#3.wav
<region> //・・・

<group> //Legato f
lochan=1 hichan=2 //レガートはチャンネル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]でキースイッチに使う鍵盤の範囲を指定して、<global>に[sw_last]で、再生に対応するキーを指定します。sw_lastを2重に指定した場合、うまく再生されるかは未検証です。うまく行かない場合は、sw_lastを一つずつ別個でグループを作ってください。

<global>
sw_lokey=47 //キースイッチに使う範囲の最低keyを指定、これはB1
sw_hikey=54 //キースイッチに使う範囲の最高keyを指定、これはF#2
//キースイッチ用の範囲は、B1〜F#2まで。


<group> //Legato p
sw_last=47 sw_last=48 //レガートはb1,c2に割り当て
<region> //・・・
<region> lokey=55 pitch_keycenter=56 hikey=56 sample=VI1-L_legato_p_G#3.wav
<region> //・・・

<group> //Legato mf
sw_last=47 sw_last=48 //レガートはb1,c2に割り当て
<region> //・・・
<region> lokey=55 pitch_keycenter=56 hikey=56 sample=VI1-L_legato_mf_G#3.wav
<region> //・・・

<group> //Legato f
sw_last=47 sw_last=48 //レガートはb1,c2に割り当て
<region> //・・・
<region> lokey=55 pitch_keycenter=56 hikey=56 sample=VI1-L_legato_f_G#3.wav
<region> //・・・

//*****************************************************************

<group> //staccato mf
sw_last=48 sw_last=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_last=48 sw_last=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> //・・・

//************************************* などなど

例3:CC0で奏法切り替え

私がよく使う方法です。これの利点は、必要であればアーティキュレーションのクロスフェードも簡単に導入できることです。 スタッカートをレガートのアクセントに使用する場合、その割合を決められたりとか。します。その分CCの調節が面倒かもだけど。。REAPERだとスクリプトを応用すればショートカットキーでも切り替えられるようになります。

[locc0]、[hicc0]で範囲を指定。クロスフェードを使う場合は、エクスプレッションダイナミクスと同様な感じで[xfin_locc0]、[xfin_hicc0]、[xfout_locc0]、[xfout_hicc0]を指定すると良いです。
<group> //Legato p
locc0=0 hicc0=31 //レガートはcc0=0〜31に割り当て
<region> //・・・
<region> lokey=55 pitch_keycenter=56 hikey=56 sample=VI1-L_legato_p_G#3.wav
<region> //・・・

<group> //Legato mf
locc0=0 hicc0=31 //レガートはcc0=0〜31に割り当て
<region> //・・・
<region> lokey=55 pitch_keycenter=56 hikey=56 sample=VI1-L_legato_mf_G#3.wav
<region> //・・・

<group> //Legato f
locc0=0 hicc0=31 //レガートは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> //・・・

//************************************* などなど

まとめ

cc11によるダイナミクスクロスフェードの設定と、cc0での奏法切り替えがメインのお話でした。
今回のクロスフェードの方法はアンサンブルだからこそ出来るやり方で、これがソロになると難しいんですよね(ピッチがずれて重なるとアンサンブルに鳴るので)次回は、ソロ音源について突き詰められたらなぁと思います。


SFZ音源・カスタマイズ設定項目

  1. SFZ-VSTi on Linux ⇒ サウンドフォント専用サンプラーの導入
  2. (例1:オルゴール音源を一から作る)
  3. (例2:ピアノ編・ベロシティレイヤー)
  4. (例3:ストリングス編・ダイナミクスレイヤー)