commit 158fc8a962b107cc9f97ffe93687e5958b6ae085
parent 06f7a78ec194db4b0057776fee4e79246139e750
Author: fundamental <mark.d.mccurry@gmail.com>
Date: Sat, 9 Jul 2011 16:06:53 -0400
Eliminated some unneeded dependencies
Filter.h no longer includes most of DSP/
Diffstat:
8 files changed, 21 insertions(+), 26 deletions(-)
diff --git a/src/DSP/Filter.cpp b/src/DSP/Filter.cpp
@@ -24,15 +24,18 @@
#include <stdio.h>
#include "Filter.h"
+#include "Filter_.h"
+#include "AnalogFilter.h"
+#include "FormantFilter.h"
+#include "SVFilter.h"
+#include "../Params/FilterParams.h"
Filter::Filter(FilterParams *pars)
{
unsigned char Ftype = pars->Ptype;
unsigned char Fstages = pars->Pstages;
- category = pars->Pcategory;
-
- switch(category) {
+ switch(pars->Pcategory) {
case 1:
filter = new FormantFilter(pars);
break;
@@ -79,9 +82,6 @@ void Filter::setq(float q_)
float Filter::getrealfreq(float freqpitch)
{
- if((category == 0) || (category == 2))
- return pow(2.0, freqpitch + 9.96578428); //log2(1000)=9.95748
- else
- return freqpitch;
+ return pow(2.0, freqpitch + 9.96578428); //log2(1000)=9.95748
}
diff --git a/src/DSP/Filter.h b/src/DSP/Filter.h
@@ -25,28 +25,20 @@
#include "../globals.h"
-#include "Filter_.h"
-#include "AnalogFilter.h"
-#include "FormantFilter.h"
-#include "SVFilter.h"
-#include "../Params/FilterParams.h"
-
class Filter
{
public:
- Filter(FilterParams *pars);
+ Filter(class FilterParams *pars);
~Filter();
void filterout(float *smp);
void setfreq(float frequency);
void setfreq_and_q(float frequency, float q_);
void setq(float q_);
- float getrealfreq(float freqpitch);
+ static float getrealfreq(float freqpitch);
private:
- Filter_ *filter;
- unsigned char category;
+ class Filter_ *filter;
};
-
#endif
diff --git a/src/DSP/FormantFilter.cpp b/src/DSP/FormantFilter.cpp
@@ -191,8 +191,11 @@ void FormantFilter::setgain(float /*dBgain*/)
void FormantFilter::setfreq_and_q(float frequency, float q_)
{
+ //Convert form real freq[Hz]
+ const float freq = log2(frequency) - 9.96578428; //log2(1000)=9.95748.
+
Qfactor = q_;
- setpos(frequency);
+ setpos(freq);
}
diff --git a/src/Effects/DynamicFilter.cpp b/src/Effects/DynamicFilter.cpp
@@ -74,8 +74,8 @@ void DynamicFilter::out(const Stereo<float *> &smp)
ms4 = ms4 * (1.0 - ampsmooth2) + ms3 * ampsmooth2;
const float rms = (sqrt(ms4)) * ampsns;
- const float frl = filterl->getrealfreq(freq + lfol + rms);
- const float frr = filterr->getrealfreq(freq + lfor + rms);
+ const float frl = Filter::getrealfreq(freq + lfol + rms);
+ const float frr = Filter::getrealfreq(freq + lfor + rms);
filterl->setfreq_and_q(frl, q);
filterr->setfreq_and_q(frr, q);
diff --git a/src/Synth/ADnote.cpp b/src/Synth/ADnote.cpp
@@ -963,7 +963,7 @@ void ADnote::computecurrentparameters()
float tmpfilterfreq = globalfilterpitch + ctl->filtercutoff.relfreq
+ NoteGlobalPar.FilterFreqTracking;
- tmpfilterfreq = NoteGlobalPar.GlobalFilterL->getrealfreq(tmpfilterfreq);
+ tmpfilterfreq = Filter::getrealfreq(tmpfilterfreq);
float globalfilterq = NoteGlobalPar.FilterQ * ctl->filterq.relq;
NoteGlobalPar.GlobalFilterL->setfreq_and_q(tmpfilterfreq, globalfilterq);
@@ -1014,8 +1014,7 @@ void ADnote::computecurrentparameters()
filterpitch += NoteVoicePar[nvoice].FilterLfo->lfoout();
filterfreq = filterpitch + NoteVoicePar[nvoice].FilterFreqTracking;
- filterfreq = NoteVoicePar[nvoice].VoiceFilterL->getrealfreq(
- filterfreq);
+ filterfreq = Filter::getrealfreq(filterfreq);
NoteVoicePar[nvoice].VoiceFilterL->setfreq(filterfreq);
if(stereo && NoteVoicePar[nvoice].VoiceFilterR)
diff --git a/src/Synth/PADnote.cpp b/src/Synth/PADnote.cpp
@@ -228,7 +228,7 @@ void PADnote::computecurrentparameters()
float tmpfilterfreq = globalfilterpitch + ctl->filtercutoff.relfreq
+ NoteGlobalPar.FilterFreqTracking;
- tmpfilterfreq = NoteGlobalPar.GlobalFilterL->getrealfreq(tmpfilterfreq);
+ tmpfilterfreq = Filter::getrealfreq(tmpfilterfreq);
float globalfilterq = NoteGlobalPar.FilterQ * ctl->filterq.relq;
NoteGlobalPar.GlobalFilterL->setfreq_and_q(tmpfilterfreq, globalfilterq);
diff --git a/src/Synth/SUBnote.cpp b/src/Synth/SUBnote.cpp
@@ -439,7 +439,7 @@ void SUBnote::computecurrentparameters()
+ GlobalFilterEnvelope->envout();
float filterfreq = globalfilterpitch + ctl->filtercutoff.relfreq
+ GlobalFilterFreqTracking;
- filterfreq = GlobalFilterL->getrealfreq(filterfreq);
+ filterfreq = Filter::getrealfreq(filterfreq);
GlobalFilterL->setfreq_and_q(filterfreq,
globalfiltercenterq * ctl->filterq.relq);
diff --git a/src/Synth/SynthNote.h b/src/Synth/SynthNote.h
@@ -22,6 +22,7 @@
#ifndef SYNTH_NOTE_H
#define SYNTH_NOTE_H
#include "../globals.h"
+#include "../Params/FilterParams.h"
class SynthNote
{