26 #include "siddefs-fp.h" 31 #include "FilterModelConfig.h" 325 const unsigned short* f0_dac;
327 unsigned short** mixer;
328 unsigned short** summer;
329 unsigned short** gain;
331 const int voiceScaleS14;
335 std::unique_ptr<Integrator>
const hpIntegrator;
338 std::unique_ptr<Integrator>
const bpIntegrator;
357 f0_dac(FilterModelConfig::getInstance()->getDAC(0.5)),
358 mixer(FilterModelConfig::getInstance()->getMixer()),
359 summer(FilterModelConfig::getInstance()->getSummer()),
360 gain(FilterModelConfig::getInstance()->getGain()),
361 voiceScaleS14(FilterModelConfig::getInstance()->getVoiceScaleS14()),
362 voiceDC(FilterModelConfig::getInstance()->getVoiceDC()),
363 hpIntegrator(FilterModelConfig::getInstance()->buildIntegrator()),
364 bpIntegrator(FilterModelConfig::getInstance()->buildIntegrator())
371 int clock(
int voice1,
int voice2,
int voice3)
override;
373 void input(
int sample)
override {
ve = (sample * voiceScaleS14 * 3 >> 10) + mixer[0][0]; }
385 #if RESID_INLINING || defined(FILTER6581_CPP) 387 #include "Integrator.h" 395 voice1 = (voice1 * voiceScaleS14 >> 18) + voiceDC;
396 voice2 = (voice2 * voiceScaleS14 >> 18) + voiceDC;
398 voice3 = filt3 || !
voice3off ? (voice3 * voiceScaleS14 >> 18) + voiceDC : 0;
403 (
filt1 ? Vi : Vo) += voice1;
404 (filt2 ? Vi : Vo) += voice2;
405 (filt3 ? Vi : Vo) += voice3;
406 (filtE ? Vi : Vo) +=
ve;
409 Vbp = hpIntegrator->solve(
Vhp);
410 Vlp = bpIntegrator->solve(
Vbp);
bool hp
Highpass, bandpass, and lowpass filter modes.
Definition: Filter.h:69
void updateResonance(unsigned char res) override
Definition: Filter6581.h:351
int ve
Filter external input.
Definition: Filter.h:57
int Vhp
Filter highpass state.
Definition: Filter.h:48
int Vlp
Filter lowpass state.
Definition: Filter.h:54
void updatedCenterFrequency() override
Definition: Filter6581.cpp:37
bool filt1
Routing to filter or outside filter.
Definition: Filter.h:63
unsigned short * currentSummer
Filter input summer setting.
Definition: Filter.h:42
bool voice3off
Switch voice 3 off.
Definition: Filter.h:66
void setFilterCurve(double curvePosition)
Definition: Filter6581.cpp:68
int clock(int voice1, int voice2, int voice3) override
Definition: Filter6581.h:393
unsigned short * currentGain
Current volume amplifier setting.
Definition: Filter.h:36
void updatedMixing() override
Definition: Filter6581.cpp:44
unsigned short * currentMixer
Current filter/voice mixer setting.
Definition: Filter.h:39
int Vbp
Filter bandpass state.
Definition: Filter.h:51
Definition: Filter6581.h:322
unsigned short * currentResonance
Filter resonance value.
Definition: Filter.h:45