1 /* 2 ZynAddSubFX - a software synthesizer 3 4 Filter.h - Filters, uses analog,formant,etc. filters 5 Copyright (C) 2002-2005 Nasca Octavian Paul 6 Author: Nasca Octavian Paul 7 8 This program is free software; you can redistribute it and/or 9 modify it under the terms of the GNU General Public License 10 as published by the Free Software Foundation; either version 2 11 of the License, or (at your option) any later version. 12 */ 13 14 #ifndef FILTER_H 15 #define FILTER_H 16 17 #include "../globals.h" 18 19 namespace zyn { 20 21 class Filter 22 { 23 public: 24 static float getrealfreq(float freqpitch); 25 static Filter *generate(Allocator &memory, const FilterParams *pars, 26 unsigned int srate, int bufsize); 27 28 Filter(unsigned int srate, int bufsize); ~Filter()29 virtual ~Filter() {} 30 virtual void filterout(float *smp) = 0; 31 virtual void setfreq(float frequency) = 0; 32 virtual void setfreq_and_q(float frequency, float q_) = 0; 33 virtual void setq(float q_) = 0; 34 virtual void setgain(float dBgain) = 0; 35 36 protected: 37 float outgain; 38 39 // current setup 40 unsigned int samplerate; 41 int buffersize; 42 43 // alias for above terms 44 float samplerate_f; 45 float halfsamplerate_f; 46 float buffersize_f; 47 int bufferbytes; 48 alias()49 inline void alias() 50 { 51 samplerate_f = samplerate; 52 halfsamplerate_f = samplerate_f / 2.0f; 53 buffersize_f = buffersize; 54 bufferbytes = buffersize * sizeof(float); 55 } 56 }; 57 58 } 59 60 #endif 61