/* ZynAddSubFX - a software synthesizer Resonance.h - Resonance Copyright (C) 2002-2005 Nasca Octavian Paul Author: Nasca Octavian Paul This program is free software; you can redistribute it and/or modify it under the terms of version 2 of the GNU General Public License as published by the Free Software Foundation. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License (version 2 or later) for more details. You should have received a copy of the GNU General Public License (version 2) along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifndef RESONANCE_H #define RESONANCE_H #include "../globals.h" #include "../Misc/Util.h" #include "../Misc/XMLwrapper.h" #include "../Params/Presets.h" #include "../DSP/FFTwrapper.h" #define N_RES_POINTS 256 class Resonance:public Presets { public: Resonance(void); ~Resonance(void); void setpoint(int n, unsigned char p); void applyres(int n, fft_t *fftdata, float freq) const; void smooth(void); void interpolatepeaks(int type); void randomize(int type); void zero(void); void paste(Resonance &r); void add2XML(XMLwrapper& xml); void defaults(void); void getfromXML(XMLwrapper& xml); //TODO remove unused methods float getfreqpos(float freq) const; float getfreqx(float x) const; float getfreqresponse(float freq) const; float getcenterfreq(void) const; float getoctavesfreq(void) const; void sendcontroller(MidiControllers ctl, float par); //parameters unsigned char Penabled; //if the ressonance is enabled unsigned char Prespoints[N_RES_POINTS]; //how many points define the resonance function unsigned char PmaxdB; //how many dB the signal may be amplified unsigned char Pcenterfreq, Poctavesfreq; //the center frequency of the res. func., and the number of octaves unsigned char Pprotectthefundamental; //the fundamental (1-st harmonic) is not damped, even it resonance function is low //controllers float ctlcenter; //center frequency(relative) float ctlbw; //bandwidth(relative) static const rtosc::Ports ports; }; #endif