BarisAMP: Rust で書いた無料のギターアンプ、ペダル、NAM プラグイン
回路から計算する JCM800 トーンスタック、NeuralAmpModelerCore とサンプル単位で一致する NAM 推論、レイテンシーゼロのキャビネット畳み込み、学習する 12 バンドのノイズサプレッサー。

BarisAMP は、アンプ、ペダル、キャビネット、ニューラルアンプキャプチャをひとつにまとめたギターリグです。macOS と Windows でスタンドアロンアプリとして、または VST3、CLAP、(macOS では) Audio Unit プラグインとして動きます。無料で、barisamp.baltavista.com からダウンロードできます。
この記事では中身を見ていきます。回路からアンプモデルを計算する方法、NAM キャプチャの実行、レイテンシーゼロのキャビネット畳み込み、リグのノイズを学習するノイズサプレッサー、そして DAW 向けのパッケージングです。Rust で書かれており、プラグイン部分は nih-plug、UI は egui です。

シグナルチェーン
Denoise → Gate → Comp → Wah → Pitch → Swell → Drive → Amp / NAM
→ Cabinet → EQ → Mod → Delay → Reverb → Looper → Limiter
キャビネットまではモノラルです。オーディオインターフェースの全入力チャンネルを合算するので、ギターをどの入力に挿しても鳴ります。モジュレーション、ピンポンディレイ、リバーブで信号はステレオになります。モジュレーションはペダルのようにアンプの前に置くこともできます。
アンプモデル
内蔵アンプは JCM800 の構成に沿っています。三極管プリアンプ 2 段、パッシブのトーンスタック、パワーアンプです。三極管段はそれぞれ非対称のソフトクリッパーです。
fn triode(x: f32, bias: f32) -> f32 {
(x + bias).tanh() - bias.tanh()
}
bias は真空管のグリッドバイアスのように動作点をずらします。カーブがゼロに対して非対称なので偶数次倍音が生まれ、最後の - bias.tanh() で生じた DC を取り除きます。段と段の間には、実機のカップリングコンデンサの代わりに 30 Hz のハイパスと、高域を丸めるローパスがあります。
HIGH と LOW の入力も JCM800 と同じで、LOW は最初の三極管段を飛ばして固定の線形ゲインに置き換えます。よりクリーンで静かな音になります。
クリッピングは非線形なので、ナイキスト周波数より上の倍音を生み、それが折り返して (エイリアシング) 金属的なザラつきになります。そのためアンプとドライブペダルは 4 倍オーバーサンプリングで動き、上げ下げには 8 次バターワースフィルタを使います。
回路から計算するトーンスタック
多くのアンプシミュレーターは BASS、MIDDLE、TREBLE を独立した 3 つの EQ バンドとして扱います。実機は違います。Fender、Marshall、Vox のパッシブ「FMV」トーンスタックでは 3 つのポットが互いに影響し合い、全部を 12 時にしても中域にへこみができます。
BarisAMP は D. Yeh と J. O. Smith の論文「Discretization of the '59 Fender Bassman Tone Stack」と同じ方法でこの回路をモデル化しています。回路の 3 次のアナログ伝達関数を部品の値とポットの位置から直接計算し、双一次変換でデジタルに変換します。値は JCM800 のもので、220k のトレブル、1M のベース、22k のミドルポット、33k の抵抗、470 pF と 22 nF が 2 つです。
パッシブのトーンスタックは信号レベルを大きく下げ、実機では次の段がそれを取り戻します。ここでも、全ポット 12 時での 1 kHz の損失を測って補っています。
Neural Amp Modeler
AMP を NAM に切り替えると Neural Amp Modeler のキャプチャを読み込めます。実機アンプの入出力の録音で学習したニューラルネットワークで、コミュニティで何千もの .nam ファイルが共有されています。
推論コードは NeuralAmpModelerCore (MIT) から Rust に移植しました。WaveNet (standard、lite、feather、nano)、LSTM、A2 コンテナ形式に対応しています。テストでは、同じ入力に対する出力が NeuralAmpModelerCore とサンプル単位で一致することを確認しています。
- 音量。 ファイルに
loudnessメタデータがあれば -18 dB に正規化します。なければ NAM トレーナーの標準入力信号をモデルに通して測ります。 - サンプルレート。 モデルが 48 kHz で学習され DAW が 44.1 kHz なら、モデルのレートにリサンプルして戻します。
- 速度。 Apple Silicon では WaveNet の拡張畳み込みを 4 出力 × 16 フレームのタイルで計算し、和を NEON レジスタに保持して、コアの FMA ピークに近い速度を出しています。これで WaveNet は約 2.3 倍速くなりました。Apple M4 では標準的な WaveNet が 1 コアの約 2 %、内蔵アンプは 1 % 未満です。
10 種類のドライブペダル
| ペダル | モチーフ | キャラクター |
|---|---|---|
| Screamer | Ibanez TS808 | 中域だけをオペアンプの帰還でソフトクリップ |
| Transparent | Klon Centaur | クリーン信号とゲルマニウムでクリップした信号のブレンド |
| Blues | Boss BD-2 | ディスクリート 2 段、非対称ソフトクリップ |
| Rodent | ProCo RAT | ゲインとともに帯域が狭まるオペアンプ、グラウンドへのハードクリップ |
| Dist One | Boss DS-1 | トランジスタブースト、シリコンのハードクリップ |
| Fuzz | Big Muff | 2 段のクリッピング |
| Yellow 250 | DOD 250 | 約 720 Hz 以上でゲインが上がる 741 |
| Fuzz Face | Dallas Arbiter | 帰還付きゲルマニウムペア、丸く偏ったクリップ |
| Treble Booster | Rangemaster | 中高域を持ち上げるゲルマニウムトランジスタ 1 石 |
| Clean Boost | MXR Micro Amp | 0 から +20 dB のフラットなゲイン |
DRIVE が半分のとき、どのペダルもほぼユニティゲインになるよう出力が調整されています。
レイテンシーゼロのキャビネット
キャビネットはインパルスレスポンス (IR) の畳み込みです。21 個の IR を内蔵し、自分の WAV ファイルも読み込めます。IR の最初の 64 タップは直接 FIR で計算するので出力は待ちません。残りは 64 サンプルのパーティションに分けて overlap-save の FFT 畳み込みで処理します。各パーティションはすでに揃った入力ブロックだけを使うので、こちらもレイテンシーを加えません。
学習するノイズサプレッサー
普通のノイズゲートは弾いている間は開き、ヒスノイズをすべて通します。DENOISE は信号を 150 Hz から 10 kHz の 12 バンドに分けます。分割にはレイテンシーゼロの Linkwitz-Riley フィルタを使い、合算すると振幅特性がフラットになります。LEARN を押すと、弦が鳴っていない 2 秒間に各バンドのノイズレベルを測ります。演奏中は、各バンドが学習したノイズレベルに近づくと 3:1 で緩やかに下げられます。音を伸ばしている間も、その音が届かない高域のヒスは抑えられたままです。
そのほか
ペダル、オート、LFO のワウ、オクターブ、Octavia、ハーモナイザー、ワーミー、ボリュームスウェル、コーラス、フランジャー、フェイザー、トレモロ、Uni-Vibe、ロータリースピーカー、アナログ、テープ、デジタル、ピンポン、マルチヘッド、リバースのディレイ (タップテンポと DAW テンポ同期)、room、hall、plate、spring、shimmer のリバーブ (フリーズ付き)。さらにクロマチックチューナー、オーバーダブ付き 60 秒ルーパー、スペクトラム表示付き 8 バンド EQ、コンプレッサー、リミッターもあります。
オーディオスレッドではメモリを確保しません。IR や NAM モデルは別スレッドで読み込み、出来上がったものを差し替えるだけなので、演奏中にモデルを読み込んでも音は途切れません。
VST3、CLAP、Audio Unit
プラグイン本体は nih-plug がビルドする CLAP です。nih-plug の VST3 バインディングは GPLv3 なので使わず、clap-wrapper と Steinberg の VST3 SDK、Apple の AudioUnitSDK で CLAP を VST3 と AUv2 に包んでいます。保存済みプロジェクトで DAW がプラグインを見つけられるよう、識別子はバージョン間で変えていません。リリースは auval -strict と Steinberg のバリデータで検証しています。
macOS 版は Apple Silicon (macOS 11 以降)、Windows 版は 64 ビットの Windows 10 と 11 向けです。
試してみる
BarisAMP は barisamp.baltavista.com からダウンロードできます。NAM キャプチャを読み込んで、好きなキャビネット IR を後ろに置くのが手始めにおすすめです。