Just a simple question… Does anybody knows which are the
objects as the Pure Data’s rpole~ and rzero~ in max/MSP??
Thank u very much!
I’m having fun working through Andy Farnell’s "Designing Sound" book and have run into this as well. Farnell writes about using rzero~ for "differentiation" – the opposite of integrating a signal. I’ve gotten similar results using a hipass filter at 0.999 Hz. Is there a more exact equivalent for rzero~?
The pd help file says this about rzero~:
"rzero~ real one-zero (non-recursive) filter, raw
Rzero~ filters an audio signal (left inlet) via a one-zero real filter, whose coefficient is controlled by a creation argument or by an audio signal (right inlet).
The action of rzero~ is: y[n] = x[n] – a[n] * x[n-1]
where y[n] is the output, x[n] the input, and a[n] the filter coefficient. The filter is always stable.
The transfer function is H(Z) = 1 – aZ^-1."
Here’s an rzero~ abstraction based on the filter equation given in the PD help patch. Seems to work fine. rpole~ can’t be built as an abstraction since it’s a recursive filter. I tried wrapping it in a poly~ set to vs 1, but it didn’t work properly.
----------begin_max5_patcher---------- 620.3ocyW0sbhBCE9Z7oHC6MZGoCITPYmYuXeN55rSDhsoCj3.gsX6Te1WxO XwsXWTDs2Dlbxwy478c9IwWGYYujWRxsAeGbOvx50QVVJQRAVl8V1o3xnDbt RM6HdZJgIrmpOSPJEJ4kiYSpERiUh3KexA5UKbEmIX3Th5nelQwI0mvJRorD hP4.nQ35LRdkevBJm86LRjPGjvP2acmBBmIWcMKfEM7QN8EkOfnpS24.dgn1 C0RWiEQORYOzz5t9JqqL7cRC.PJ6K+EuMZjbYZ+IJGXqTE57RUHjBLv4tCBW su4GHxBefpJ2yMUo.A5tAkpLl2yePnpMsSUyOQlp2sRgJX5EnwLrWXVEd0gq 1+hMqIZOYauKQ0rDA1J7ZGGvCiCOWE.loSZ6V24x5zgN0PVshFQq1CFmSefg SlXeFSwYDbBfyHNuPx3fwLNyoJPKxxo+gLArhlHHYSAY3m+EaINmDWoKXcLH Sp9VPEqHQkwnITFIhWnibuOxegWo5FCeCCzSW70SWlehENLxyUf4CD4MaAeC dv5Iclq0ppYGIqfNFV4SpBMzQ8Djvd0Mc.RwY6ovHAWKFQWYXJW7P25ODyTu ms.7CPo7iC.K+bibmCbQKiZ8uRsLn45dE2lsLm6piXRBdyVvI003cc6ZLOQw OnW7h1ksj1QeZxs6WXZJn0WX9etow9BcI544NTCzBOVjoTPcS0+7WTT9PJee 3lyKxhpAT8i..u6mXRtfxTO9qgRUyzAvc57HMNlvZByTZ7ZNkILwvAJd5ZHE zgHBsmNCcD0ENJ3hFQdcLqc4hnYcjifeoxZd8fip171n+lFB3JA -----------end_max5_patcher-----------
rpole~ can be build as an abstraction, as its a special case of a biquad~ ( which is rzero~as well btw):
----------begin_max5_patcher---------- 335.3ocwS0sSCCBE9Z5SAAusaAV0loOHdiYwPK3Fl1CyUZr5x7Y2xO0UM3rI KYlz.gud378Cv9DDoP2IaH36vOfQn8IHjCxBfBqQjZdWYEuwUFQ2ZpjFRp+W a4lxMJX8i6jkFeaX4z4zT7haBSCi3Ug8nD9FU77r7g9.s0JnuuNNXGA8r4Po AzRccsDbjQHVnCII1gzIZ.GOmR+2tvJYVd1uneulLusU52.gDyZWG0ZznVic orl+n4bsV1+f0.4q8TOPrQ14aUg5kVt3C7ULLct8aFyNMT2SZvznd24FFaN8 uu0RW5RnkgUmJaZTqAdUzDhMV..u1sEx8xcBNvild4wSuQIkiGRkB946Umar 3eO9Zzs6JGzZ3FI9ncDxFiB3FkFFUSuvwrupYiRHjv3C2ZkXqVAlfDvqhdTN UEkMQEQuXJhMAEkeFJpewgjOAXH07LK -----------end_max5_patcher-----------
Very helpful! biquad~ is the way to go. It’s been a good exercise for me to build these filters from the ground up (with delay~, +~, etc.). Now it makes perfect sense to me how zeroing a1, a2 and b2 causes biquad~ to function as a single pole filter. Thanks!