zynaddsubfx

ZynAddSubFX open source synthesizer
Log | Files | Refs | Submodules | LICENSE

Filter.h (1577B)


      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);
     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 
     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