我实现了一个基本的Karplus-Strong算法。
充满白噪声的铃缓冲器从前面输出一个采样,并将前两个元素的平均值添加到末尾并删除第一个元素。重复上一步到步骤。用低通滤波器扩展Karplus-Strong
为了获得更好的结果并对它们进行控制,我尝试实现该算法的扩展版本。
因此,我不需要平均滤波器,而需要像低通滤波器那样的频率滤波器。
我的平均滤波器有两个输入和一个输出:avg(a,b)=(a + b)/ 2
维基百科页面上的示例代码给出了与输入一样多的输出。
http://en.wikipedia.org/wiki/Low-pass_filter
我发现其他(数学)版本,如:
http://cnx.org/content/m15490/latest/
H(Z)=(1+(1/Z))/ 2
我想z是复数。
两个版本都有两个输入,但也有两个输出。
如何从中获得一个有意义的值?
还是我必须重写算法的更大的部分?
如果是这种情况,我可以找到一个很好的解释吗?
感谢您的回复。 我不知道我已经在使用低通滤波器。 然后我需要一个更高级的参数。 感谢提示,以计算系数和顺序。 我会在将来使用它。 但目前的问题是执行这样一个过滤器。 – 2009-12-12 21:13:52
这个实现非常简单:y = c0 * x [0] + c1 * x [1] ...为c设置好值是最难的部分。 – 2009-12-12 22:31:42
是的,这很简单。也解释了为什么平均值是低通滤波器。 (a + b)/ 2 => 0.5 * a + 0.5 * b。问题回答并被接受。我想高和乐队低音是相当简单的?如果是的话,你也可以写这些算法? – 2009-12-12 23:00:19