32#include "siddefs-fp.h"
33#include "ExternalFilter.h"
56 const char* getMessage()
const {
return message; }
72 Filter8580*
const filter8580;
75 std::unique_ptr<Resampler> resampler;
96 unsigned int nextVoiceSync;
105 unsigned char busValue;
127 void ageBusValue(
unsigned int n);
135 void voiceSync(
bool sync);
138 inline void clockWaveGen()
140 voice[0].wave()->
clock();
141 voice[1].wave()->
clock();
142 voice[2].wave()->
clock();
146 inline void clockEnvGen()
148 voice[0].envelope()->
clock();
149 voice[1].envelope()->
clock();
150 voice[2].envelope()->
clock();
154 inline int clockFilt()
156 unsigned short filtOutput = filter->
clock(voice[0], voice[1], voice[2]);
157 int exFiltInput =
static_cast<int>(filtOutput) + INT16_MIN;
158 return externalFilter.
clock(exFiltInput);
163 SID& operator=(
const SID&) =
delete;
203 void input(
int value);
225 unsigned char read(
int offset);
233 void write(
int offset,
unsigned char value);
260 double clockFrequency,
262 double samplingFrequency
272 int clock(
unsigned int cycles,
short* buf);
281 int clock(
short* buf,
int bufSize);
331#if RESIDFP_INLINING || defined(SID_CPP)
335#include "resample/Resampler.h"
341void SID::ageBusValue(
unsigned int n)
343 if (likely(busValueTtl != 0))
347 if (unlikely(busValueTtl <= 0))
365 unsigned int delta_t = std::min(nextVoiceSync, cycles);
367 if (likely(delta_t > 0))
369 for (
unsigned int i = 0; i < delta_t; i++)
374 int output = clockFilt();
375 if (unlikely(resampler->input(output)))
377 buf[s++] = resampler->getOutput(scaleFactor);
382 nextVoiceSync -= delta_t;
385 if (unlikely(nextVoiceSync == 0))
402 for (
int s = 0; s < bufSize;)
404 unsigned int delta_t = nextVoiceSync;
406 if (likely(delta_t > 0))
415 int output = clockFilt();
416 if (unlikely(resampler->input(output)))
418 buf[s++] = resampler->getOutput(scaleFactor);
419 if (unlikely(s == bufSize))
431 if (likely(nextVoiceSync == 0))
void clock()
Definition EnvelopeGenerator.h:177
Definition ExternalFilter.h:85
int clock(int input)
Definition ExternalFilter.h:132
Definition Filter6581.h:321
unsigned short clock(Voice &voice1, Voice &voice2, Voice &voice3)
Definition Filter.h:214
int clock(unsigned int cycles, short *buf)
Definition SID.h:356
void setChipModel(ChipModel model)
Definition SID.cpp:221
void input(int value)
Definition SID.cpp:331
unsigned char read(int offset)
Definition SID.cpp:337
void write(int offset, unsigned char value)
Definition SID.cpp:372
void setSamplingParameters(double clockFrequency, SamplingMethod method, double samplingFrequency)
Definition SID.cpp:491
void setFilter6581Range(double adjustment)
Definition SID.cpp:166
ChipModel getChipModel() const
Definition SID.h:180
void setCombinedWaveforms(CombinedWaveforms cws)
Definition SID.cpp:286
void setFilter6581Curve(double filterCurve)
Definition SID.cpp:161
void setFilter8580Curve(double filterCurve)
Definition SID.cpp:171
void enableOld6581caps(bool enable)
Definition SID.cpp:182
void enableFilter(bool enable)
Definition SID.cpp:176
void reset()
Definition SID.cpp:310
void clockSilent(unsigned int cycles)
Definition SID.cpp:514
SamplingMethod
Definition residfp_defs.h:67
CombinedWaveforms
Definition residfp_defs.h:62
ChipModel
Definition residfp_defs.h:54