Improved: Parametric filter calculations (command "Filter") are now fully using double precision. This yields a great improvement in signal-to-noise ratio for practically no performance penalty.

Fixed: The method BiQuad::gainAt was returning wrong values. As this method was only used for testing purposes, this change is not user-visible.
This commit is contained in:
jthedering committed 2015-08-17 20:05:25 +00:00
1 parent 7ae9879f55
commit d68b958bc8
7 files changed
+157 -116

No files matched your search

+9 -1
View File
@@ -26,18 +26,26 @@
class BiQuadFilter : public IFilter
{
public:
BiQuadFilter(BiQuad::Type type, double dbGain, double freq, double bandwidthOrQOrS, bool isBandwidth);
BiQuadFilter(BiQuad::Type type, double dbGain, double freq, double bandwidthOrQOrS, bool isBandwidth, bool isCornerFreq);
virtual ~BiQuadFilter();
virtual bool getInPlace() {return true;}
virtual std::vector<std::wstring> initialize(float sampleRate, unsigned maxFrameCount, std::vector<std::wstring> channelNames);
virtual void process(float** output, float** input, unsigned frameCount);
BiQuad::Type getType() const;
double getDbGain() const;
double getFreq() const;
double getBandwidthOrQOrS() const;
bool getIsBandwidth() const;
bool getIsCornerFreq() const;
private:
BiQuad::Type type;
double dbGain;
double freq;
double bandwidthOrQOrS;
bool isBandwidth;
bool isCornerFreq;
size_t channelCount;
BiQuad* biquads;