How do I reach audioTestBench -> audioFileR​eader.Samp​lesPerFram​e for use in my plugin?

5 views (last 30 days)
I'm creating a Real-Time frame-based plugin with the System Audio Toolbox, to run through the audioTestBench. In the audioTestBench the input is set to "Audio File Reader" or "Audio Device Reader" depending on my current setup. This allows me to specify the desired number of samples per frame, a number that is relevant for the frame-based plugin code, however I'm unable to read the samples per frame into the plugin code?
Using the function "getSamplesPerFrame(audioPluginSource)" always returns the default value 256, since I'm not using "setSamplesPerFrame" to define the frame size.
So my question is, how do I reach the instance of e.g. "dsp.AudioFileReader" that is used within the UI of the audioTestBench, such that is can read the specified samples per frame within the plugin?

Accepted Answer

Julia Antoniou
Julia Antoniou on 27 Oct 2017
Hi Kim,
There is no programmatic interface to the Audio Test Bench UI. However, you could obtain the SamplesPerFrame property of dsp.AudioFileReader by calculating the size of the input data to the 'process()' method. For example, the source code of the Audio Test Bench could be edited to include:
classdef myEchoPlugin < audioPlugin
methods
function out = process(plugin,in)
spf = size(in,1);
out = in;
end
end
end
  2 Comments
Charlie DeVane
Charlie DeVane on 13 May 2019
Hi Kim,
There is no interface for this because, in general, audio plugins do not guarantee a fixed frame size. The process function might receive a different number of rows every call. Your solution probably works fine in this specific context, but may encounter problems in other contexts. For example, if your plugin assumes a fixed frame size based on the first input frame, when a DAW gives your generated plugin a smaller frame, the plugin will read invalid input data and write outside the output buffer, potentially crashing the DAW. validateAudioPlugin attempts to detect such behavior, but it cannot be bulletproof.
hope this helps,
Charlie

Sign in to comment.

More Answers (0)

Community Treasure Hunt

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

Start Hunting!