28#include "siddefs-fp.h"
29#include "ExternalFilter.h"
30#include "Potentiometer.h"
54 const char* getMessage()
const {
return message; }
70 Filter8580*
const filter8580;
73 std::unique_ptr<Resampler> resampler;
100 unsigned int nextVoiceSync;
106 CombinedWaveforms cws;
109 unsigned char busValue;
131 void ageBusValue(
unsigned int n);
139 void voiceSync(
bool sync);
179 void input(
int value);
201 unsigned char read(
int offset);
209 void write(
int offset,
unsigned char value);
237 double clockFrequency,
238 SamplingMethod method,
239 double samplingFrequency
249 int clock(
unsigned int cycles,
short* buf);
294#if RESID_INLINING || defined(SID_CPP)
299#include "ExternalFilter.h"
301#include "resample/Resampler.h"
307void SID::ageBusValue(
unsigned int n)
309 if (likely(busValueTtl != 0))
313 if (unlikely(busValueTtl <= 0))
329 unsigned int delta_t = std::min(nextVoiceSync, cycles);
331 if (likely(delta_t > 0))
333 for (
unsigned int i = 0; i < delta_t; i++)
336 voice[0].wave()->
clock();
337 voice[1].wave()->
clock();
338 voice[2].wave()->
clock();
341 voice[0].envelope()->
clock();
342 voice[1].envelope()->
clock();
343 voice[2].envelope()->
clock();
345 const int sidOutput =
static_cast<int>(filter->
clock(voice[0], voice[1], voice[2]));
346 const int c64Output = externalFilter.
clock(sidOutput - (1 << 15));
347 if (unlikely(resampler->input(c64Output)))
349 buf[s++] = resampler->getOutput(scaleFactor);
354 nextVoiceSync -= delta_t;
357 if (unlikely(nextVoiceSync == 0))
void clock()
Definition EnvelopeGenerator.h:177
Definition ExternalFilter.h:66
int clock(int input)
Definition ExternalFilter.h:113
Definition Filter6581.h:321
unsigned short clock(Voice &v1, Voice &v2, Voice &v3)
Definition Filter.h:207
Definition Potentiometer.h:38
void setChipModel(ChipModel model)
Definition SID.cpp:211
void input(int value)
Definition SID.cpp:321
unsigned char read(int offset)
Definition SID.cpp:327
void write(int offset, unsigned char value)
Definition SID.cpp:362
void setSamplingParameters(double clockFrequency, SamplingMethod method, double samplingFrequency)
Definition SID.cpp:481
void setFilter6581Range(double adjustment)
Definition SID.cpp:161
ChipModel getChipModel() const
Definition SID.h:156
void setCombinedWaveforms(CombinedWaveforms cws)
Definition SID.cpp:276
void setFilter6581Curve(double filterCurve)
Definition SID.cpp:156
void setFilter8580Curve(double filterCurve)
Definition SID.cpp:166
void enableFilter(bool enable)
Definition SID.cpp:171
void reset()
Definition SID.cpp:300
int clock(unsigned int cycles, short *buf)
Definition SID.h:322
void clockSilent(unsigned int cycles)
Definition SID.cpp:500