基本的な Karplus-Strong アルゴリズムを実装しました。
ホワイト ノイズで満たされた Ringbuffer は、先頭からサンプルを出力し、最初の 2 つの要素の平均を最後に追加し、最初の要素を削除します。最後のステップまで繰り返します。
より良い結果とそれらを制御するために、アルゴリズムの拡張バージョンを実装しようとしました。
したがって、平均化フィルターの代わりに、ローパスフィルターのような周波数フィルターが必要です。
私の平均化フィルターには 2 つの入力と 1 つの出力があります: avg(a,b) = (a+b)/2
wikipedia ページのサンプル コードは、入力と同じ数の出力を提供します。
http://en.wikipedia.org/wiki/Low-pass_filter
http://cnx.org/content/m15490/latest/
H(z) = (1+(1/z))/2のような他の (数学的な) バージョンを見つけました。z
は複素数だと思います。
どちらのバージョンも 2 つの入力と 2 つの出力を備えています。
これから意味のある値を取得するにはどうすればよいですか?
それとも、アルゴリズムのより大きな部分を書き直す必要がありますか?
その場合、どこでそれについての適切な説明を見つけることができますか?