SFZ音源を元サンプルから作る(例1:オルゴール音源を組み立てる)

(2020.08.20執筆)


前回の記事でSFZ音源を再生するプラグイン(SFZero-X)をインストールできました。

手持ちにWAVサンプルがあれば、簡単に.sfz形式にして扱うことができます。 ソフトの制限を超えて、自分の好きなように音源をカスタマイズできるので、.SFZ形式の音源管理は断然おすすめ。 試しに自前で組んで音を鳴らすことをしてみます。

記法の予備知識

音階ドレミの表記が、アルファベット形式です。

ド=C
ド#=C#
レ=D
ミ=E
ファ=F
ソ=G
ラ=A
ラ#=A# = シ♭=Bb
シ=B

其処に音階の高さを表す数字が付属します。
(例:C3)

鍵盤キーにWAVサンプルを割り当てる時は、.sfzにテキストエディタで、対応する音階に合わせて以下のように記述するだけです。
(例:.sfzファイルが.wavと同じフォルダに在る状態)
<region> key=A4 sample=Dat_Carillon_A4_rr1.wav

たったこれだけで、A4の鍵盤を押したときにちゃんと音が鳴ります。 動画でも実践してみました。






加えて、一つのWAVサンプルで複数の鍵盤キーを担当させる時は以下のようにします。
<region> lokey=G#4 pitch_keycenter=A4 hikey=A#4 sample=Dat_Carillon_A4_rr1.wav

元のキー(pitch_keycenter)を指定すれば、それぞれのキーが半音単位でピッチシフトします。
このとき、鍵盤のキー範囲もlokey、hikeyで設定することを忘れずに。




尚、オルゴールのサンプル音源は、DreamAudioToolsさんより使わせていただいてます。感謝。

⇒ DreamAudioToolsオルゴール

音源を組む手順

WAVサンプルの音を聴いて、使いたいな〜と思ったら組む。 構成はサンプル一覧を見て考える。

DreamBoxの音階サンプルが

A4 rr2
A5 rr2
Bb4 rr2
Bb5 rr2
C6 rr2
C#6 rr2
D4 rr2
D5 rr2
D6 rr2
D#6
F#4 rr2
F#5
G4 rr2
G5 rr2

だけある。これを音階順に並び替えてみる。


D4 rr2
F#4 rr2
G4 rr2
A4 rr2
Bb4 rr2

D5 rr2
F#5
G5 rr2
A5 rr2
Bb5 rr2

C6 rr2
C#6 rr2
D6 rr2
D#6


サンプルが多くなると.sfzが見つけづらいのでフォルダ分けしてみます。
sfz音源


これらのWAVサンプルを、先程のように<region>〜で記述するとこんな感じ。
フォルダ指定は”フォルダ名\”で区切ります。(Linuxの場合は/で区切っても良い)

同じような記述が並ぶので、regionの行毎にコピー&ペーストを使うと早いです。
<region> lokey=C4 pitch_keycenter=D4 hikey=D#4 sample=11MusicBox\Dat_Carillon_D4_rr1.wav
<region> lokey=E4 pitch_keycenter=F#4 hikey=F#4 sample=11MusicBox\Dat_Carillon_F#4_rr1.wav
<region> key=G4 sample=11MusicBox\Dat_Carillon_G4_rr1.wav
<region> lokey=G#4 pitch_keycenter=A4 hikey=A4 sample=11MusicBox\Dat_Carillon_A4_rr1.wav
<region> lokey=A#4 pitch_keycenter=A#4 hikey=B4 sample=11MusicBox\Dat_Carillon_Bb4_rr1.wav

サンプルのフォルダパスは最初に指定する


サンプルが多くなると、sample=フォルダ名\で毎回区切るのが手間ですね。 そんなとき、最初にフォルダ名のパスを指定して、表記を省略することが可能。

このように<control> default_path=フォルダ名\ を指定すると楽です。
<control>
default_path=11MusicBox\   //ここでサンプルフォルダ名を指定

<region> lokey=C4 pitch_keycenter=D4 hikey=D#4 sample=Dat_Carillon_D4_rr1.wav
<region> lokey=E4 pitch_keycenter=F#4 hikey=F#4 sample=Dat_Carillon_F#4_rr1.wav
<region> key=G4 sample=Dat_Carillon_G4_rr1.wav
<region> lokey=G#4 pitch_keycenter=A4 hikey=A4 sample=Dat_Carillon_A4_rr1.wav
<region> lokey=A#4 pitch_keycenter=A#4 hikey=B4 sample=Dat_Carillon_Bb4_rr1.wav


一オクターブ分ができたら、これらを丸ごとコピーしてさらに編集。。。
コピーした分は音階の高さを書き換えるだけで良いので楽。
<control>
default_path=11MusicBox\

<region> lokey=C4 pitch_keycenter=D4 hikey=D#4 sample=Dat_Carillon_D4_rr1.wav
<region> lokey=E4 pitch_keycenter=F#4 hikey=F#4 sample=Dat_Carillon_F#4_rr1.wav
<region> key=G4 sample=Dat_Carillon_G4_rr1.wav
<region> lokey=G#4 pitch_keycenter=A4 hikey=A4 sample=Dat_Carillon_A4_rr1.wav
<region> lokey=A#4 pitch_keycenter=A#4 hikey=B4 sample=Dat_Carillon_Bb4_rr1.wav

<region> lokey=C5 pitch_keycenter=D5 hikey=D#5 sample=Dat_Carillon_D5_rr1.wav
<region> lokey=E5 pitch_keycenter=F#5 hikey=F#5 sample=Dat_Carillon_F#5.wav //ここはrrが存在しない
<region> key=G5 sample=Dat_Carillon_G5_rr1.wav
<region> lokey=G#5 pitch_keycenter=A5 hikey=A5 sample=Dat_Carillon_A5_rr1.wav
<region> lokey=A#5 pitch_keycenter=A#5 hikey=B5 sample=Dat_Carillon_Bb5_rr1.wav


最後の音階はちょっと構成が違うので、仕上げは丁寧に。
<control>
default_path=11MusicBox\

<region> lokey=C4 pitch_keycenter=D4 hikey=D#4 sample=Dat_Carillon_D4_rr1.wav
<region> lokey=E4 pitch_keycenter=F#4 hikey=F#4 sample=Dat_Carillon_F#4_rr1.wav
<region> key=G4 sample=Dat_Carillon_G4_rr1.wav
<region> lokey=G#4 pitch_keycenter=A4 hikey=A4 sample=Dat_Carillon_A4_rr1.wav
<region> lokey=A#4 pitch_keycenter=A#4 hikey=B4 sample=Dat_Carillon_Bb4_rr1.wav

<region> lokey=C5 pitch_keycenter=D5 hikey=D#5 sample=Dat_Carillon_D5_rr1.wav
<region> lokey=E5 pitch_keycenter=F#5 hikey=F#5 sample=Dat_Carillon_F#5.wav //ここはrrが存在しない
<region> key=G5 sample=Dat_Carillon_G5_rr1.wav
<region> lokey=G#5 pitch_keycenter=A5 hikey=A5 sample=Dat_Carillon_A5_rr1.wav
<region> lokey=A#5 pitch_keycenter=A#5 hikey=B5 sample=Dat_Carillon_Bb5_rr1.wav

<region> key=C6 sample=Dat_Carillon_C6_rr1.wav
<region> key=C#6 sample=Dat_Carillon_C#6_rr1.wav
<region> key=D6 sample=Dat_Carillon_D6_rr1.wav
<region> lokey=D#6 pitch_keycenter=D#6 hikey=G6 sample=Dat_Carillon_D#6.wav //ここはrrが存在しない

とりあえずここまで書けたら保存、既に楽器として演奏できる状態です!
おめでとう! 試しに何か鳴らしてみるといいかな。




あ〜、あはは。とりあえず鳴りはする。が、音がぶつ切れ。
これリリースタイム(ノートオフから減衰までの時間)の設定が不可欠でした。

.sfzの最初に以下を追記します。
<global>
ampeg_release=3.0  //ノートオフ(音を止める)とき、3.0s(秒)かけてゆっくり出音を小さくする
off_mode=normal

<group>

<global>直下は、項目が上書きされない限り全ての<region>に値が反映される設定です。 これで、ノートオフから音がゆっくり減衰するように鳴ります。ではでは改めて。



MIDI譜面は、当サイトの「箱庭のお茶会」を使ってます。

オルゴールMIDI「箱庭のお茶会」


無事に鳴りました。
ふ〜、初めてだとすっごく大変だと思います。おつかれさまでした。

慣れたら、コピペでがんがん編集できて楽です。読み込みも早いし

ラウンドロビンの設定

ちょっと休憩したら、合わせてラウンドロビン(RoundRobin)の設定まで行ってみましょう。

ラウンドロビンとは、1つの音階に複数のサンプルを用意して、ノートオン毎に交互に鳴らす設定のことです。 ベタ打ちでもバラエティに富んた音に鳴る。打楽器とかリズム楽器によく利用されます。今回のオルゴールも2つのRRが用意されてるのでカスタマイズしてみます。

ラウンドロビンの表記

<region> seq_length=2 seq_position=1 key=A4 sample=Dat_Carillon_A4_rr1.wav
<region> seq_length=2 seq_position=2 key=A4 sample=Dat_Carillon_A4_rr2.wav

seq_lengthでラウンドロビンの最大数を、seq_positionで何番目を指定するかをそれぞれ表記。
サンプルも合わせてrr1とrr2にそれぞれ振り分ける。これでノートオン毎に交互に鳴ります。

全ての<region>に対しseq_length=2が共通するので、groupタグでまとめた表記も可能です。
<group> seq_length=2 
<region> seq_position=1 key=A4 sample=Dat_Carillon_A4_rr1.wav
<region> seq_position=2 key=A4 sample=Dat_Carillon_A4_rr2.wav


前回のオルゴールに、ラウンドロビンを全regionに対して付記したのが、以下。
<control>
default_path=11MusicBox\

<global>
ampeg_release=3
off_mode=normal

<group> seq_length=2
<region> seq_position=1 lokey=C4 pitch_keycenter=D4 hikey=D#4 sample=Dat_Carillon_D4_rr1.wav
<region> seq_position=2 lokey=C4 pitch_keycenter=D4 hikey=D#4 sample=Dat_Carillon_D4_rr2.wav

<region> seq_position=1 lokey=E4 pitch_keycenter=F#4 hikey=F#4 sample=Dat_Carillon_F#4_rr1.wav
<region> seq_position=2 lokey=E4 pitch_keycenter=F#4 hikey=F#4 sample=Dat_Carillon_F#4_rr2.wav

<region> seq_position=1 key=G4 sample=Dat_Carillon_G4_rr1.wav
<region> seq_position=2 key=G4 sample=Dat_Carillon_G4_rr2.wav

<region> seq_position=1 lokey=G#4 pitch_keycenter=A4 hikey=A4 sample=Dat_Carillon_A4_rr1.wav
<region> seq_position=2 lokey=G#4 pitch_keycenter=A4 hikey=A4 sample=Dat_Carillon_A4_rr2.wav

<region> seq_position=1 lokey=A#4 pitch_keycenter=A#4 hikey=B4 sample=Dat_Carillon_Bb4_rr1.wav
<region> seq_position=2 lokey=A#4 pitch_keycenter=A#4 hikey=B4 sample=Dat_Carillon_Bb4_rr2.wav


<region> seq_position=1 lokey=C5 pitch_keycenter=D5 hikey=D#5 sample=Dat_Carillon_D5_rr1.wav
<region> seq_position=2 lokey=C5 pitch_keycenter=D5 hikey=D#5 sample=Dat_Carillon_D5_rr2.wav

<region> seq_length=1 lokey=E5 pitch_keycenter=F#5 hikey=F#5 sample=Dat_Carillon_F#5.wav

<region> seq_position=1 key=G5 sample=Dat_Carillon_G5_rr1.wav
<region> seq_position=2 key=G5 sample=Dat_Carillon_G5_rr2.wav

<region> seq_position=1 lokey=G#5 pitch_keycenter=A5 hikey=A5 sample=Dat_Carillon_A5_rr1.wav
<region> seq_position=2 lokey=G#5 pitch_keycenter=A5 hikey=A5 sample=Dat_Carillon_A5_rr2.wav

<region> seq_position=1 lokey=A#5 pitch_keycenter=A#5 hikey=B5 sample=Dat_Carillon_Bb5_rr1.wav
<region> seq_position=2 lokey=A#5 pitch_keycenter=A#5 hikey=B5 sample=Dat_Carillon_Bb5_rr2.wav

<region> seq_position=1 key=C6 sample=Dat_Carillon_C6_rr1.wav
<region> seq_position=2 key=C6 sample=Dat_Carillon_C6_rr2.wav

<region> seq_position=1 key=C#6 sample=Dat_Carillon_C#6_rr1.wav
<region> seq_position=2 key=C#6 sample=Dat_Carillon_C#6_rr2.wav

<region> seq_position=1 key=D6 sample=Dat_Carillon_D6_rr1.wav
<region> seq_position=2 key=D6 sample=Dat_Carillon_D6_rr2.wav

<region> seq_length=1 lokey=D#6 pitch_keycenter=D#6 hikey=C7 sample=Dat_Carillon_D#6.wav

上記のテキストデータを新規の.sfzに保存して、音源を読み込ませるとちゃんと鳴ると思います。WAVファイルの階層に注意。

SFZ編集の参考サイト

SFZ Format
SFZ Format tutorials basic_sfz_file
SFZ規格
(日本語訳)SFZ Format


参考になるサイトさん、日本語はほとんどないが。。
他にも実際に配布されてるsfz音源の中身を観ると、組み方勉強になると思います。

わからんでも、記述の方法見ながら何とかできる。
私もつい1週間前に初めて触った、わりと扱いやすい感じでした。(余計なエフェクトを使わないなら簡単)

まとめ

sfz音源はDAWやPC(OS)間を超えて、簡単に音源の共有が可能。それに軽さと編集のしやすさが最高!
Linuxなら、この形式での管理を推奨するかな(可能な範囲で)


次 ⇒ sfz音源制作・ベロシティレイヤーでノートの強弱を設定する

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

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