December 2, 2016
Not sure if this is the right section of the forum to post this, feel free to move it if it's not.
I'm attempting to create an FIR filter based on the Kaiser algorithm. The Kaiser algorithm, in a few words, takes 3 parameters, the attenuation frequency, the pass frequency, and the attenuation amount in dB. It then generates a list of coefficients (impulses) with which to build a filter.
I have implemented the Kaiser filter successfully in a standard C++ program. The program takes a sound file, filters it based on hardcoded (or prompted) parameters, and returns an output file. What I want to do now is find a way to implement this process in RackAFX.
Something I am wondering though, is that since the coefficient list is based on parameters which will (in plugin form) be changed in real time, will this be too computationally intensive or slow to recalculate the entire list every time a UI control changes?
This is the first plugin I have attempted to create that isn't wrote out step by step in the FX book, so i'm also a bit confused on where I should be placing my functions and variables in the framework.
Is there a way to translate the C++ program I have now into something that will work in RackAFX? I can upload that program if it's helpful.
Any help would be majorly appreciated. If i'm totally going about this the wrong way, please let me know! And if there's any other information I need to provide, I would be happy to.
Thank you for reading if you've made it this far!
Student at The Evergreen State College, Olympia, Washington
January 29, 2017
The easiest thing to do would be to modify the Convolver project from the FX book to work with your coefficients. There are already two built-in IR Coefficient arrays, statically declared to be (max) 1024 points on the CPlugIn base class object - this is all outlined in the book as well. You would only need a routine to load those arrays (one for the left, one for the right channel) with the newly calculated filter coefficients, and you need the total length for the convolution, or number of taps. Remember to compile in "Release Mode" in Visual Studio for fastest processing. I'm guessing your convolutions will not be longer than 1024 points, but if you need very long, very fast convolution, see the App Note here:
December 2, 2016
Thanks for the reply, Will. I tried, as you suggested, to use a modified version of the Convolver project to implement the Kaiser filter.
Unfortunately, I seem to have broke RackAFX. I compiled my project, went to load the plugin, and RackAFX crashed. Now, it won't even launch again. I see the splash screen for a split second, and it does not launched. I've tried restarting, to no avail. So I'm now reinstalling RackAFX.
I've spent quite a bit of time and frustration on implementing this, and am about ready to move on to the oscillators chapter. I may come back to this project if at some point I realize what I was doing wrong.
I'll attach a google drive link with the kaiser project, if you're interested.
Edit: Uh oh. Even after reinstalling RackAFX, it is still crashing after showing the splash screen for a split second. I cannot open RackAFX at all. Help?
January 29, 2017
You have a toxic DLL, most likely the Constructor. See the Forum post here:
Most Users Ever Online: 36
Currently Browsing this Page:
Guest Posters: 1
Newest Members:Matt, dspstudent, strings4v, TheSmile, semihyavuzz, alfredLue, danioc, midnightskate3, Alia5, Shamal Sundar
Moderators: W Pirkle: 208
Administrators: Tom: 67, JD Young: 80, Will Pirkle: 0, W Pirkle: 208