26#include "FilterModelConfig.h"
29#include "siddefs-fp.h"
40 unsigned short* mixer;
41 unsigned short* summer;
42 unsigned short* resonance;
43 unsigned short* volume;
48 unsigned short* currentMixer =
nullptr;
51 unsigned short* currentSummer =
nullptr;
54 unsigned short* currentResonance =
nullptr;
57 unsigned short* currentVolume =
nullptr;
85 bool voice3off =
false;
97 unsigned char vol = 0;
103 unsigned char filt = 0;
106 inline int getNormalizedVoice(
Voice& v)
const
108 return fmc.getNormalizedVoice(v.
output(), v.envelope()->
output());
112 inline int getSilentVoice(
Voice& v)
const
129 void updateResonance(
unsigned char res) { currentResonance = resonance + (res * (1<<16)); }
139 inline unsigned int getFC()
const {
return fc; }
141 virtual int solveIntegrators() = 0;
208#if RESIDFP_INLINING || defined(FILTER_CPP)
216 const int V1 = getNormalizedVoice(voice1);
217 const int V2 = getNormalizedVoice(voice2);
219 const int V3 = (filt3 || !voice3off) ? getNormalizedVoice(voice3) : getSilentVoice(voice3);
224 (filt1 ? Vsum : Vmix) += V1;
225 (filt2 ? Vsum : Vmix) += V2;
226 (filt3 ? Vsum : Vmix) += V3;
227 (filtE ? Vsum : Vmix) += Ve;
229 Vhp = currentSummer[currentResonance[
Vbp] +
Vlp + Vsum];
231 Vmix += solveIntegrators();
233 return currentVolume[currentMixer[Vmix]];
unsigned int output() const
Definition EnvelopeGenerator.h:130
Definition FilterModelConfig.h:40
unsigned short clock(Voice &v1, Voice &v2, Voice &v3)
Definition Filter.h:214
bool hp
Highpass, bandpass, and lowpass filter modes.
Definition Filter.h:90
int Vbp
Filter bandpass state.
Definition Filter.h:64
void updateResonance(unsigned char res)
Definition Filter.h:129
void writeFC_LO(unsigned char fc_lo)
Definition Filter.cpp:75
void writeRES_FILT(unsigned char res_filt)
Definition Filter.cpp:87
void writeFC_HI(unsigned char fc_hi)
Definition Filter.cpp:81
int Vhp
Filter highpass state.
Definition Filter.h:61
int Vlp
Filter lowpass state.
Definition Filter.h:67
void enable(bool enable)
Definition Filter.cpp:125
void reset()
Definition Filter.cpp:139
virtual void updateCenterFrequency()=0
void updateMixing()
Definition Filter.cpp:51
void input(short input)
Definition Filter.h:203
void writeMODE_VOL(unsigned char mode_vol)
Definition Filter.cpp:104
unsigned int getFC() const
Definition Filter.h:139
RESIDFP_INLINE float output()
Definition Voice.h:65