32#include "siddefs-fp.h"
33#include "ExternalFilter.h"
57 const char* getMessage()
const {
return message; }
75 Filter8580*
const filter8580;
78 std::unique_ptr<Resampler> resampler;
99 unsigned int nextVoiceSync;
112 uint8_t paddleX = 0xff;
113 uint8_t paddleY = 0xff;
139 void ageBusValue(
int n);
147 void voiceSync(
bool sync);
150 inline void clockWaveGen()
152 voice[0].wave()->
clock();
153 voice[1].wave()->
clock();
154 voice[2].wave()->
clock();
158 inline void clockEnvGen()
160 voice[0].envelope()->
clock();
161 voice[1].envelope()->
clock();
162 voice[2].envelope()->
clock();
166 inline int32_t clockFilt()
168 uint16_t filtOutput = filter->
clock(voice[0], voice[1], voice[2]);
169 int32_t exFiltInput =
static_cast<int32_t
>(filtOutput) + INT16_MIN;
170 return externalFilter.
clock(exFiltInput);
175 SID& operator=(
const SID&) =
delete;
215 void input(
int value);
223 uint8_t
peek(
int offset)
const;
245 uint8_t
read(
int offset);
253 void write(
int offset, uint8_t value);
280 double clockFrequency,
282 double samplingFrequency
292 int clock(
unsigned int cycles, int16_t* buf);
301 int clock(int16_t* buf,
int bufSize);
365#if RESIDFP_INLINING || defined(SID_CPP)
369#include "resample/Resampler.h"
375void SID::ageBusValue(
int n)
377 if (likely(busValueTtl != 0))
381 if (unlikely(busValueTtl <= 0))
399 unsigned int delta_t = std::min(nextVoiceSync, cycles);
401 if (likely(delta_t > 0))
403 for (
unsigned int i = 0; i < delta_t; i++)
408 int32_t output = clockFilt();
409 if (unlikely(resampler->input(output)))
411 buf[s++] = resampler->getOutput(scaleFactor);
416 nextVoiceSync -= delta_t;
419 if (unlikely(nextVoiceSync == 0))
436 for (
int s = 0; s < bufSize;)
438 unsigned int delta_t = nextVoiceSync;
440 if (likely(delta_t > 0))
449 int32_t output = clockFilt();
450 if (unlikely(resampler->input(output)))
452 buf[s++] = resampler->getOutput(scaleFactor);
453 if (unlikely(s == bufSize))
465 if (likely(nextVoiceSync == 0))
void clock()
Definition EnvelopeGenerator.h:181
Definition ExternalFilter.h:87
int32_t clock(int32_t input)
Definition ExternalFilter.h:136
Definition Filter6581.h:321
uint16_t clock(Voice &voice1, Voice &voice2, Voice &voice3)
Definition Filter.h:216
void setChipModel(ChipModel model)
Definition SID.cpp:226
uint8_t peek(int offset) const
Definition SID.cpp:344
void input(int value)
Definition SID.cpp:338
int clock(unsigned int cycles, int16_t *buf)
Definition SID.h:390
void setSamplingParameters(double clockFrequency, SamplingMethod method, double samplingFrequency)
Definition SID.cpp:519
void setFilter6581Range(double adjustment)
Definition SID.cpp:168
void setPaddle(uint8_t x, uint8_t y)
Definition SID.cpp:611
ChipModel getChipModel() const
Definition SID.h:192
void clockDigital(unsigned int cycles)
Definition SID.cpp:546
uint8_t read(int offset)
Definition SID.cpp:365
void setCombinedWaveforms(CombinedWaveforms cws)
Definition SID.cpp:293
void setFilter6581Curve(double filterCurve)
Definition SID.cpp:162
void setFilter8580Curve(double filterCurve)
Definition SID.cpp:174
void enableOld6581caps(bool enable)
Definition SID.cpp:186
void enableFilter(bool enable)
Definition SID.cpp:180
void reset()
Definition SID.cpp:317
void write(int offset, uint8_t value)
Definition SID.cpp:400
void clockSilent(unsigned int cycles)
Definition SID.cpp:577
SamplingMethod
Definition residfp_defs.h:67
CombinedWaveforms
Definition residfp_defs.h:62
ChipModel
Definition residfp_defs.h:54