sfzを作成してDAW/エンジニアごっこ遊びを堪能しよう

:::note warn
本稿は[DTMテクニック集 Advent Calendar 2022](https://qiita.com/advent-calendar/2022/dtm-technique-tips)にも関わらず悪い遊びを教える試みです
:::

# はじめに
やぁみんな、DAW使ってる？こんにちはこんばんは、switchworksです。
今日のお話、本当は動画にしてYouTuberぶりたいなーなんて思ってたんですが  
思っているだけではいつまでもやらないと思うのでとっとと文字に起こしておくものです。
対象は「DAWやってるけどサンプラー難しい」「DAWあまりやれてないけど**僕、エンジニアァァ!!**」などの方になります。
**ChipTuneなどにも効果テキメン**です。

# サンプラーのおはなし
皆さんはサンプリングCDって持ってますか？もう最近だとLoopcloudですか？
何なら「.wav free」とかでググッて頂いても構いませんが、
とにかく「**wavの音素材**」をお持ちである方、そんな方にトリッキーで面倒でなんだかインテリ風味のする
そんな遊びを教えていきたいんです。

さてこの「サンプリングCD」というのは主に「サンプラー」という機械やソフトウェアで利用する為の物だったりします。
![CakewalkDPro.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/225088/42966f3b-d478-bc89-21a4-6c33d8311e72.png)
(画像はCakewalk社 D-Pro)

あまりサンプラーという物に触れた事の無い方は「なんじゃこりゃ！」と思う事でしょう。
- なんか数値が多い
- なんかノブとかも多い
- 何かグルーピングしてくれている気がするけど**大体よくわからん**

要はとにかく「**知らない単語がいっぱい出てくる**」のが原因だと思います。
特に利便性のために「とりあえず画面上にワッと出てくる」そういうのが多いので、ちょっと面食らいますよね。
でも「ボイスのワンショット」とか「**ガバキック**」を使いたい程度の為に全体を把握しておくの、ちょっとしんどいですよね。

# それ、sfzで出来るよ！

~~~text
<region>
key=60
sample=scream.wav
~~~
メモ帳で上記を書いて拡張子を.sfzで保存、後は適切なサンプラーVSTiで読み込む**だけ**で鳴らせるんです。

:::note warn
え、逆に面倒では？と思った貴方、引き返すなら今です。
:::
:::note info
ちょっと楽しそうと思った貴方は引き続きお楽しみ下さい
:::

# とりあえず最低限必要な行の解説
## \<region\>
とりあえず必須。まずは「wav毎にregion」くらいの認識で良いと思います。

:::note warn
後でもっと破壊的な話をします
:::
## key=60
\<region\>と\<group\>以外をOpcodeって言うらしいです。
keyはlokey/hikey/pitch_keycenterの3つものOpcodeを一度に設定するOpcodeですが、
**分かりやすく言えば「ワンキー設定」する為の物**で、
この場合「60(中央C)に設定」という事になります。中央ハ。中央ド。
よく分からない時はこのあたりに設定しておくとDAWで打ち込みやすいはずです。

*GM音源のドラムキットにあわせたい場合、kickは36が良いかと思います。*

## sample=scream.wav
wavファイルの指定になります。
利用するVSTi等の実装によりますが、恐らくwav以外にもflacやoggは利用可能なはずです。

:::note info
wavファイルの位置は相対指定が可能です。
子フォルダへの格納などが可能になります。
:::
:::note warn
mp3が利用可能な場合がありますがあまり推奨しません
:::

# つまりこれは何をしていますか
「**txtファイルとして編集出来るsfzフォーマットを利用したサンプラー活用**」です！
え、こんなん人間が書く必要無くね？などと思われそうですが……

- **wav側にsustain loop設定がされている場合、sfz側で設定せずともきちんとループします**
- 後述するgroupは割と便利です
- **マウスよりキーボードのほうが早い人種もいるんです**

なおこの手法でもう何度も何度も商用音ゲー等のお仕事をこなしておりますので
**商業レベルで使える手法**です。(言いたい放題)

## groupについて
\<group\>と書いた中に\<region\>を複数個入れる事が出来、
group側に書いたOpcodeはregion側に引き継がれます。またregion側での上書きまで可能です。
~~~text
<group>
volume=0
<region>
key=60
sample=scream_bonjour.wav
<region>
key=61
sample=scream_doshi.wav
~~~
これだけでも便利そうですが、なんと**sampleとかまで全部groupに書く事が出来てしまいます**。
~~~text
<group>
sample=scream.wav
<region>
key=60
pan=-100
<region>
key=61
pan=100
~~~

:::note info
スッと理解出来た貴方はエンジニアですね？
或いはエンジニアの素質があります。
:::

# Opcodeについて
詳細(特に**値の幅や既定値など**)はSFZ 1 opcodesを見て頂くべきですが……

https://sfzformat.com/opcodes/?v=1

特に「よく使うだろ」というOpcodeを解説しておきますね。
## volume
デシベル単位で-144~6dBまで。+方向は6dBまで、というのは割と大事かも。
## pitch_keycenter(0~127)
ワンショット以外で「キーボードっぽく弾く為にピッチ変化して欲しい」場合のルートキー指定です。
既定値が60のようですが、省略して大丈夫かはVSTiの実装によりそうなので、極力pitch_keycenterかkeyのどちらかは書いておいたほうが無難だと思います。
## loop_mode(no_loop/one_shot/loop_continuous/loop_sustain)
ワンショットならno_loop、wavにsustain loopが設定されている場合はloop_continuousのようです。
loop_sustainの場合は「リリースフェーズに入った後はLoopを抜ける」と記載されているんですがsfz/D-Proで機能していない事を確認……んもー
## loop_start / loop_end
もちろん指定出来ます。単位はサンプル単位です。
## offset
なんと波形の再生開始位置もサンプル単位で指定可能です。
これを活用すると一つのwavファイルで複数の音を仕込んだりも可能ですね。
私は昔これを利用して一つのsawでSuperSawを実現しました。sfzべんり。
## transpose
半音単位で指定可能です。
## tune
セント単位でのチューニングも可能です。
ここまでやればもう貴方もsfz使いです。(?)
## ampeg_attack / ampeg_release
**アタックとリリースさえ指定出来れば後は何とか**(暴論)
単位はsec(小数指定可能)です。

# sfzを利用するには
遅くなりましたがVSTiなどの紹介。なるべく無料で。
## Cakewalk(rgc:audio) sfz

http://web.archive.org/web/20070711003558/http://www.rgcaudio.com/sfz.htm

無料。本家。本家なんだからSFZ 1 Opcodesを正しく解釈出来る……**はず**。
loop_modeの件は忘れないぞ

## Plogue sforzando

https://www.plogue.com/products/sforzando.html

無料。SFZ 2.0対応を謳っていますが2.0の実装は1.0以上に方言感が強いので過信しないほうが良いかも。
サイトで無償のsfzを大量に配布しています。凄い。

## BassMidi VSTi
無料。BASS audio libraryを利用したVSTiですが、
BASSは音が良いと勝手に思っているので**多分**音が良いです。
(foobar2000では利用しているんですがこのVSTiは常用していないです……)

## Cakewalk D-Pro
無料化する前のCakewalkをお持ちの方でD-Proが付属していたらすぐにsfzをローディング出来ます。
個人的にはこれも十二分に音が良いと思っています。

## foobar2000
特殊用途ですがfoo_midiで利用可能です。

# 活用する為のおまけ
- LFOやフィルタあたりはVSTiによる実装の差をかなり感じます。万能なsfzを作るのは難しいかもしれません。
- 何かしら波形編集ソフトを用意しましょう。私はSoundForge推しですが[Audacity](https://www.audacityteam.org/)(無料)でもなんでも。
- ループ波形を扱うなら波形編集ソフト上での表示はサンプル単位に切り替えておくと捗ります。
- ループ波形をきちんとチューニングしたい場合は[GVST GTune](https://www.gvst.co.uk/gtune.htm)などを入れておくと捗ります。もちろん無料。
- 拾い食いばかりでなく自分で録音(サンプリング)楽しいですよ。イリーガルに怯える必要も減りますし。
- sfZedというGUIエディタもありますが特段強く推すほどでもないです。**自分で書くほうが早い**
- sampleの長さにあまり制限が無いようでワンフレーズどころか1曲くらいはまるまるいけました。用途は不明
- 試してみてよく分からないなどあれば遠慮無く[Twitter](https://twitter.com/SOU1)や[メール](mailto:s1224g@gmail.com)とかで聞いてみて下さい、対応する**かも**
- Envelope(ADSR)などの細かいパラメータへの理解を深めたい！という方にはサンプラーよりシンプルなシンセがオススメです **[Synth1](https://daichilab.sakura.ne.jp/softsynth/)は良いぞ**

# おわりに
これらの悪い遊びを活用した私の楽曲はYouTubeでダラっと聴くだけでもほんのちょっとお小遣いが増える**はず**なのですが
出来たらSpotifyとかApple Musicなんかでも聴いて頂けるともうちょっとお小遣いが増える**はず**だし
気に入ってからbandcampなどで何か買ってくれるとなお私のお小遣いが増える**はず**です。
**12/24は私の誕生日ですし。ね？**

https://open.spotify.com/artist/44u8XY9IJ9cNxUI3sa9pFX

https://music.apple.com/jp/artist/switchworks/518414521

https://s1224.bandcamp.com/

ゲームのアレンジ/remixなんかは今のところYouTubeのみです。もちろん**無料**でお楽しみ下さい。

https://www.youtube.com/playlist?list=PLDpl0kOouG-S-_xv23rMheqUYM2zl-Xwk