SFZ形式ファイルの作成方法
SFZ形式ファイルとは
SFZ形式とは、マークアップ言語で記述されたサウンドフォント用のプレーンテキストファイル形式のこと。SFZ形式ファイルとは、その形式で作成されたサウンドフォントファイルのことで、サウンドフォントシンセ等のサウンドフォントプレイヤーに読み込ませて使用する。このファイルを我がantiX 19 i386(Debian 10 BusterベースのLinuxディストリビューション)で作成してみた。ホントならPolyphoneで作成できればいいのだが、このFLOSS(自由ソフトウェアかつオープンソース)なソフトは専らSF2形式向けで、SFZ形式への対応は限定的な模様。
SFZ形式に対応しているプラグイン等の準備
導入方法は次の4種類。
- SFZeroというFLOSSなJACKクライアント及びVSTプラグインを、JUCEというマルチメディアフレームワークを介してビルド
- zam-pluginsというFLOSSなJACKクライアント及びLADSPA・LV2・VSTプラグイン集にあるZamSFZというプラグインをビルド(実験的なのかこれとZamChild670、ZamNoise、ZamPiano、ZamSynthはmakefileを弄らないとビルドされない)
- LinuxSamplerというJACKクライアント及びDSSI・LV2・VSTプラグインを導入
- CarlaというFLOSSなLADSPA・DSSI・LV2・VSTプラグインホストを導入
SFZeroとzam-pluginsのビルド方法は割愛。ZamSFZとCarlaはSFZeroをそれぞれライブラリー化、モジュラー化して組み込んでいるので、音作りに関する構造はさほど変わらない。一方、LinuxSamplerは優れたサンプラーで、その特徴は次のとおり。
- GigaSampler形式(拡張子.gig)、DLS形式、SF2形式及びSFZ形式(拡張規格にも対応)を利用可能
- JACKクライアント及びDSSI・LV2・VSTプラグインで提供
- GUIはないが、JACKクライアント又は各プラグインを起動後、QSampler等の優れたGUIフロントエンドを起動し、そこから操作可能
- libgigというライブラリーに付属しているgigtoolsというコマンドラインツール集が、GigaSampler形式、DLS形式、SF2形式、KORG形式(拡張子.ksf又は.kmp)、AKAIディスクイメージを展開又は変換するなど強力
詳しくは『第192回 サンプル音源シンセサイザーを使う:GigaSamplerフォーマット編 | gihyo.jp』のとおり。でも、SF2形式ならFluidSynth-DSSI、SFZ形式ならSFZeroがいずれも軽量なので、たまに利用する程度。ただ、SFZeroはSFZ v1規格には対応しているが、SFZ v2規格には限定的にしか対応していない。本記事の例はQtractorというDAWとSFZeroの組合せでテストしている。
サンプルファイルの準備
ターミナルから次のようなコマンドでalsa-utils等をインストールする。
sudo apt update && sudo apt upgrade && sudo apt clean sudo apt install alsa-utils horgand-data hydrogen-drumkits
すると次のような音声ファイルがインストールされる。alsa-utilsの場合。
/usr/share/sounds/alsa/Front_Center.wav /usr/share/sounds/alsa/Front_Left.wav /usr/share/sounds/alsa/Front_Right.wav /usr/share/sounds/alsa/Noise.wav /usr/share/sounds/alsa/Rear_Center.wav /usr/share/sounds/alsa/Rear_Left.wav /usr/share/sounds/alsa/Rear_Right.wav /usr/share/sounds/alsa/Side_Left.wav /usr/share/sounds/alsa/Side_Right.wav
horgand-dataの場合。
/usr/share/horgand/130_Houseloop_2.wav /usr/share/horgand/AcousticBass.wav /usr/share/horgand/Default.horeb /usr/share/horgand/FenderBass.wav /usr/share/horgand/FretlessBass.wav /usr/share/horgand/Rhythm_List.txt /usr/share/horgand/crackle_loop01.wav /usr/share/horgand/egg_loop01.wav /usr/share/horgand/frog_loop01.wav /usr/share/horgand/funkyfeet1.wav
hydrogen-drumkitsの場合(一部)。なお、一番下のdrumkit.xmlはFLOSSなHydrogen向けサウンドフォントファイルで、音声ファイルではない。
/usr/share/hydrogen/data/drumkits/Audiophob/101450__menegass__tomh.wav /usr/share/hydrogen/data/drumkits/Audiophob/104227__minorr__hhat-paiste-302-14-open-p.wav /usr/share/hydrogen/data/drumkits/Audiophob/116973__cbeeching__hat-light.wav /usr/share/hydrogen/data/drumkits/Audiophob/122557__anillogic__trimo-c3.wav /usr/share/hydrogen/data/drumkits/Audiophob/124101__connersaw8__crash.wav /usr/share/hydrogen/data/drumkits/Audiophob/124382__cubix__8bit-snare.wav /usr/share/hydrogen/data/drumkits/Audiophob/15590__lewis__sabmute.wav /usr/share/hydrogen/data/drumkits/Audiophob/156272__dayvonjersen__fxshake5.wav /usr/share/hydrogen/data/drumkits/Audiophob/16336__sstokes__ss-ht-crunchtime.wav /usr/share/hydrogen/data/drumkits/Audiophob/25671__walter-odington__garage-city-snare-snappy.wav /usr/share/hydrogen/data/drumkits/Audiophob/29800__stomachache__3.wav /usr/share/hydrogen/data/drumkits/Audiophob/86335__zgump__tom-0105.wav /usr/share/hydrogen/data/drumkits/Audiophob/99930__menegass__noise-tom0.wav /usr/share/hydrogen/data/drumkits/Audiophob/99931__menegass__noise-tom1.wav /usr/share/hydrogen/data/drumkits/Audiophob/drumkit.xml
SFZ形式ファイルの作成:基礎編
テキストエディターを使用し、次のようにUTF-8形式で拡張子.sfzのファイルを作成。ファイル名は任意。ファイル内にはgroupとregionというヘッダーがあり、各ヘッダー内にsample等の「オペコード=値」を記述する。regionヘッダーは乱暴に言えば個別指定用、groupヘッダーは各regionヘッダーの共通指定用。例えば、2つのregionヘッダーで、ベロシティ(音の強弱)が0から100の場合はサンプルA、101から127までの場合はサンプルBを使用すると指定し、groupヘッダーでどのMIDIノートのキーを使用したときにサンプルA又はBを使用するか指定する。ダブルスラッシュ(//)から始まる行は、コメント行になる。では、alsa-utilsのNoise.wavというノイズ音をサンプルにして記述していく。
// サンプル全部をループさせる例 // groupヘッダー <group> // sampleというオペコードでサンプルファイルを指定(規格では相対参照と定義されているようだが、SFZeroでは絶対参照でも指定可能) sample=/usr/share/sounds/alsa/Noise.wav // loop_modeというオペコードでサンプルをループさせるかどうかを指定(loop_continuousの値でループ) loop_mode=loop_continuous // pitch_keycenterというオペコードでサンプルのルートキー(値はノート名又はノート番号)を指定 pitch_keycenter=f3 // volumeというオペコードでボリューム(値はdb)を指定 volume=6 // ampeg_releaseというオペコードでアンプEGのリリース時間(値は秒)を指定 ampeg_release=0.500 // regionヘッダーで指定することはないので空欄 <region>
こんな感じで任意の場所へ保存。指定できるサンプルファイルの音声ファイルフォーマットは、SFZ v1規格ではWAV及びOgg Vorbisと定義され、SFZ v2規格では加えてAIFF及び(実装が必須ではないが)FLACと定義されている。SFZeroでは4つとも指定可能。なお、本記事の例ではこの点を除き、SFZ v1規格しか利用していない。二つ目は、「Front Left」という女性の発声が録音されたalsa-utilsのFront_Left.wavの「Left」の部分だけを使用する場合。
// サンプルの一部を切り取ってループさせない例 <group> sample=/usr/share/sounds/alsa/Front_Left.wav // offsetというオペコードでサンプルファイルの再生開始位置(値はバイト)を指定 offset=35292 // endというオペコードでサンプルファイルの再生終了位置(値はバイト)を指定 end=46449 pitch_keycenter=a3 volume=6 ampeg_release=0.500 <region>
サンプルファイルの再生開始・終了位置のバイトは、FLOSSなオーディオ編集ソフトであるAudacityの選択ツールバーの表示単位をサンプルにすれば確認可能。三つ目は、フェンダーベースのA2音が録音されたhorgand-dataのFenderBass.wavという音声ファイルを使用する場合。
// サンプルの一部を切り取ってループさせる例 <group> sample=/usr/share/horgand/FenderBass.wav loop_mode=loop_continuous // loop_startというオペコードでループの開始位置(値はバイト)を指定 loop_start=17843 // loop_endというオペコードでループの終了位置(値はバイト)を指定 loop_end=18520 pitch_keycenter=a2 volume=6 ampeg_release=0.500 <region>
ピッチは、Audacityの解析→スペクトル表示から、強調自己相関のアルゴリズムで確認可能。まあこのあたりまではsamplv1というサンプラーのFLOSSなLV2プラグインでも、独自形式ながら容易に作成できる。
SFZ形式ファイルの作成:応用編
hydrogen-drumkitsのThe Black Pearl 1.0というドラムセットでregionヘッダーを使用する例(抜粋)。また、オープンハイハット、クローズハイハット等の音声が同時に鳴らないよう、groupとoff_byというオペコードで同じ数値を指定する例でもある。
// regionヘッダーを使用する例 // ハイハットをgroup=1のオペコードでまとめ、off_by=1のオペコードでgroup=1の音声が鳴らされたときにオフにする // key(値はノート名又はノート番号)というオペコードでF#2(42)の挙動を指定 // 42 Sabian Hat Closed <group> group=1 key=42 pan=-52 off_by=1 // ベロシティが0以上(lovel=0)26以下(hivel=26)のとき、SabianHatClosed-Softest.wavの音声を鳴らす <region> lovel=0 hivel=26 sample=/usr/share/hydrogen/data/drumkits/The Black Pearl 1.0/SabianHatClosed-Softest.wav <region> lovel=27 hivel=52 sample=/usr/share/hydrogen/data/drumkits/The Black Pearl 1.0/SabianHatClosed-Soft.wav <region> lovel=53 hivel=77 sample=/usr/share/hydrogen/data/drumkits/The Black Pearl 1.0/SabianHatClosed-Med.wav <region> lovel=78 hivel=102 sample=/usr/share/hydrogen/data/drumkits/The Black Pearl 1.0/SabianHatClosed-Hard.wav <region> lovel=103 hivel=127 sample=/usr/share/hydrogen/data/drumkits/The Black Pearl 1.0/SabianHatClosed-Hardest.wav // 44 Sabian Hat Pedal <group> group=1 key=44 pan=-52 off_by=1 <region> lovel=0 hivel=26 sample=/usr/share/hydrogen/data/drumkits/The Black Pearl 1.0/SabianHatPedal-Softest.wav <region> lovel=27 hivel=52 sample=/usr/share/hydrogen/data/drumkits/The Black Pearl 1.0/SabianHatPedal-Soft.wav <region> lovel=53 hivel=77 sample=/usr/share/hydrogen/data/drumkits/The Black Pearl 1.0/SabianHatPedal-Med.wav <region> lovel=78 hivel=102 sample=/usr/share/hydrogen/data/drumkits/The Black Pearl 1.0/SabianHatPedal-Hard.wav <region> lovel=103 hivel=127 sample=/usr/share/hydrogen/data/drumkits/The Black Pearl 1.0/SabianHatPedal-Hardest.wav // 46 Sabian Hat Swish <group> group=1 key=46 pan=-52 off_by=1 <region> lovel=0 hivel=26 sample=/usr/share/hydrogen/data/drumkits/The Black Pearl 1.0/SabianHatSwish-Softest.wav <region> lovel=27 hivel=52 sample=/usr/share/hydrogen/data/drumkits/The Black Pearl 1.0/SabianHatSwish-Soft.wav <region> lovel=53 hivel=77 sample=/usr/share/hydrogen/data/drumkits/The Black Pearl 1.0/SabianHatSwish-Med.wav <region> lovel=78 hivel=102 sample=/usr/share/hydrogen/data/drumkits/The Black Pearl 1.0/SabianHatSwish-Hard.wav <region> lovel=103 hivel=127 sample=/usr/share/hydrogen/data/drumkits/The Black Pearl 1.0/SabianHatSwish-Hardest.wav // 56 Sabian Hat Semi-Open <group> group=1 key=56 pan=-52 off_by=1 <region> lovel=0 hivel=26 sample=/usr/share/hydrogen/data/drumkits/The Black Pearl 1.0/SabianHatSemiOpen-Softest.wav <region> lovel=27 hivel=52 sample=/usr/share/hydrogen/data/drumkits/The Black Pearl 1.0/SabianHatSemiOpen-Soft.wav <region> lovel=53 hivel=77 sample=/usr/share/hydrogen/data/drumkits/The Black Pearl 1.0/SabianHatSemiOpen-Med.wav <region> lovel=78 hivel=102 sample=/usr/share/hydrogen/data/drumkits/The Black Pearl 1.0/SabianHatSemiOpen-Hard.wav <region> lovel=103 hivel=127 sample=/usr/share/hydrogen/data/drumkits/The Black Pearl 1.0/SabianHatSemiOpen-Hardest.wav // 57 Sabian Hat Open <group> group=1 key=57 pan=-52 off_by=1 <region> lovel=0 hivel=26 sample=/usr/share/hydrogen/data/drumkits/The Black Pearl 1.0/SabianHatOpen-Softest.wav <region> lovel=27 hivel=52 sample=/usr/share/hydrogen/data/drumkits/The Black Pearl 1.0/SabianHatOpen-Soft.wav <region> lovel=53 hivel=77 sample=/usr/share/hydrogen/data/drumkits/The Black Pearl 1.0/SabianHatOpen-Med.wav <region> lovel=78 hivel=102 sample=/usr/share/hydrogen/data/drumkits/The Black Pearl 1.0/SabianHatOpen-Hard.wav <region> lovel=103 hivel=127 sample=/usr/share/hydrogen/data/drumkits/The Black Pearl 1.0/SabianHatOpen-Hardest.wav
さらに、前述のpitch_keycenterとlokey・hikeyというオペコードを併用し、次のようにシングルバスドラムをダブルバスドラムにすることも可能。応用すれば、一つしかないタムタムからハイタム、ミッドタム及びロータムを分けることも可能に。いずれも強引だけど。
// lokey・hikey(値はノート名又はノート番号)というオペコードでB1(35)からC2(36)の挙動を指定 // pitch_keycenterをC2(36)としているため、B1(35)のときは半音(100セント)下がる // 音の下がり幅に不満がある場合はpitch_keytrack(値はセント)というオペコードで調整する // 35-36 Pearl Kick <group> lokey=35 hikey=36 pitch_keycenter=36 pan=0 <region> lovel=0 hivel=26 sample=/usr/share/hydrogen/data/drumkits/The Black Pearl 1.0/PearlKick-Softest.wav <region> lovel=27 hivel=52 sample=/usr/share/hydrogen/data/drumkits/The Black Pearl 1.0/PearlKick-Soft.wav <region> lovel=53 hivel=77 sample=/usr/share/hydrogen/data/drumkits/The Black Pearl 1.0/PearlKick-Med.wav <region> lovel=78 hivel=102 sample=/usr/share/hydrogen/data/drumkits/The Black Pearl 1.0/PearlKick-Hard.wav <region> lovel=103 hivel=127 sample=/usr/share/hydrogen/data/drumkits/The Black Pearl 1.0/PearlKick-Hardest.wav
ただ、hydrogen-drumkitsには前述のとおりdrumkit.xmlが同梱されており、このサウンドフォントファイルはDrMrやHeliumといったLV2プラグインでも読み込めるので、上例のようにわざわざSFZ形式ファイルを作成する場面はまずない。あるとすれば、音声ファイル群から好みのドラムセットをどうしてもGMマッピングのSFZ形式で構築したいときとか、テキストファイルを編集するという比較的容易な方法で細かくカスタマイズしたいときとか。まあdrumkv1やFablaといったドラムサンプラーのFLOSSなLV2プラグインでも、独自形式ながら容易に編集できるのだけれど。
番外編:Linux DAWのドラム環境
AVL Drumkitsというドラムセット集を導入するのが容易な割に、フォーマットの選択肢が豊富。このドラムセット集は、Linux界隈でのデファクトスタンダード的なHydrogen形式に加え、SF2形式やSFZ形式の音声ファイル・サウンドフォントファイルで提供されている。また、x42-pluginsというFLOSSなLV2プラグイン集からロンプラーとしても提供されている。ただ、容易さだけで言えば、独自形式のみの対応だが、Debianの公式パッケージにあるDrumGizmo(FLOSSなJACKクライアント・LV2プラグイン)のほうが上。Qtractorでテストした組合せを容易な順に並べるとこんな感じ。
- DrumGizmoとDRSKit(独自形式)の組合せ
- FluidSynth-DSSI(SF2形式に対応したサウンドフォントシンセでFLOSSなDSSIプラグイン)とAVL DrumkitsのRed Zeppelin又はBlack Pearl(いずれもSF2形式)の組合せ
- x42-pluginsのRed Zeppelin又はBlack Pearl(いずれもSF2形式)
- DrMrとhydrogen-drumkitsのThe Black Pearl 1.0(Hydrogen形式)の組合せ
- FluidPlug(ロンプラーでFLOSSなLV2プラグイン)のRed Zeppelin又はBlack Pearl(いずれもSF2形式)
- SFZeroとAVL DrumkitsのRed Zeppelin又はBlack Pearl(いずれもSFZ形式)の組合せ
FluidSynth-DSSI、x42-pluginsのロンプラー、FluidPlugはいずれもFluidSynthのSF2・SF3ライブラリー(とlibsndfileというFLOSSな音声ライブラリー)に依存しているので、音作りに関する構造はさほど変わらない。FluidSynthはFLOSSの中でSF2形式・SF3形式におそらく最もしっかり対応しているので、開発者はこのライブラリーを組み込みたがるんだろうな。
SFZ形式ファイルの作成:実践編
インターネットで配布先からダウンロードした音声ファイル群からSFZ形式ファイルを作成してみる。例えば、次のようなバンブーシロフォンの音声ファイル群をダウンロードしたとする。
Bamboo11_Shinachiku-A1.wav Bamboo11_Shinachiku-A2.wav Bamboo11_Shinachiku-B1.wav Bamboo11_Shinachiku-B2.wav Bamboo11_Shinachiku-CS2.wav Bamboo11_Shinachiku-CS3.wav Bamboo11_Shinachiku-E1.wav Bamboo11_Shinachiku-E2.wav Bamboo11_Shinachiku-E3.wav Bamboo11_Shinachiku-FS1.wav Bamboo11_Shinachiku-FS2.wav Bamboo11_Shinachiku-FS3.wav
ファイル名の末尾をノート名としたとき、抜けている部分をpitch_keycenter、lokey及びhikeyで補完するようなSFZ形式ファイルを作成していく必要がある。なお、元の音声ファイルのピッチがズレている場合はtune(値はセント)というオペコードで調整できる。と言うか、ダウンロードしたときはまずAudacity等でピッチを解析しておくのがよろし。
<group> ampeg_release=0.500 <region> sample=Bamboo11_Shinachiku-E1.wav //lokeyが指定されていないため、自動的にlokey=c-1(最小値)と同じ挙動になる hikey=e1 pitch_keycenter=e1 <region> sample=Bamboo11_Shinachiku-FS1.wav lokey=f1 hikey=f#1 pitch_keycenter=f#1 <region> sample=Bamboo11_Shinachiku-A1.wav lokey=g1 hikey=a1 pitch_keycenter=a1 <region> sample=Bamboo11_Shinachiku-B1.wav lokey=a#1 hikey=b1 pitch_keycenter=b1 <region> sample=Bamboo11_Shinachiku-CS2.wav lokey=c2 hikey=d#2 pitch_keycenter=c#2 <region> sample=Bamboo11_Shinachiku-E2.wav lokey=e2 hikey=e2 pitch_keycenter=e2 <region> sample=Bamboo11_Shinachiku-FS2.wav lokey=f2 hikey=f#2 pitch_keycenter=f#2 <region> sample=Bamboo11_Shinachiku-A2.wav lokey=g2 hikey=a#2 pitch_keycenter=a2 <region> sample=Bamboo11_Shinachiku-B2.wav lokey=b2 hikey=b2 pitch_keycenter=b2 <region> sample=Bamboo11_Shinachiku-CS3.wav lokey=c3 hikey=c#3 pitch_keycenter=c#3 <region> sample=Bamboo11_Shinachiku-E3.wav lokey=d3 hikey=f3 pitch_keycenter=e3 <region> sample=Bamboo11_Shinachiku-FS3.wav //hikeyが指定されていないため、自動的にhikey=g9(最大値)と同じ挙動になる lokey=f#3 pitch_keycenter=f#3
このSFZ形式ファイルを音声ファイルと同じ場所に保存すれば完成。どうしてもゼロからテキストエディターで作成するのが面倒なら、FreePatsが提供しているFreePats-ToolsというFLOSSなPythonスクリプト集の手を借りることも可能。今度は、次のように左右で分かれているホーンセクションの音声ファイルをダウンロードした場合。
BrassStab011_BrassStab011-1_L.wav BrassStab011_BrassStab011-1_R.wav BrassStab011_BrassStab011-2_L.wav BrassStab011_BrassStab011-2_R.wav BrassStab011_BrassStab011-3_L.wav BrassStab011_BrassStab011-3_R.wav BrassStab011_BrassStab011-4_L.wav BrassStab011_BrassStab011-4_R.wav BrassStab011_BrassStab011-5_L.wav BrassStab011_BrassStab011-5_R.wav BrassStab011_BrassStab011-6_L.wav BrassStab011_BrassStab011-6_R.wav BrassStab011_BrassStab011-7_L.wav BrassStab011_BrassStab011-7_R.wav BrassStab011_BrassStab011-8_L.wav BrassStab011_BrassStab011-8_R.wav BrassStab011_BrassStab011-9_L.wav BrassStab011_BrassStab011-9_R.wav BrassStab011_BrassStab011-10_L.wav BrassStab011_BrassStab011-10_R.wav BrassStab011_BrassStab011-11_L.wav BrassStab011_BrassStab011-11_R.wav
positionというオペコードで左右を設定するだけ。-100から100の間の値を指定可能。加えて、width=100でステレオであることを明示。
<group> volume=6 width=100 ampeg_release=0.500 <region> sample=BrassStab011_BrassStab011-1_L.wav hikey=e2 pitch_keycenter=e2 position=-50 <region> sample=BrassStab011_BrassStab011-2_L.wav lokey=f2 hikey=a2 pitch_keycenter=g2 position=-50 <region> sample=BrassStab011_BrassStab011-3_L.wav lokey=a#2 hikey=d3 pitch_keycenter=c#3 position=-50 <region> sample=BrassStab011_BrassStab011-4_L.wav lokey=d#3 hikey=f3 pitch_keycenter=e3 position=-50 <region> sample=BrassStab011_BrassStab011-5_L.wav lokey=f#3 hikey=g#3 pitch_keycenter=g3 position=-50 <region> sample=BrassStab011_BrassStab011-6_L.wav lokey=a3 hikey=b3 pitch_keycenter=a#3 position=-50 <region> sample=BrassStab011_BrassStab011-7_L.wav lokey=c4 hikey=d4 pitch_keycenter=c#4 position=-50 <region> sample=BrassStab011_BrassStab011-8_L.wav lokey=d#4 hikey=f4 pitch_keycenter=e4 position=-50 <region> sample=BrassStab011_BrassStab011-9_L.wav lokey=f#4 hikey=g#4 pitch_keycenter=g4 position=-50 <region> sample=BrassStab011_BrassStab011-10_L.wav lokey=a4 hikey=c5 pitch_keycenter=a#4 position=-50 <region> sample=BrassStab011_BrassStab011-11_L.wav lokey=c#5 pitch_keycenter=c#5 position=-50 <region> sample=BrassStab011_BrassStab011-1_R.wav hikey=e2 pitch_keycenter=e2 position=50 <region> sample=BrassStab011_BrassStab011-2_R.wav lokey=f2 hikey=a2 pitch_keycenter=g2 position=50 <region> sample=BrassStab011_BrassStab011-3_R.wav lokey=a#2 hikey=d3 pitch_keycenter=c#3 position=50 <region> sample=BrassStab011_BrassStab011-4_R.wav lokey=d#3 hikey=f3 pitch_keycenter=e3 position=50 <region> sample=BrassStab011_BrassStab011-5_R.wav lokey=f#3 hikey=g#3 pitch_keycenter=g3 position=50 <region> sample=BrassStab011_BrassStab011-6_R.wav lokey=a3 hikey=b3 pitch_keycenter=a#3 position=50 <region> sample=BrassStab011_BrassStab011-7_R.wav lokey=c4 hikey=d4 pitch_keycenter=c#4 position=50 <region> sample=BrassStab011_BrassStab011-8_R.wav lokey=d#4 hikey=f4 pitch_keycenter=e4 position=50 <region> sample=BrassStab011_BrassStab011-9_R.wav lokey=f#4 hikey=g#4 pitch_keycenter=g4 position=50 <region> sample=BrassStab011_BrassStab011-10_R.wav lokey=a4 hikey=c5 pitch_keycenter=a#4 position=50 <region> sample=BrassStab011_BrassStab011-11_R.wav lokey=c#5 pitch_keycenter=c#5 position=50