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が見つけづらいのでフォルダ分けしてみます。
これらの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音源制作・ベロシティレイヤーでノートの強弱を設定する