On Feb 18, 2004, at 1:20 AM, Robert John Shepherd wrote:
In the equalizer.c and filter.c source for madplay, it seems to define no equalisation (flat) as MAD_F_ONE, but I couldn't find any documentation on what the upper and lower limits on this were, and whether this should be a linear scale.
Also in attenuate_filter what is the maximum scalefactor?
The lower limit is 0, reducing the signal to absolute silence. The upper limit depends on the signal being modified, but cannot be greater than MAD_F_MAX. The risk of course is you may amplify the signal beyond the range of full scale (causing clipping), or worse, beyond the range of representable values.
Usually it is best to calculate a scalefactor from the desired change in decibels. For example, to reduce the signal by 3 dB, calculate:
scalefactor = mad_f_tofixed(pow(10, -3.0 / 20));
Using the decibel scale, the effective range is limited from DB_MIN (-175) to DB_MAX (+18).