zynaddsubfx

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

commit 37a6c99a15b468d315d9cebc9d20695b02dbc2a5
parent 9d1fd07a0c8e74071a9ae3bdd022dd82ed6e6727
Author: paulnasca <paulnasca>
Date:   Thu, 14 Sep 2006 18:35:36 +0000

*** empty log message ***

Diffstat:
MChangeLog | 1+
Msrc/Synth/OscilGen.C | 13+++++++++++--
2 files changed, 12 insertions(+), 2 deletions(-)

diff --git a/ChangeLog b/ChangeLog @@ -804,5 +804,6 @@ 16 Apr 2006 - Corectata o eroare care facea ca sa nu se foloseasca insertion effect la master 20 Aug 2006 - Adaugat 88200 ca rata de esantionare +14 Sep 2006 - Se afiseaza spectrul la nota cu frecventa de 440 Hz la Oscil si pentru parametru Adaptive Harmonics diff --git a/src/Synth/OscilGen.C b/src/Synth/OscilGen.C @@ -719,7 +719,8 @@ void OscilGen::prepare(){ }; void OscilGen::adaptiveharmonic(FFTFREQS f,REALTYPE freq){ - if ((Padaptiveharmonics==0)||(freq<1.0)) return; + if ((Padaptiveharmonics==0)/*||(freq<1.0)*/) return; + if (freq<1.0) freq=440.0; FFTFREQS inf; newFFTFREQS(&inf,OSCIL_SIZE/2); @@ -974,6 +975,7 @@ short int OscilGen::get(REALTYPE *smps,REALTYPE freqHz,int resonance){ */ void OscilGen::getspectrum(int n, REALTYPE *spc,int what){ if (n>OSCIL_SIZE/2) n=OSCIL_SIZE/2; + for (int i=1;i<n;i++){ if (what==0){ spc[i-1]=sqrt(oscilFFTfreqs.c[i]*oscilFFTfreqs.c[i] @@ -984,7 +986,14 @@ void OscilGen::getspectrum(int n, REALTYPE *spc,int what){ basefuncFFTfreqs.s[i]*basefuncFFTfreqs.s[i]); }; }; - if (what==0) adaptiveharmonicpostprocess(spc,n-1); + + if (what==0) { + for (int i=0;i<n;i++) outoscilFFTfreqs.s[i]=outoscilFFTfreqs.c[i]=spc[i+1]; + for (int i=n;i<OSCIL_SIZE/2;i++) outoscilFFTfreqs.s[i]=outoscilFFTfreqs.c[i]=0.0; + adaptiveharmonic(outoscilFFTfreqs,0.0); + for (int i=1;i<n;i++) spc[i-1]=outoscilFFTfreqs.s[i]; + adaptiveharmonicpostprocess(spc,n-1); + }; };