From b0546e5e7f7044019892543c6c82029db8d564a7 Mon Sep 17 00:00:00 2001 From: Robert Jonsson Date: Thu, 15 Sep 2011 12:14:55 +0000 Subject: moved attic to a branch of it's own --- .../synti/zynaddsubfx/Synth/OscilGen.h | 176 --------------------- 1 file changed, 176 deletions(-) delete mode 100644 attic/muse_qt4_evolution/synti/zynaddsubfx/Synth/OscilGen.h (limited to 'attic/muse_qt4_evolution/synti/zynaddsubfx/Synth/OscilGen.h') diff --git a/attic/muse_qt4_evolution/synti/zynaddsubfx/Synth/OscilGen.h b/attic/muse_qt4_evolution/synti/zynaddsubfx/Synth/OscilGen.h deleted file mode 100644 index 1d9980a9..00000000 --- a/attic/muse_qt4_evolution/synti/zynaddsubfx/Synth/OscilGen.h +++ /dev/null @@ -1,176 +0,0 @@ -/* - ZynAddSubFX - a software synthesizer - - OscilGen.h - Waveform generator for ADnote - 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) 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 OSCIL_GEN_H -#define OSCIL_GEN_H - -#include "../globals.h" -#include "../Misc/XMLwrapper.h" -#include "Resonance.h" -#include "../DSP/FFTwrapper.h" -#include "../Params/Presets.h" - -class OscilGen:public Presets{ - public: - OscilGen(FFTwrapper *fft_,Resonance *res_); - ~OscilGen(); - - //computes the full spectrum of oscil from harmonics,phases and basefunc - void prepare(); - - //do the antialiasing(cut off higher freqs.),apply randomness and do a IFFT - short get(REALTYPE *smps,REALTYPE freqHz);//returns where should I start getting samples, used in block type randomness - short get(REALTYPE *smps,REALTYPE freqHz,int resonance); - //if freqHz is smaller than 0, return the "un-randomized" sample for UI - - void getbasefunction(REALTYPE *smps); - - //called by UI - void getspectrum(int n,REALTYPE *spc,int what);//what=0 pt. oscil,1 pt. basefunc - void getcurrentbasefunction(REALTYPE *smps); - void useasbase();//convert oscil to base function - - void add2XML(XMLwrapper *xml); - void defaults(); - void getfromXML(XMLwrapper *xml); - - void convert2sine(int magtype); - - //Parameters - - /* - The hmag and hphase starts counting from 0, so the first harmonic(1) has the index 0, - 2-nd harmonic has index 1, ..the 128 harminic has index 127 - */ - unsigned char Phmag[MAX_AD_HARMONICS],Phphase[MAX_AD_HARMONICS];//the MIDI parameters for mag. and phases - - - /*The Type of magnitude: - 0 - Linear - 1 - dB scale (-40) - 2 - dB scale (-60) - 3 - dB scale (-80) - 4 - dB scale (-100)*/ - unsigned char Phmagtype; - - unsigned char Pcurrentbasefunc;//The base function used - 0=sin, 1=... - unsigned char Pbasefuncpar;//the parameter of the base function - - unsigned char Pbasefuncmodulation;//what modulation is applied to the basefunc - unsigned char Pbasefuncmodulationpar1,Pbasefuncmodulationpar2,Pbasefuncmodulationpar3;//the parameter of the base function modulation - - /*the Randomness: - 64=no randomness - 63..0 - block type randomness - 0 is maximum - 65..127 - each harmonic randomness - 127 is maximum*/ - unsigned char Prand; - unsigned char Pwaveshaping,Pwaveshapingfunction; - unsigned char Pfiltertype,Pfilterpar1,Pfilterpar2; - unsigned char Pfilterbeforews; - unsigned char Psatype,Psapar;//spectrum adjust - - unsigned char Pamprandpower, Pamprandtype;//amplitude randomness - int Pharmonicshift;//how the harmonics are shifted - int Pharmonicshiftfirst;//if the harmonic shift is done before waveshaping and filter - - unsigned char Padaptiveharmonics;//the adaptive harmonics status (off=0,on=1,etc..) - unsigned char Padaptiveharmonicsbasefreq;//the base frequency of the adaptive harmonic (30..3000Hz) - unsigned char Padaptiveharmonicspower;//the strength of the effect (0=off,100=full) - unsigned char Padaptiveharmonicspar;//the parameters in 2,3,4.. modes of adaptive harmonics - - unsigned char Pmodulation;//what modulation is applied to the oscil - unsigned char Pmodulationpar1,Pmodulationpar2,Pmodulationpar3;//the parameter of the parameters - - - //makes a new random seed for Amplitude Randomness - //this should be called every note on event - void newrandseed(unsigned int randseed); - - bool ADvsPAD;//if it is used by ADsynth or by PADsynth - - static REALTYPE *tmpsmps;//this array stores some termporary data and it has SOUND_BUFFER_SIZE elements - static FFTFREQS outoscilFFTfreqs; - - private: - - REALTYPE hmag[MAX_AD_HARMONICS],hphase[MAX_AD_HARMONICS];//the magnituides and the phases of the sine/nonsine harmonics -// private: - FFTwrapper *fft; - //computes the basefunction and make the FFT; newbasefunc<0 = same basefunc - void changebasefunction(); - //Waveshaping - void waveshape(); - - //Filter the oscillator accotding to Pfiltertype and Pfilterpar - void oscilfilter(); - - //Adjust the spectrum - void spectrumadjust(); - - //Shift the harmonics - void shiftharmonics(); - - //Do the oscil modulation stuff - void modulation(); - - //Do the adaptive harmonic stuff - void adaptiveharmonic(FFTFREQS f,REALTYPE freq); - - //Do the adaptive harmonic postprocessing (2n+1,2xS,2xA,etc..) - //this function is called even for the user interface - //this can be called for the sine and components, and for the spectrum - //(that's why the sine and cosine components should be processed with a separate call) - void adaptiveharmonicpostprocess(REALTYPE *f, int size); - - //Basic/base functions (Functiile De Baza) - REALTYPE basefunc_pulse(REALTYPE x,REALTYPE a); - REALTYPE basefunc_saw(REALTYPE x,REALTYPE a); - REALTYPE basefunc_triangle(REALTYPE x,REALTYPE a); - REALTYPE basefunc_power(REALTYPE x,REALTYPE a); - REALTYPE basefunc_gauss(REALTYPE x,REALTYPE a); - REALTYPE basefunc_diode(REALTYPE x,REALTYPE a); - REALTYPE basefunc_abssine(REALTYPE x,REALTYPE a); - REALTYPE basefunc_pulsesine(REALTYPE x,REALTYPE a); - REALTYPE basefunc_stretchsine(REALTYPE x,REALTYPE a); - REALTYPE basefunc_chirp(REALTYPE x,REALTYPE a); - REALTYPE basefunc_absstretchsine(REALTYPE x,REALTYPE a); - REALTYPE basefunc_chebyshev(REALTYPE x,REALTYPE a); - REALTYPE basefunc_sqr(REALTYPE x,REALTYPE a); - - //Internal Data - unsigned char oldbasefunc,oldbasepar,oldhmagtype,oldwaveshapingfunction,oldwaveshaping; - int oldfilterpars,oldsapars,oldbasefuncmodulation,oldbasefuncmodulationpar1,oldbasefuncmodulationpar2,oldbasefuncmodulationpar3,oldharmonicshift; - int oldmodulation,oldmodulationpar1,oldmodulationpar2,oldmodulationpar3; - - - FFTFREQS basefuncFFTfreqs;//Base Function Frequencies - FFTFREQS oscilFFTfreqs;//Oscillator Frequencies - this is different than the hamonics set-up by the user, it may contains time-domain data if the antialiasing is turned off - int oscilprepared;//1 if the oscil is prepared, 0 if it is not prepared and is need to call ::prepare() before ::get() - - Resonance *res; - - unsigned int randseed; - -}; - - -#endif -- cgit v1.2.3