2018/02/24

お手軽なFIRフィルタのレシピ


 
「お手軽なFIRフィルタのレシピ」を読む (github.io)

FIRのローパス、ハイパス、バンドパス、バンドリジェクトフィルタの作り方をまとめました。

元は WaveCymbal のバンドパスとして試したのですが、切れすぎて Karplus-Strong 間の干渉がほとんど無くなり面白くない音になることが分かりました。

2018/02/17

WaveCymbal

デモを見る (github.io)

WaveCymbal は Banded Waveguides を利用したシンセサイザです。シンバルというよりは空き缶のような音がでます。

仕組み


下図はWaveCymbal の大まかな信号の流れです。



まずインパルスをコムフィルタに通して衝突音を作ります。これが Input になります。

Input は 1D Wave へと入力されます。1D Wave では1次元の波のシミュレーションを行っています。

1D Wave の複数の地点からの出力を、それぞれバンドパスフィルタに通して並列に並べた Karplus-Strong へと送ります。Karplus-Strong からの出力はそれぞれ対応する 1D Wave の地点へとフィードバックされます。

並列に並べた Karplus-Strong からの出力を加算したものが Output になります。

問題点


1D Wave のシミュレーションが適当なので、システムのサンプリング周波数によってピッチが変わる問題があります。

2018/02/02

KSCymbal


デモを見る (github.io)

Karplus-Strongアルゴリズムを応用したシンバルの音を合成するシンセサイザです。

閉じたハイハットを叩くと上下のシンバルが複雑にぶつかりあいます。KSCymbalではこのぶつかる部分をシミュレーションに組み込みました。ただ、あくまでもKarplus-Strongなのでシンバルというよりギターの弦をたくさん並べてぶつけあっているというイメージの方が近いです。

デモのDistanceがシンバル間の距離を表しています。この値を小さくするとぶつかる回数が多くなります。

発振する場合はDistanceの値を上げるかSeedを変更してみてください。

Pluck


デモを見る (github.io)

Karplus-Strongアルゴリズムを用いたシンセサイザです。

Karplus-Strongアルゴリズムはギターなどの撥弦楽器のような音が出せます。デモページのCutoffの値を1にすると素朴なKarplus-Strongの音になります。

フィルタのかけ方はmrahtzさんの実装を参考にしました。