28#include "siddefs-fp.h"
54 const char* getMessage()
const {
return message; }
67 std::unique_ptr<Filter6581>
const filter6581;
70 std::unique_ptr<Filter8580>
const filter8580;
76 std::unique_ptr<ExternalFilter>
const externalFilter;
79 std::unique_ptr<Resampler> resampler;
82 std::unique_ptr<Potentiometer>
const potX;
85 std::unique_ptr<Potentiometer>
const potY;
88 std::unique_ptr<Voice> voice[3];
97 unsigned int nextVoiceSync;
103 unsigned char busValue;
128 void ageBusValue(
unsigned int n);
143 void voiceSync(
bool sync);
175 void input(
int value);
197 unsigned char read(
int offset);
205 void write(
int offset,
unsigned char value);
213 void mute(
int channel,
bool enable) { muted[channel] = enable; }
240 void setSamplingParameters(
double clockFrequency, SamplingMethod method,
double samplingFrequency,
double highestAccurateFrequency);
249 int clock(
unsigned int cycles,
short* buf);
287#if RESID_INLINING || defined(SID_CPP)
292#include "ExternalFilter.h"
294#include "resample/Resampler.h"
300void SID::ageBusValue(
unsigned int n)
302 if (likely(busValueTtl != 0))
306 if (unlikely(busValueTtl <= 0))
315int SID::output()
const
317 const int v1 = voice[0]->output(voice[2]->wave());
318 const int v2 = voice[1]->output(voice[0]->wave());
319 const int v3 = voice[2]->output(voice[1]->wave());
321 return externalFilter->clock(filter->
clock(v1, v2, v3));
333 unsigned int delta_t = std::min(nextVoiceSync, cycles);
335 if (likely(delta_t > 0))
337 for (
unsigned int i = 0; i < delta_t; i++)
340 voice[0]->wave()->clock();
341 voice[1]->wave()->clock();
342 voice[2]->wave()->clock();
345 voice[0]->envelope()->clock();
346 voice[1]->envelope()->clock();
347 voice[2]->envelope()->clock();
349 if (unlikely(resampler->input(output())))
351 buf[s++] = resampler->getOutput();
356 nextVoiceSync -= delta_t;
359 if (unlikely(nextVoiceSync == 0))
virtual unsigned short clock(int v1, int v2, int v3)=0
void setChipModel(ChipModel model)
Definition: SID.cpp:208
void input(int value)
Definition: SID.cpp:291
unsigned char read(int offset)
Definition: SID.cpp:297
void setSamplingParameters(double clockFrequency, SamplingMethod method, double samplingFrequency, double highestAccurateFrequency)
Definition: SID.cpp:451
void write(int offset, unsigned char value)
Definition: SID.cpp:332
ChipModel getChipModel() const
Definition: SID.h:160
void setFilter6581Curve(double filterCurve)
Definition: SID.cpp:158
void setFilter8580Curve(double filterCurve)
Definition: SID.cpp:163
void enableFilter(bool enable)
Definition: SID.cpp:168
void reset()
Definition: SID.cpp:270
int clock(unsigned int cycles, short *buf)
Definition: SID.h:326
void clockSilent(unsigned int cycles)
Definition: SID.cpp:470
void mute(int channel, bool enable)
Definition: SID.h:213