Hi will. I am using RackAFX to create my new plug in for my university degree work. I use your book to implement a FIR filter with a convolution but the problem is I need more length for the arrays. And the limit in this method is like 1500. I need minimum 44100/3 and max 2*44100. The only thing that I want to do is implement this big convolution with to array that I define like dynamic memory. I don't know if you know a different form to implement this. I also read the appnote that you have about fast convolution. I have to questions about it. First if the method that you use in this case is similar of the FIR implementation of your book. And second I try to run the DemoFFTconvelver. But when I try to load it, RackAFX shows a message that saids: convolver.dll no found. Where I have to download this dll File. Finally is important to tell you that the two array that I want to make convolution are dynamics and with other methods I generate the samples of each. Thanks for your time will
The RackAFX convolver is limited to 1024 points. And the convolution is straight linear convolution (inefficient).
However, you can do insanely long convolutions with the HiFiLoFiConolver object. One of my grad students used it for long reverb convolution as well as convolving with guitar amp cabinet IRs. He wrote a short App Note that is somewhat mis-title - it doesn't require FFTW, but if you have it installed and you have modified your Visual Studio project to link with it, you can enable it for faster processing. My grad student was getting good results both with and without it. It looks like you found this already. I will do some checking with that DLL that is says is missing and get back to you some time late next week (I am in the middle of traveling). That DLL is not the FFTW DLL, which has a different name.
The HiFiLoFiConvolver object performs a variation of Gardener's Fast Convolution, and it is not linear convolution.
In the Fall I'll be launching a new version of RackAFX and a new plugin framework called ASPiK. With that are more than 55 built-in C++ objects for you to use in your plugins and that includes a new FastConvolver object I coded from scratch using the FFTW package. I can't release anything in the near future, but these changes will start happening around October or so.
Hi will. I found the problem of the convolver.dll. It was that I was building the code with x64. And the dll was not on the plugin folder. I test the program of your students and it works very good. I only have one problem. The two stage FFT have a function name "fftconv.init", this function receives the convolution head block size, tail block size , the IR array and the convolution length. This method is in prepare for play function and initialize when we put play for the song. In the process audio frame is the function name "fftconv.process" and this receives the input buffer, output buffer, and length. My problem is that in my program I change the values of my IR vector all the time it changes by a function that calculate values every moment. But when I try to initialize fftconv in process audio frame it freeze my computer and RackAFX automatically close, I also try with the reset function and the initialize, and gives me the same problem. I don't know if you have an idea of how to refresh the values of IR array and then calculate the convolution. Thanks for your time Will.
I am also interested in using very long IR for fast convolution. I think that somewhere it will not be possible any more to do enough calculations in the loop. If there are calculations - for example changing the IR itself - that take too much time, I put them out in a separate thread so that the audio engine is not disturbed.
Writing a fast convolution is tricky. 1024 is too short, I would also like to have the length of at least few seconds.
Good necro thread, thanks Marc. I haven't heard of this before, hopefully it outperforms the venerable PFFT convolver. *^‿^/
Yep convolution size is no problem for these magical O(N log N) machines. You just can't update the IR's each audio frame as noted. Usually you'd just need to do that once at init and SR reset.
Most Users Ever Online: 152
Currently Online: davidfernxndez
Currently Browsing this Page:
Guest Posters: 1
Newest Members:Cameron C., Kaih, davidfernxndez, J.Miguel, 3ddie, Mike, salik, Franklin, TAldhous, Johan
Moderators: W Pirkle: 659