zynaddsubfx

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

FormantFilter.h (1635B)


      1 /*
      2   ZynAddSubFX - a software synthesizer
      3 
      4   FormantFilter.h - formant filter
      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 FORMANT_FILTER_H
     15 #define FORMANT_FILTER_H
     16 
     17 #include "../globals.h"
     18 #include "Filter.h"
     19 #include "Value_Smoothing_Filter.h"
     20 
     21 namespace zyn {
     22 
     23 class FormantFilter:public Filter
     24 {
     25     public:
     26         FormantFilter(const FilterParams *pars, Allocator *alloc, unsigned int srate, int bufsize);
     27         ~FormantFilter();
     28         void filterout(float *smp);
     29         void setfreq(float frequency);
     30         void setfreq_and_q(float frequency, float q_);
     31         void setq(float q_);
     32         void setgain(float dBgain);
     33 
     34         void cleanup(void);
     35 
     36     private:
     37         void setpos(float input);
     38 
     39 
     40         class AnalogFilter * formant[FF_MAX_FORMANTS];
     41 
     42         struct {
     43             float freq, amp, q; //frequency,amplitude,Q
     44         } formantpar[FF_MAX_VOWELS][FF_MAX_FORMANTS],
     45           currentformants[FF_MAX_FORMANTS];
     46 
     47         struct {
     48             unsigned char nvowel;
     49         } sequence [FF_MAX_SEQUENCE];
     50 
     51         int   sequencesize, numformants;
     52         bool  firsttime;
     53         float oldinput, slowinput;
     54         float Qfactor, formantslowness, oldQfactor;
     55         float vowelclearness, sequencestretch;
     56         Allocator &memory;
     57 
     58         Value_Smoothing_Filter formant_amp_smoothing[FF_MAX_FORMANTS];
     59 };
     60 
     61 }
     62 
     63 #endif