2022/05/25

BasicLimiterAutoMake

ダウンロードとマニュアル (github.io)
ソースコード (github.com)

BasicLimiter に自動メイクアップゲイン、サイドチェイン、左右とミッド・サイドの切り替えをつけた BasicLimiterAutoGain を公開しました。マニュアルは BasicLimiter と共有しています。

自動メイクアップゲインを実装するコツは、しきい値をスムーシングすることのようです。ただし、今回の実装はやや不安定でオーバーシュートすることがあります。

REAPER はサイドチェインを設定すると、すべての入力のチャネル数が、すべての入力のチャネル数の総和と等しくなる、という変わった仕様になっていました。例えば 2 つのステレオ入力があると 2 * 2 = 4 チャネルを持つ 2 つの入力が VST 3 プラグインから見えるようになります。以下は BasicLimiterAutoMake のサイドチェインを使うときに設定した REAPER のルーティング・マトリックスの画像です。

2022/05/16

BasicLimiter と FDN64Reverb を公開

ダウンロードとマニュアル (github.io)
ソースコード (github.com)

BasicLimiter と FDN64Reverb を公開しました。

SIMD 関連の問題で macOS 向けのユニバーサルバイナリのビルドができていません。開発用の M1 mac が必要ですが、今のところお財布が厳しいので、近々 PayPal のアカウントでも作ってお布施を募る予定です。

2022/05/13

Feedback Delay Network の実装

Feedback Delay Network の実装を読む (github.io) 

Feedback delay network (FDN) が発散しないフィードバック行列について調べました。配布準備がまだですが VST 3 プラグインの FDN64Reverb として実装もしました。画像は FDN のブロック線図です。

リバーブであれば、浮動小数点数が使えるならランダムな直交行列、整数演算ならアダマール行列conference 行列がよさそうです。巡回行列を作る方法は細長い管を通したような音がでます。フィードバック行列にこだわるよりも、ディレイ時間などの変調をうまくかけたほうが簡単に雰囲気がでます。

FDN は素朴な実装だと行列の乗算で N^2 の計算量がかかるのでかなり重たいです。行列の種類によっては FDN ではない形に実装を特殊化するほうがよさそうです。行列の乗算をより高速に計算できるアルゴリズムもあるようですが、 Eigen の開発者による 10 年前のコメントによると 2000*2000 ほどの大きさを超えないと高速化は期待できないそうです。オーディオレートに追いつけるのであれば GPU で計算という手もあるかもしれません。

2022/05/08

リミッタの改善

リミッタの実装を大幅に改善しました。移動平均フィルタの修正、トゥルーピークモードの設計と評価、リリースの計算あたりが大きな変更です。まだマニュアルを書いていないのでリリースはしていませんが、プラグインのリポジトリに BasicLimiter という名前で実装を追加しています。 

BasicLimiter は名前の通りベーシックなので特に目新しい音は出ませんが、オープンソースであることと、トゥルーピークモードがやや贅沢に作ってあることが特長です。トゥルーピークモードについてはオーバーサンプリングが 8 倍で、アップサンプラとダウンサンプラの FIR フィルタ係数の長さがどちらも 512 です。ナイキスト周波数付近の成分はトゥルーピークの検出が困難なので、オーバーサンプリングの前にプリフィルタをかけて落とすようにしています。

上の画像のようにデフォルトで Threshold が -0.1 dB になっているのは、 sinc 補間で得られる理論上のトゥルーピークを完全に制限することはできないからです。 BasicLimiter の性能を簡単に調べたところ +8.8 dB のトゥルーピークを +0.05 dB まで制限することができていました。 -0.1 という数字はこの 0.05 を 2 倍しただけのざっくりした値です。

ついでにすべてのプラグインでカスタムフォントを使うようにしたことで見た目がだいぶましになりました。

2022/05/07

3 次補間の比較

 3 次補間の比較を読む (github.io)

いろいろな 3 次補間の周波数特性を比較しました。線形補間もついでに特性を出しています。

音の補間では 3 次のラグランジュ補間がよさそうです。 PCHIP などの入力によって傾きの計算を変える方法は音の補間には不向きのようです。

画像は 3 次ラグランジュ補間の周波数特性です。