00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031 #include "syn/Core/SampleBufferRepos.h"
00032 #include "syn/Util/Filter.h"
00033
00034 #include "syn/Module/FilterModule.h"
00035
00036 namespace syn
00037 {
00038
00039 FilterModule::FilterModule(): Module(),
00040 mWriteBuf( NULL ), mCutoff( 1.0f ), mCutoffLo( 220.0f ),
00041 mCutoffHi( 44100.0f * 0.5f ), mFilterType( LP )
00042 {
00043 mMonoAudioInput = this->createInput( "mono audio" );
00044 mMonoAudioOutput = this->createOutput( "mono audio" );
00045
00046 this->setCutoff( mCutoffLo / mCutoffHi );
00047 }
00048
00049 FilterModule::~FilterModule()
00050 {
00051 }
00052
00053 bool FilterModule::isOpen() { return true; }
00054
00055 bool FilterModule::open()
00056 {
00057
00058 mMonoAudioOutput->setHighMark( 2 );
00059 mMonoAudioOutput->setLowMark( 1 );
00060
00061 return true;
00062 }
00063
00064 void FilterModule::close()
00065 {
00066 }
00067
00068 void FilterModule::update()
00069 {
00070 this->setPutCount( 0 );
00071
00072
00073 if (!mMonoAudioInput->empty())
00074 {
00075 SampleBuffer1f* read_buf = mMonoAudioInput->front();
00076 mMonoAudioInput->pop();
00077
00078
00079 switch (mFilterType)
00080 {
00081 case LP:
00082 {
00083 for (unsigned int x = 0; x < read_buf->size(); ++x)
00084 {
00085 mSimpleLpFilter.filter( (*read_buf)[x] );
00086 }
00087 }
00088 break;
00089 case LP2:
00090 {
00091 for (unsigned int x = 0; x < read_buf->size(); ++x)
00092 {
00093 mSimpleLP.filter( (*read_buf)[x] );
00094 }
00095 }
00096 case HP:
00097 {
00098 for (unsigned int x = 0; x < read_buf->size(); ++x)
00099 {
00100 mSimpleHpFilter.filter( (*read_buf)[x] );
00101 }
00102 }
00103 break;
00104 case LPFIR:
00105 {
00106 for (unsigned int x = 0; x < read_buf->size(); ++x)
00107 {
00108 mFirFilter.filter( (*read_buf)[x] );
00109 }
00110 }
00111 break;
00112 }
00113
00114 this->setPutCount( read_buf->size() );
00115 mMonoAudioOutput->push( read_buf );
00116 }
00117
00118 mMonoAudioOutput->setDone( false );
00119 }
00120 }