[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[sc-users] Re: Resonz x Ringz (gain issues)



Howdy, if it's unclear why and how Ringz has more gain than Resonz, can someone please help me out checking the source code? Sorry, I don't even know how to do that.

I'd like to add that I think that a "60 db decay time" makes sense if it is related to a gain factor, but not much about the bandwidth. So this relationship between Resonz and Ringz, where it says one takes decay time instead of "Q" seems really weird to me.

cheers

2014-12-18 16:52 GMT-02:00 Alexandre Torres Porres <porres@xxxxxxxxx>:
By the way, it'd be great if anyone could show the filter equation for Resonz.

It says it's based on K. Steiglitz, "A Note on Constant-Gain Digital Resonators", Computer Music Journal, vol 18, no. 4, pp. 8-10, Winter 1994. But that doesn't really reveal its exact formula.

I read the paper, and it seems it's pretty much the same filter as the [reson~] object for Pd and Max.

Cheers



2014-12-18 16:32 GMT-02:00 Alexandre Torres Porres <porres@xxxxxxxxx>:
Hello there. I'm trying to figure out Ringz, which seems hard. Since it is supposed to be equivalent to Resonz, a nice way would be to get them both to sound exactly the same. I'm on my way there, but Ringz is sounding way louder and I needed help. I hope there's a formula to convert the gain of the filter from one object to the other, can anyone help me? 

So, Resonz ia a 2 pole/zero ressonant filter Based that "freq" & "rq". Ringz takes "dt" (60 dB Ring Delay Time) instead of "rq". I found a conversion formula between "dt" and "rq" according to this thread http://new-supercollider-mailing-lists-forums-use-these.2681727.n2.nabble.com/quot-How-to-emulate-Resonz-with-BBandPass-quot-and-quot-Resonz-X-Ringz-quot-td3635190.html

By the way, it's quite unclear where these formulas come from, any ideas? I'd really like to know that. Anyway, here's how I present the formulas...

// dt as function of "freq" & "rq"

~sr = s.sampleRate;
~freq = 500;
~rq = 0.1

~dt = log(0.001) / (~sr * log(1 - (pi/~sr * ~freq * ~rq)))

//rq as function of freq and dt

~sr * (1 - exp(log(0.001) / (~dt * ~sr))) / (pi * ~freq)

///////////////////////////////////////////////////////////////////////////////////////

The conversion formulas work indeed... and I've tried them to see if they sounded right. You can compare it too. Check it out.

{Resonz.ar(WhiteNoise.ar, 440!2, ~rq)}.play
{Ringz.ar(WhiteNoise.ar, 440!2, ~dt)}.play

About the bandwith of the filter, it does sound equivalent alright. But as you can hear it, Ringz is much louder than Resonz.

By the way, by comparing Resonz * Klank, they both sound about equally loud.

{Ringz.ar(WhiteNoise.ar, 440!2, ~dt)}.play;
{Klank.ar(`[[440], nil, [~dt]], WhiteNoise.ar)!2}.play

So, bottom question, why is it louder? And, more importantly, is there a formula to convert the gain of the filter from one object to the other? 

Thanks