2024/12/30

FDN の結合

FDN の結合を読む (github.io)

2 つ以上のフィードバックディレイネットワーク (FDN) を結合する方法について調べました。今回は元となる小さいフィードバック行列を組み合わせて、より大きいフィードバック行列を構築するというアプローチをとっています。

FDN をフィードバック行列によって結合するときは、元となる小さいフィードバック行列の大きさはすべて等しくなければならないという制約があることがわかりました。また「0 を含む形」の結果も良くなかったので、このアプローチはリアルタイムでのドラムの合成には向いていない気がします。

画像は FDN の結合に使う係数を求める連立方程式です。 y と h_ij が変数、 I は単位行列、 n は元となるフィードバック行列の数です。

2024/12/28

MaybeCrash

Try MaybeCrash (github.io)
Source code (github.com)

MaybeCrash is a crash cymbal synthesizer using feedback delay network (FDN).

It sounds more like splash cymbal rather than a crash. Also, the gently struck sound is not good because the tuning is not quite right. To render the gently struck sound, set `Slicer -> nRegion` to 2 or more.

It is known that the sound of a crash cymbal can be approximated using von Karman equation (sound demo, paper). However, it is also known that the method is a bit too slow for real-time (another paper, mentioned in §1). There's also a method described by Dan Stowell, which is not based on physics but it runs on real-time and sounds good. The core insight of Dan Stowell's method is the tuning of input signal. It feeds low-passed white noise into a bunch of resonators. The magic is to change the cutoff of low-pass filter over time using an envelope. MaybeCrash is using a method similar to Dan Stowell's, however the difference is using FDN instead of resonators.

---

MaybeCrash を試す (github.io)
ソースコード (github.com)

MaybeCrash はフィードバックディレイネットワーク (FDN) を使ったクラッシュシンバルのシンセサイザです。

どちらかと言えばスプラッシュシンバルのような音が出ます。また、チューニングが足りていないので弱く叩いたときの音は苦手です。 `Slicer -> nRegion` を 2 以上にすると異なる強さで叩いた音を聞くことができます。

クラッシュシンバルの音は von Karman 方程式で近似できる (音のデモ, 論文) ことが知られています。しかし、リアルタイムで動かすことは難しい (論文, §1 で言及) ことも知られています。物理モデルではないですが、リアルタイムで動く手法としては Dan Stowell さんによるレゾネーターを使った方法があります。 Dan Stowell さんの手法の肝はレゾネーターに入力する信号のチューニングです。ローパスをかけたホワイトノイズなのですが、時間とともにローパスのカットオフを変えることで雰囲気を出しています。 MaybeCrash は Dan Stowell さんの手法と似たような仕組みですが、レゾネーターの代わりに FDN を使っている点が異なります。