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());
122 void updateResonance(
unsigned char res) { currentResonance = resonance + (res * (1<<16)); }
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:40
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: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
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:125
void reset()
Definition Filter.cpp:139
virtual void updateCenterFrequency()=0
void updateMixing()
Definition Filter.cpp:51
void input(short input)
Definition Filter.h:196
void writeMODE_VOL(unsigned char mode_vol)
Definition Filter.cpp:104
unsigned int getFC() const
Definition Filter.h:132
RESID_INLINE float output()
Definition Voice.h:65