Can zp2sos be used in an audio plugin?
    8 views (last 30 days)
  
       Show older comments
    
    Nathan Lively
 on 7 May 2021
  
    
    
    
    
    Answered: Nathan Lively
 on 11 May 2021
            I'm getting this error: 
    Unable to perform assignment because dot indexing is not supported for
    variables of this type.
    Error in filterPlugin/reset (line 21)
                p.sos = zp2sos(z,p,k);
Here's my plugin code. I'm trying to keep it super simple for testing.
classdef filterPlugin < audioPlugin
% Basic IIR Butterworth lowpass for testing
    properties % Public interface
    end
    properties (Constant) % Define the plugin interface
        PluginInterface = audioPluginInterface();        
    end
    properties (Access = private) % Internal State
        sos = zeros(1,6);
    end
    methods
        function out = process(p, in)            
            [out] = sosfilt(p.sos,in);
        end
        function reset(p) % Initialize internal state
            Fs = getSampleRate(p);
            Fc = 1000; FcNormalized = Fc/(Fs/2);
            [z,p,k] = butter(2,FcNormalized);
            p.sos = zp2sos(z,p,k);
        end
    end       
end
2 Comments
Accepted Answer
More Answers (1)
  Asvin Kumar
    
 on 10 May 2021
        The reason this error occurs is because you're using p as the "this" input argument and then overwriting it by the output of the butter function which is a column vector of complex numbers. Hence why the assignment fails. Use a modified version of the reset function to workaround this error.
        function reset(this) % Initialize internal state
            Fs = getSampleRate(this);
            Fc = 1000; 
            FcNormalized = Fc/(Fs/2);
            [z,p,k] = butter(2,FcNormalized);
            this.sos = zp2sos(z,p,k);
        end
4 Comments
  Asvin Kumar
    
 on 11 May 2021
				You can find details about functions that support code generation from the Signal Processing Toolbox here: Code Generation and GPU Support - MATLAB & Simulink (mathworks.com)
See Also
Categories
				Find more on Simulation, Tuning, and Visualization in Help Center and File Exchange
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!
