static void runAddingNotch_iir(LADSPA_Handle instance, unsigned long sample_count) { Notch_iir *plugin_data = (Notch_iir *)instance; /* Center Frequency (Hz) (float value) */ const LADSPA_Data center = *(plugin_data->center); /* Bandwidth (Hz) (float value) */ const LADSPA_Data width = *(plugin_data->width); /* Stages(2 poles per stage) (float value) */ const LADSPA_Data stages = *(plugin_data->stages); /* Input (array of floats of length sample_count) */ const LADSPA_Data * const input = plugin_data->input; /* Output (array of floats of length sample_count) */ LADSPA_Data * const output = plugin_data->output; iir_stage_t* first = plugin_data->first; iirf_t* iirf1 = plugin_data->iirf1; iirf_t* iirf2 = plugin_data->iirf2; float lfc = plugin_data->lfc; long sample_rate = plugin_data->sample_rate; iir_stage_t* second = plugin_data->second; float ufc = plugin_data->ufc; ufc = (center - width*0.5f)/(float)sample_rate; lfc = (center + width*0.5f)/(float)sample_rate; chebyshev(iirf1, first, 2*CLAMP((int)stages,1,10), IIR_STAGE_LOWPASS, ufc, 0.5f); chebyshev(iirf2, second, 2*CLAMP((int)stages,1,10), IIR_STAGE_HIGHPASS, lfc, 0.5f); iir_process_buffer_ns_5(iirf1, first, input, output, sample_count, RUN_ADDING); iir_process_buffer_ns_5(iirf2, second, input, output, sample_count, 1); /* add to first buffer */ }
static void runBandpass_iir(LV2_Handle instance, uint32_t sample_count) { Bandpass_iir *plugin_data = (Bandpass_iir *)instance; const float center = *(plugin_data->center); const float width = *(plugin_data->width); const float stages = *(plugin_data->stages); const float * const input = plugin_data->input; float * const output = plugin_data->output; iirf_t* iirf = plugin_data->iirf; iir_stage_t* gt = plugin_data->gt; iir_stage_t* first = plugin_data->first; iir_stage_t* second = plugin_data->second; long sample_rate = plugin_data->sample_rate; float ufc = plugin_data->ufc; float lfc = plugin_data->lfc; ufc = (center + width*0.5f)/(float)sample_rate; lfc = (center - width*0.5f)/(float)sample_rate; combine_iir_stages(IIR_STAGE_BANDPASS, gt, first, second, chebyshev(iirf, first, 2*CLAMP((int)stages,1,10), IIR_STAGE_LOWPASS, ufc, 0.5f), chebyshev(iirf, second, 2*CLAMP((int)stages,1,10), IIR_STAGE_HIGHPASS, lfc, 0.5f)); iir_process_buffer_ns_5(iirf, gt, input, output, sample_count); }
static void runAddingHighpass_iir(LADSPA_Handle instance, unsigned long sample_count) { Highpass_iir *plugin_data = (Highpass_iir *)instance; /* Cutoff Frequency (float value) */ const LADSPA_Data cutoff = *(plugin_data->cutoff); /* Stages(2 poles per stage) (float value) */ const LADSPA_Data stages = *(plugin_data->stages); /* Input (array of floats of length sample_count) */ const LADSPA_Data * const input = plugin_data->input; /* Output (array of floats of length sample_count) */ LADSPA_Data * const output = plugin_data->output; iir_stage_t* gt = plugin_data->gt; iirf_t* iirf = plugin_data->iirf; long sample_rate = plugin_data->sample_rate; chebyshev(iirf, gt, 2*CLAMP((int)stages,1,10), IIR_STAGE_HIGHPASS, cutoff/(float)sample_rate, 0.5f); iir_process_buffer_ns_5(iirf, gt, input, output, sample_count,RUN_ADDING); }