🦁

sfizz入門「以前」

7 min read

sfizz入門「以前」

最近sfizzのガイドブック的なものを書こうと思っていて書き溜めているのですが、他の章も完成したら第1章として出せればいい気がしてきたので、試しにいま公開しておきます。
ついでに第2章にするつもりのセットアップガイドも出しておきます(markdownヘッダの階層がアレな感じになるのでおまけ扱い)。

sfizzとは

sfizzはSFZサンプラーとして機能するオーディオプラグインのソフトウェアです。サンプラーとは、MIDIメッセージ等の入力をもとにオーディオ(PCM)サンプリングデータを加工して発音させる方式の音源ソフトウェアです。英単語からはサンプリングするための録音ソフトウェアであると推測するのが妥当そうですが、実際には合成して再生するだけのソフトウェアも含めてサンプラーと呼ばれています。

PCMサンプリングデータにはさまざまなフォーマットがありますが、サンプラーではMIDIメッセージ等で幅広い音階のノートオン・オフ、あるいは音量やエフェクトの設定などの命令を受け付けて処理するものであり、その目的に特化したフォーマットのデータが用いられます。その機能的な詳細は別途解説しますが、SFZはそのような機能要件に応えられるポテンシャルをもったサンプラー向けのフォーマットです。

オーディオプラグインとは、DAW(Digital Audio Workstation)などの音楽制作環境において、楽器あるいはエフェクターとして使われるソフトウェアの総称です。オーディオプラグインにはいくつかの規格が存在し、特定のDAW向けにそのDAWベンダーが開発している規格もあれば、複数のベンダーが開発・販売・公開しているDAWやオーディオプラグインの、任意の組み合わせで可能な限り整合的に動作できるようにする共通規格もあります。Steinberg社のVST、AppleのAudioUnit、Linuxで一般的に使われているLV2などがポピュラーです。

さまざまなサンプラーと、sfizzの位置付け

sfizzはさまざまなサンプラーソフトウェアの、あるいはその中でもオーディオプラグインとして動作するサンプラーソフトウェアのひとつにすぎません。本書は特にsfizzに特化した内容となっていますが、sfizzはどのような位置付けにあって、音楽制作のどのような場面で役に立つのかを把握しておきましょう。

オーディオトラックとインストゥルメントトラック

オーディオプラグインとしては、サンプラーはインストゥルメント(楽器)プラグインの一種です。典型的なDAWを利用した音楽制作では、ユーザーがアナログ楽器等を演奏して録音したサンプリングデータを扱うオーディオトラックと、MIDI入力などをもとに演奏するインストゥルメントトラック、あるいは単純にMIDIトラックがあります。多くのDAWでは他にもいくつかの種類のトラックがありますが、サンプラーを含む楽器プラグインはインストゥルメントトラックで使用します。(サンプリングデータをデータとして扱うサンプラーはサンプリングデータを扱うオーディオトラックではなくインストゥルメントトラックで使用する…??と文字で考えてしまうとややこしいですが、実際に混乱することはまあないでしょう。)

オーディオトラックで再生できるような、単一のサンプリングデータとは異なり、インストゥルメントトラックで使用するサンプラーが使用するサンプリングデータは、一般的には複数のサンプリングデータの中から、ノート命令で指定された音階に一番近いサンプルを使用できるように編成されています。

サンプラーとシンセサイザー

サンプラーは何かしらの手段で事前に用意したサンプリングデータをもとに、ノート番号や音量などのパラメーターを加工情報源として使用して「楽器を演奏した」状態に近い音声出力データを得るものです。これに対して、数式などから音声の波形データを生成して、それに対する合成処理をさまざまに加えて音声出力データを得られるものはシンセサイザーということができます。サンプラーはパラメーターをもとに音声を合成(シンセシス)しているので、論理的にはサンプラーはシンセサイザーであり、実際にはプラグイン規格によっては"Synth"として扱われますが、音源が何に由来しているのかをシンプルな二分法でカテゴライズするのもわかりやすいでしょう。オーディオプラグインの使い方としては、この2種類はわかりやすく違います。

実際には、シンセサイザーでサンプリングデータを扱わないわけではありません。シンセサイザーの音声ソースは、サイン波や三角波、矩形波などの波形が指定されるオシレーターですが、ここに波形指定の代わりに直接サンプリングデータを利用できるプラグインも多く存在します。ただし、典型的な実装としては、あくまで単一のファイルを指定するだけであり、サンプラーのデータフォーマットのように、ノートの範囲別にサンプリングデータ(ファイル)を指定できるわけではありません。

また、プラグインの状態(state)を保存するときも、サンプラーであれば単にファイル情報のみを記録する方式が多く、一方シンセサイザーの場合は指定された音源データをまるごとデータとして保存する可能性が高いでしょう。ファイル名だけ保存されていると、DAWで状態データを復元したときにファイルが(移動などで)消えていた場合に問題になります。(ファイル名だけ保存する方式が問題であるというわけではありません。楽曲ごとにサンプラーのデータが「全て」stateに保存されていたら、楽曲データが巨大化しすぎて問題になるでしょう。)

サンプラー市場におけるSFZサンプラーの位置付け

sfizzはSFZサンプラーです。このフレーズの意味するところを少し詳しく説明します。

サンプラーには、そのソフトウェアで使用されるプロプラエタリなフォーマットを使うものと、オープンなデータフォーマットを使用するものがあります。また、独自フォーマットであってもポピュラーなものはさまざまな楽器サンプラーデータの作成者が有償・無償でデータを公開しています。オープンなデータフォーマットではE-mu SystemsおよびCreative Labs(当時)が開発した「サウンドフォント」SF2などがポピュラーです。クローズドなフォーマットとしてはNative Instruments社のKontakt(NKI)も広く使われています。

サンプラーにさまざまなフォーマットが存在するのは、サンプラーソフトによって提供する機能が異なるためです。とはいえ、基本的なデータモデルはサンプラーの草分け的な存在であるサウンドフォント(SF2)が示しています。MIDIメッセージで入力を受け付けるので、128鍵のノートをオクターブ等のキー範囲でグループ化し、MIDIのようにコントロールチェンジのようなパラメーターを受け取り、それらに基づいてサンプルを選択し、エフェクトを適用する、という基本的な構造は、サンプラーの一般的な構造といえます。シンプルな機能だけで楽器を表現できるのであれば、SF2で十分であり、その場合は共通フォーマットでさまざまな音色を選択できることが強みになります。

SF2フォーマットが広く使われていたのは、MIDI音源としても機能するCreativeのサウンドブラスター製品(ハードウェア音源ボード)で使用されていた時代です。当時は16チャンネルのMIDI音源で音楽を打ち込むのがDTMのスタイルで、サウンドフォントはその後TimidityやFluidsynthといったソフトウェアMIDIシンセサイザーで使われるフォーマットになりました。演奏データがMIDIファイル(SMF)であれば、利用されるサウンドフォントもGM互換配列のものが好まれました。

その後、DAWが普及してオーディオプラグインがインストゥルメントとして使われる時代になると、MIDI時代の16トラックという制約に縛られることもなくなり、サンプラーもトラックごとに音源を別々に指定できるソロモードが普及してきました。ソロモードが前提になると、サウンドフォントの最大公約数的なパラメーターでは期待されていなかった豊富な表現力(音色特有のパラメーター)が期待できるようになり@<fn>{foot-pedal}、またMIDI 1.0の範囲で奏法を演奏時に簡単に切り替えられるようにキースイッチの概念が登場したりと、より機能豊富なフォーマットが求められるようになってきました。Kontaktはその市場を開拓し、新しいデファクトスタンダードのような地位を獲得しました。

//footnote[foot-pedal][たとえばMIDI 1.0にはフットペダルをあらわすコントローラーが規定されていますが、これはピアノのような鍵盤楽器固有のパラメーターであって他の楽器では本来意味がありません。ピアノはポピュラーなので標準コントローラーに入っていますが、他の楽器にもそういったパラメーターになりうる要素があるはずです。]

NKIはKontaktのプロプラエタリなフォーマットであり、Kontaktのライセンスユーザーでないと利用できません。Native Instruments社はKontaktをWindowsとMacOSにしか提供していないので、Linuxなど他のPC環境では利用できません。これに対して、SFZフォーマットはオープンな規格として策定されているので、誰でも使うことができるので、ダイバーシティの観点ではNKIより望ましいフォーマットです。もっとも、SFZ自体はあくまで最大公約数的な共通フォーマットであり、さまざまなベンダーがSFZの「機能」を実現する独自拡張を追加しているのですが、それについてはSFZフォーマットの章で改めて説明します。

SFZサンプラー市場におけるsfizzの位置付け

SFZはどちらかといえばNKIに近い多機能フォーマットです。そのフォーマットはオープンに規定されていて、さまざまなサンプラーがこれをサポートしています。本書で主な言及対象とするsfizzは、その中でも比較的新しい存在です。

SFZフォーマットをサポートするソフトウェアでもっともポピュラーなものはPlogue社のSforzandoでしょう。SforzandoはSFZデータの音声合成エンジンにGUI統合とエディターを加えて、典型的なオーディオプラグイン製品に匹敵するプラグインを制作できるツールであり、オーディオプラグインとして機能するプレイヤーも提供しています。その出力SFZにはSforzandoの独自拡張命令が多分に含まれており、他のSFZサンプラーでは期待通りの音が再生できないことも多いです。その意味ではKontaktに近い性格のサンプラー製品であるといえます。ただ、SFZの基本部分はオープンフォーマットなので、その範囲で作られた世界中のサンプラーデータが利用可能です。

Sforzandoは商用製品ですが、オープンソースで作られたSFZサンプラーもいくつか存在します。古くから存在していたものとしてはSFZeroがあります。オリジナルは2013年頃に音源処理のみを実装するものとして開発されていましたが、Mac用にJUCEアプリケーションとして作られたものがあり、LinuxデスクトップではオーディオプラグインホストCarlaでも利用されています。ZrythmなどCarlaをオーディオプラグインホストとして利用するDAWで、SFZファイルをインストゥルメントとして指定できるものは、SFZeroを使っていると推定されます。

SFZero本家は2013年以降ほとんど更新がなく、いくつかのフォークが最新版として存在しています。筆者の観測範囲ではSFZero-Xという派生プロジェクトが最先端でしょう。ただ、サポートされているSFZの機能としては、現在でもアクティブに開発されているsfizzには及ばないでしょう。

おまけ: インストールとセットアップ

このpostはsfizzのソースコードを探検してSFZサンプラーについての理解を深めるためのものですが、そのためにはまずsfizzに慣れ親しんでおく必要があるでしょう。本章ではsfizzの入手方法と使い方を紹介します。

sfizzの入手方法

sfizzは2021年4月16日にバージョン1.0を公開しました。その時点でWindows、Mac、各種Linuxデスクトップ向けのバイナリビルドがダウンロードページに公開されています。2021年7月時点では、 https://sfz.tools/sfizz/downloads から入手できます。

sfizzのダウンロードページ
Linux用ビルドはOpen(SUSE) Build Serviceでビルドされており、多くのディストリビューションで利用可能であるはずです。

ソースコードからビルドする

sfizzバージョン1.0はバイナリもリリースされたので、ソースコードからビルドする必要はありませんが、ソースアーカイブあるいはGitHubのリポジトリからビルドするのは難しくないでしょう。sfizzはC++で書かれており、CMakeでビルドできます。さまざまな依存サブモジュールがあるのでビルドを始める前に忘れずにチェックアウトします。およそ次のコマンドでビルドできるでしょう(Ubuntu 20.04でのみ確認しています)。

$ git clone https://github.com/sfztools/sfizz.git --recursive
$ cd sfizz
$ mkdir build
$ cd build
$ cmake ..
$ cmake --build .

ビルドしたオーディオプラグインをインストールするには、それぞれのOSのやり方でビルドしたアーティファクトをコピーする必要があります。

DAWからロードする

sfizzを使うにはオーディオプラグインのホストすなわちDAWを使うのが一番簡単でしょう。多くのオーディオプラグインプロジェクトでは単独実行可能ファイルも提供されていますが、sfizzの場合はsfizz_jackくらいしかなく、使いやすくありません(Linuxデスクトップですらjackdが期待通りに動作しないことが少なくありません)。

筆者は今回はUbuntuデスクトップでzrythm DAWからロードして動作させた状態で説明しますが、どのOSのどのDAWでオーディオプラグインをロードしても問題ありません。DAWでsfizzをVST(3)あるいはLV2のプラグインとしてロードして起動すると、初期画面は次のようになっています(バージョン1.0時点)。

sfizz on Zrythm
鍵盤の部分はSFZの合成をプレビューできるキーボードです。ほとんどのDAW上で同じことが可能でしょう。

"DefaultInstrument" となっている部分は、クリックするとファイル選択ダイアログを開くようになっています。sfizzの最新の開発版ではkeyswitchにも対応しており、一部のSforzando拡張命令にも対応しているので、Sforzando用に作られた音源でもおそらく期待通りの音が出るようになりました。(SforzandoはLinuxデスクトップで動作しないので筆者には確認できません。) 次の画像はUnreal Instruments METAL GTXという音源をロードした状態です。キースイッチがフル活用されている音源で、このスクリーンショットにもそれが反映されています。

UI METAL GTXのキースイッチが表示された状態