Mercurial > hg > beaglert
view core/IirFilter.cpp @ 324:9151fe15c194 prerelease
Added basic MIDI support in libpd_basic. You can now use the regular midiin object family
author | Giulio Moro <giuliomoro@yahoo.it> |
---|---|
date | Thu, 02 Jun 2016 02:17:08 +0100 |
parents | 18d03901f866 |
children |
line wrap: on
line source
/* * IirFilter.cpp * * Created on: 17 Sep 2015 * Author: giulio */ #include "IirFilter.h" IirFilterStage::IirFilterStage(){ for(int n = 0; n < IIR_FILTER_STAGE_COEFFICIENTS; n++){ coefficients[n] = 0; } for(int n = 0; n < IIR_FILTER_STAGE_STATES; n++){ states[n]=0; } } void IirFilterStage::setCoefficients(double* newCoefficients){ for(int n = 0; n < IIR_FILTER_STAGE_COEFFICIENTS; n++){ coefficients[n] = newCoefficients[n]; } } void IirFilterStage::setStates(double* newStates){ for(int n = 0; n < IIR_FILTER_STAGE_STATES; n++){ states[n] = newStates[n]; } } /* struct IirFilterStage* stages; int numberOfStages; */ IirFilter::IirFilter(){ stages=(IirFilterStage**)0; setNumberOfStages(0); } IirFilter::IirFilter(int newNumberOfStages){ setNumberOfStages(newNumberOfStages); } IirFilter::IirFilter(int newNumberOfStages, double* newCoefficients){ setNumberOfStages(newNumberOfStages); setCoefficients(newCoefficients); } void IirFilter::dealloc(){ if( stages == 0 ) return; for(int n = 0; n < numberOfStages; n++){ delete stages[n]; } delete stages; stages = 0; numberOfStages = 0; } void IirFilter::setCoefficients(double* newCoefficients){ for(int n = 0; n < numberOfStages; n++){ stages[n]->setCoefficients(newCoefficients); } }; void IirFilter::setStates(double* newStates){ for(int n = 0; n < numberOfStages; n++){ stages[n]->setStates(newStates); } }; void IirFilter::setNumberOfStages(int newNumberOfStages){ dealloc(); numberOfStages=newNumberOfStages; stages = new IirFilterStage*[numberOfStages]; for( int n = 0; n < numberOfStages; n++){ stages[n] = new IirFilterStage; } }