How to use Audio Plugin Example System Objects in a custom Plugin
    조회 수: 3 (최근 30일)
  
       이전 댓글 표시
    
Hello,
I realy like the Audio Plugin Examples . I want to use some of them as parts of my Plugin. However i find it realy hard to implement those that are System Objects.
for example i would like to have this filter and this eq in the plugin.
audiopluginexample.VarSlopeBandpassFilter
audiopluginexample.ParametricEqualizerWithUDP
i tried using the code available through "edit" ,but as they are system objects i cannot just do that. Object Names are fixed etc.
the Question is how do i implement them in a custom audio Plugin?
for example how can i make a plugin that passes audio from the audiopluginexample.VarSlopeBandpassFilter through the audiopluginexample.ParametricEqualizerWithUDP.
thanks in advance im stuck on that one for a while now.
댓글 수: 0
채택된 답변
  jibrahim
    
 2021년 2월 2일
        Hi Adrian,
Take a look at the plugin below and see if this answers your needs. What this plugin does is essentially internally use a var-slope BP filter and a param EQ. 
classdef ExampleEQ < audioPlugin
    %#codegen
    properties
        % Cutoff frequency in Hz
        LowCutoff = 20
        HighCutoff = 18e3;
        % Slope in dB/octave
        LowSlope = '12'
        HighSlope = '30'
        CenterFrequency1 = 100
        CenterFrequency2 = 1000
        CenterFrequency3 = 10000
        % Q factors for each band
        QualityFactor1 = 2
        QualityFactor2 = 2
        QualityFactor3 = 2
        % dB gain for each band
        PeakGain1 = 0
        PeakGain2 = 0
        PeakGain3 = 0
    end
    properties (Access = private)
        pVarSlopeBP
        pParamEQ
    end
    properties (Constant)
        % Define the plugin interface
        PluginInterface = audioPluginInterface( ...
            'InputChannels',2,...
            'OutputChannels',2,...
            'PluginName','Example EQ',...
            audioPluginParameter('LowCutoff', ...
            'DisplayName',  'Low Cutoff', ...
            'Label',  'Hz', ...
            'Mapping', { 'log', 20, 20000},...
            'Style', 'rotaryknob', 'Layout', [1 1]),...
            audioPluginParameter('HighCutoff', ...
            'DisplayName',  'High Cutoff', ...
            'Label',  'Hz', ...
            'Mapping', { 'log', 20, 20000},...
            'Style', 'rotaryknob', 'Layout', [1 2]),...
            audioPluginParameter('LowSlope', ...
            'DisplayName',  'Low Slope', ...
            'Label',  'dB/octave', ...
            'Mapping', { 'enum', '0','6','12','18','24','30','36','42','48'},...
            'Layout', [3 1]),...
            audioPluginParameter('HighSlope', ...
            'DisplayName',  'High Slope', ...
            'Label',  'dB/octave', ...
            'Mapping', { 'enum', '0','6','12','18','24','30','36','42','48'},...
            'Layout', [3 2]), ...
            audioPluginParameter('PeakGain1','DisplayName','Low Gain','Label','dB',...
            'Mapping',{'lin',-20,20},'Style','vslider','Layout',[5 1]),...
            audioPluginParameter('CenterFrequency1','DisplayName','Low Frequency','Label','Hz',...
            'Mapping',{'log',20,20e3},'Style','rotaryknob','Layout',[7 1]),...
            audioPluginParameter('QualityFactor1','DisplayName','Low Q',...
            'Mapping',{'log',0.2,700},'Style','rotaryknob','Layout',[9 1]),...
            audioPluginParameter('PeakGain2','DisplayName','Mid Gain','Label','dB',...
            'Mapping',{'lin',-20,20},'Style','vslider','Layout',[5 2]),...
            audioPluginParameter('CenterFrequency2','DisplayName','Mid Frequency','Label','Hz',...
            'Mapping',{'log',20,20e3},'Style','rotaryknob','Layout',[7 2]),...
            audioPluginParameter('QualityFactor2','DisplayName','Mid Q',...
            'Mapping',{'log',0.2,700},'Style','rotaryknob','Layout',[9 2]),...
            audioPluginParameter('PeakGain3','DisplayName','High Gain','Label','dB',...
            'Mapping',{'lin',-20,20},'Style','vslider','Layout',[5 3]),...
            audioPluginParameter('CenterFrequency3','DisplayName','High Frequency','Label','Hz',...
            'Mapping',{'log',20,20e3},'Style','rotaryknob','Layout',[7 3]),...
            audioPluginParameter('QualityFactor3','DisplayName','High Q',...
            'Mapping',{'log',0.2,700},'Style','rotaryknob','Layout',[9 3])...
            );
    end
    %----------------------------------------------------------------------
    % Public methods
    %----------------------------------------------------------------------
    methods
        function plugin = ExampleEQ()
            % Constructor
            % Initialize a multinotch filter
            plugin.pVarSlopeBP = audiopluginexample.VarSlopeBandpassFilter;
            plugin.pParamEQ = audiopluginexample.ParametricEqualizerWithUDP;
            fs = plugin.getSampleRate;
            setSampleRate(plugin.pVarSlopeBP, fs);
            setSampleRate(plugin.pParamEQ, fs);
        end
        %------------------------------------------------------------------
        function set.LowCutoff(plugin,val)
            plugin.pVarSlopeBP.LowCutoff = val;%#ok<MCSUP>
            plugin.LowCutoff = val;
        end
        function set.HighCutoff(plugin,val)
            plugin.pVarSlopeBP.HighCutoff = val;%#ok<MCSUP>
            plugin.HighCutoff = val;
        end
        function set.LowSlope(plugin,val)
            plugin.pVarSlopeBP.LowSlope = val;%#ok<MCSUP>
            plugin.LowSlope = val;
        end
        function set.HighSlope(plugin,val)
            plugin.pVarSlopeBP.HighSlope = val;%#ok<MCSUP>
            plugin.HighSlope = val;
        end
        function set.CenterFrequency1(plugin,val)
            plugin.pParamEQ.CenterFrequency1 = val;%#ok<MCSUP>
            plugin.CenterFrequency1 = val;
        end
        function set.CenterFrequency2(plugin,val)
            plugin.pParamEQ.CenterFrequency2 = val;%#ok<MCSUP>
            plugin.CenterFrequency2 = val;
        end
        function set.CenterFrequency3(plugin,val)
            plugin.pParamEQ.CenterFrequency3 = val;%#ok<MCSUP>
            plugin.CenterFrequency3 = val;
        end
        function set.QualityFactor1(plugin,val)
            plugin.pParamEQ.QualityFactor1 = val;%#ok<MCSUP>
            plugin.QualityFactor1 = val;
        end
        function set.QualityFactor2(plugin,val)
            plugin.pParamEQ.QualityFactor2 = val;%#ok<MCSUP>
            plugin.QualityFactor2 = val;
        end
        function set.QualityFactor3(plugin,val)
            plugin.pParamEQ.QualityFactor3 = val;%#ok<MCSUP>
            plugin.QualityFactor3 = val;
        end
        function set.PeakGain1(plugin,val)
            plugin.pParamEQ.PeakGain1 = val;%#ok<MCSUP>
            plugin.PeakGain1 = val;
        end
        function set.PeakGain2(plugin,val)
            plugin.pParamEQ.PeakGain2 = val;%#ok<MCSUP>
            plugin.PeakGain2 = val;
        end
        function set.PeakGain3(plugin,val)
            plugin.pParamEQ.PeakGain3 = val;%#ok<MCSUP>
            plugin.PeakGain3 = val;
        end
        %------------------------------------------------------------------
        function y = process(plugin,x)
            z = plugin.pVarSlopeBP(x);
            y = plugin.pParamEQ(z);
        end
        %------------------------------------------------------------------
        function reset(plugin)
            fs = plugin.getSampleRate;
            setSampleRate(plugin.pVarSlopeBP, fs);
            reset(plugin.pVarSlopeBP)
            setSampleRate(plugin.pParamEQ, fs);
            reset(plugin.pParamEQ)
        end
    end
end
추가 답변 (0개)
참고 항목
카테고리
				Help Center 및 File Exchange에서 Audio Plugin Creation and Hosting에 대해 자세히 알아보기
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!

