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());
132 inline unsigned int getFC()
const {
return fc; }
134 virtual int solveIntegrators() = 0;
201#if RESID_INLINING || defined(FILTER_CPP)
209 const int V1 = getNormalizedVoice(voice1);
210 const int V2 = getNormalizedVoice(voice2);
212 const int V3 = (filt3 || !voice3off) ? getNormalizedVoice(voice3) : 0;
217 (filt1 ? Vsum : Vmix) += V1;
218 (filt2 ? Vsum : Vmix) += V2;
219 (filt3 ? Vsum : Vmix) += V3;
220 (filtE ? Vsum : Vmix) += Ve;
222 Vhp = currentSummer[currentResonance[
Vbp] +
Vlp + Vsum];
224 Vmix += solveIntegrators();
226 return currentVolume[currentMixer[Vmix]];
unsigned int output() const
Definition EnvelopeGenerator.h:130
Definition FilterModelConfig.h:39
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:122
void writeFC_LO(unsigned char fc_lo)
Definition Filter.cpp:54
void writeRES_FILT(unsigned char res_filt)
Definition Filter.cpp:66
void writeFC_HI(unsigned char fc_hi)
Definition Filter.cpp:60
int Vhp
Filter highpass state.
Definition Filter.h:61
unsigned short clock(Voice &v1, Voice &v2, Voice &v3)
Definition Filter.h:207
int Vlp
Filter lowpass state.
Definition Filter.h:67
void enable(bool enable)
Definition Filter.cpp:104
void reset()
Definition Filter.cpp:118
virtual void updateCenterFrequency()=0
void updateMixing()
Definition Filter.cpp:30
void input(short input)
Definition Filter.h:196
void writeMODE_VOL(unsigned char mode_vol)
Definition Filter.cpp:83
unsigned int getFC() const
Definition Filter.h:132
RESID_INLINE float output()
Definition Voice.h:65