I finally got around to creating a plug-in to test your code. I work on Mac in the Juce framework, so apart from BRP's observation I had to fix about 1000 compile errors. GCC barfed all over the code, in particular:
-
- references to base class member vars such as m_w, which had to be changed to this->m_w
- reference to base class enumerated constants such as passbandHint, which had to be changed to PoleFilter<poles, channels>::passbandHint
- lack of template parameters anywhere template class names are invoked
- __int64 DNE on mac, so I just replaced that typedef with long. this is probably incorrect.
- pole count in instantiations of chebychev filters somehow get doubled, so in Chebychev1 ctor and Chebychev2::SetupCommon I had to change
PoleFilter<poles, channels>::hintPassband;
to
PoleFilter<poles/2, channels>::hintPassband;
There was also this error in a number of places:
Code: Select all
DspFilter.h: In member function 'void Dsp::Biquad<channels>::Setup(const Dsp::CalcT*, const Dsp::CalcT*)':
DspFilter.h:988: error: there are no arguments to 'Reset' that depend on a template parameter, so a declaration of 'Reset' must be available
DspFilter.h:988: error: (if you use '-fpermissive', G++ will accept your code, but allowing the use of an undeclared name is deprecated)setting -fpermissive did work, but GCC seems to warn against that as a fix. I don't particularly want that flag to be set for my entire project, anyway, so maybe this can be fixed in the code?
I'm going to add some of the filter's functionality to the plug in and post the project later in the week, but please diff 0.8.1 with http://adamsomers.com/code/DspFilter_gcc.h and integrate the necessary GCC fixes. If you found some of my changes to be unnecessary, please advise as to how else to avoid these compilation errors.
EDIT: since you will be rewriting the interface, please just keep the GCC issues in mind. Perhaps you can compile using GCC on your system?
