Can zp2sos be used in an audio plugin?
    8 visualizaciones (últimos 30 días)
  
       Mostrar comentarios más antiguos
    
    Nathan Lively
 el 7 de Mayo de 2021
  
    
    
    
    
    Respondida: Nathan Lively
 el 11 de Mayo de 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 comentarios
Respuesta aceptada
Más respuestas (1)
  Asvin Kumar
    
 el 10 de Mayo de 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 comentarios
  Asvin Kumar
    
 el 11 de Mayo de 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)
Ver también
Categorías
				Más información sobre Simulation, Tuning, and Visualization en Help Center y File Exchange.
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!



