My spectrum analyzer program is working pretty well, so I tested it on some of the built-in MSP filters. The results were educational.
With the svf~ object, the "cutoff" frequency is actually where the frequency response crosses 0dB when resonance is set to zero. When resonance is very high the peak is actually at a lower frequency than cutoff. For example, when set to 80Hz the actual peak was at 78Hz.
With the onepole~ object, the "cutoff" frequency is the -3dB point of the filter.
With the lores~ object, the "cutoff" frequency is the frequency where resonance will create a spike. It doesn’t represent any specific gain by itself.
I just figured the cutoff would be the -3dB point in all cases of zero resonance, but that didn’t turn out to be the case at all.
I would presume, that this finding is not about the programming of the filter objects itself, but about the general functionality of an analog domain filter as well as the representation of this in the digital domain in general.
When reading out the highpass outlet of a [svf~] object it’d be natural, that your peak frequency is at about 78 Hz when the cutoff is set to 80 hz. This behaviour is not an inaccuracy of Max, but natural for a non-linear EQ, which is also the standard behaviour of an analogue filter.
If you’d read out from the lowpass outlet instead you will probably (without having tested it) get the peak level at about 83 or 84Hz. Non-linear EQs always produce a first counter wave directly above or below the cutoff freq, besides the fact that they produce subsequent counter-waves further above/below the cutoff freq., too.
Test to confirm. I’m looking for the filter-educational link for you in the meantime.