hi
i would have done it like you did, i don't know any better mehtod yet. maybe one little thing came up, when i tested [vcf~] with your patch. afaik, it makes more sense to use a pink noise instead of [noise~], which produces white noise. the difference is, that in pink noise the amount of energy is constant per octave (logarithmic), where in white noise it is constant per frequency bandwith (<-may not the correct expression, i mean linear: 100-200Hz has the same energy as 10100-10200Hz). afaik, the q-factor of [vcf~] refers to the logarithmic scale, as our ears do. this (at least partly) explains why you get such low q-values in the high regions to keep the level constant. i'm not quite sure, but i think, another reason could be, that filters tend to get an unlinear behaviour somehow, the closer the cutoff-freq gets to the nyquist-frequency. you will get different results, when you change the fs. this probably makes it difficult to calculate in detail the behaviour of [vcf~]. maybe someone else has a more 'academic' explanation for that behaviour. by the way: if anybody knows an external for producing pink noise, please let me know.
cheers roman
----- Original Message ----- From: julien.breval@tremplin-utc.net To: pd-list@iem.at
hello
(still talking about the |vcf~| filter)
as there doesn't seem to be any simple nor complex mathematical
relationnship
between Q, cutoff frequency and level factor (|*~|) for having a
constant output
level, I am now trying to find something empirical ...
I made a table that gives the level factor you need to keep the same
level when
you change Q the source is a |noise~| and the amplitude is measured by |env~|, and
'f' refers
to the required level factor, which was found empirically (and
quickly)
I attached the test patch
some values for vcf~_cutoff=50 Hz: Q=0 -- f=1 Q=1 -- f=15 Q=2 -- f=20 Q=3 -- f=24.5 Q=4 -- f=28 Q=10 -- f=42 Q=20 -- f=60 Q=40 -- f=86
some values for vcf~_cutoff=12800 Hz: Q=0 -- f=1 Q=1 -- f=0.75 (see the remark2 below) Q=2 -- f=0.8 (see the remark2 below) Q=4 -- f=1.35 Q=20 -- f=3.4 Q=40 -- f=5
remark1: for a constant Q, multiplying the cutov by 2 adds +3 to the
output
value of |env~| (resp. dividing, -3)
remark2: for Q=1 or Q=2 at 12800 Hz, the filter should normally not
increase the
volume of the signal like this ... maybe it's due to some software implementation contraints (?)
also, do you think the method I used for measuring is correct ?
any suggestion, idea, web link about this, etc will be appreciated a
lot ...
I will try to use a logarithmic-based compensation factor now
cheers, -j