Convolution with audio system toolbox

12 ビュー (過去 30 日間)
Peter Rowland-Jones
Peter Rowland-Jones 2017 年 8 月 19 日
コメント済み: Tom111 2020 年 7 月 17 日
Hi all, i'm trying to use the audio system toolbox to turn one of my scripts into a VST. The plugin needs to take an impulse response in the form of an array and convolve it with the given input samples. When I implement this with conv(a,b) I get an output frame size larger than the input frame size (2). Do I need to implement a circular buffer to fix this, if so how could this be done?
  1 件のコメント
Peter Rowland-Jones
Peter Rowland-Jones 2017 年 8 月 19 日
Just found the Fast Convolution example on the AudioSystemstToolbox page!! :)

サインインしてコメントする。

回答 (3 件)

Gabriele Bunkheila
Gabriele Bunkheila 2017 年 11 月 1 日
Hello,
I thought I'd capture a quick update on this topic as R2017b has already been out there for a few weeks. With the latest release, DSP System Toolbox now includes a new dsp.FrequencyDomainFIRFilter System object, which audiopluginexample.FastConvolver is now using under the hood. If you need fast convolution using partitioned frequency-domain filtering you can now use dsp.FrequencyDomainFIRFilter directly.
The new object includes both overlap-add and overlap-save methods, it has a property to report algorithmic latency as a function of the partition length used, and it comes with a block equivalent to use with Simulink.
Give it a try if you get a chance and let us know what you think!
Thanks,
Gabriele.
  3 件のコメント
ridgerider
ridgerider 2018 年 11 月 20 日
Thanks, Gabriele!
The only problem is that I have a lot of channels and a lot of IRs and would like to safe unnecessary mulitple FFTs of the same input signal block, if convolved with several filters... That's what would happen when subsequently filtering with multiple instances of dsp.FrequencyDomainFIRFilter, right?

サインインしてコメントする。


Gabriele Bunkheila
Gabriele Bunkheila 2018 年 11 月 21 日
Hi ridgerider,
You are right indeed - currently I see no plug-and-play solution to share the FFT of the input signal across many instances of dsp.FrequencyDomainFIRFilter. Yours is good feedback and we'll take into account for enhancements in future releases.
For the time being, I suggest:
  • Using multiple separate instances of dsp.FrequencyDomainFIRFIilter first and quantify how big of a performance problem you really have. Beyond the built-in tools like tic, toc , timeit, or and the MATLAB Profiler, I also suggest taking a look at the approach used in the example Measure Performance of Streaming Real-Time Audio Algorithms
  • If needed, take a look inside dsp.FrequencyDomainFIRFilter to inspire yourself for an improved version. All the code should be open and visible, so hopefully it shouldn't take long if you only need one specific operating mode
Thanks,
Gabriele.
  1 件のコメント
Tom111
Tom111 2020 年 7 月 17 日
Gabriele you say it's possible to use a cell array with one object instance of dsp.FrequencyDomainFIRFilter per cell, when I try to do this the plugin compiles but doesn't run, giving the error (in audioTestBench) 'Conversion to cell from dsp.FrequencyDomainFIRFilter is not possible'. Any ideas? Where should I initialise the cell array, in the properties? (as would have been for pFIR in the Fast Convolver example)?
Many thanks

サインインしてコメントする。


SHIFFA MEMON
SHIFFA MEMON 2020 年 1 月 29 日
anyone please help me . I have two audio file so how can i convolution my audio signals?
  2 件のコメント
SHIFFA MEMON
SHIFFA MEMON 2020 年 1 月 30 日
can you guide me? how can I get fft of my convolution output?

サインインしてコメントする。

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by