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);
146 void voiceSync(
bool sync);
186 void input(
int value);
208 unsigned char read(
int offset);
216 void write(
int offset,
unsigned char value);
244 double clockFrequency,
245 SamplingMethod method,
246 double samplingFrequency
256 int clock(
unsigned int cycles,
short* buf);
301 #if RESID_INLINING || defined(SID_CPP)
306 #include "ExternalFilter.h"
308 #include "resample/Resampler.h"
314 void SID::ageBusValue(
unsigned int n)
316 if (likely(busValueTtl != 0))
320 if (unlikely(busValueTtl <= 0))
331 const float o1 = voice[0].
output(voice[2].wave());
332 const float o2 = voice[1].
output(voice[0].wave());
333 const float o3 = voice[2].
output(voice[1].wave());
335 const unsigned int env1 = voice[0].envelope()->
output();
336 const unsigned int env2 = voice[1].envelope()->
output();
337 const unsigned int env3 = voice[2].envelope()->
output();
339 const int v1 = filter->getNormalizedVoice(o1, env1);
340 const int v2 = filter->getNormalizedVoice(o2, env2);
341 const int v3 = filter->getNormalizedVoice(o3, env3);
343 const int input =
static_cast<int>(filter->
clock(v1, v2, v3));
356 unsigned int delta_t = std::min(nextVoiceSync, cycles);
358 if (likely(delta_t > 0))
360 for (
unsigned int i = 0; i < delta_t; i++)
363 voice[0].wave()->
clock();
364 voice[1].wave()->
clock();
365 voice[2].wave()->
clock();
368 voice[0].envelope()->
clock();
369 voice[1].envelope()->
clock();
370 voice[2].envelope()->
clock();
372 if (unlikely(resampler->input(output())))
374 buf[s++] = resampler->getOutput(scaleFactor);
379 nextVoiceSync -= delta_t;
382 if (unlikely(nextVoiceSync == 0))
unsigned int output() const
Definition: EnvelopeGenerator.h:130
void clock()
Definition: EnvelopeGenerator.h:177
Definition: ExternalFilter.h:66
int clock(int input)
Definition: ExternalFilter.h:112
Definition: Filter6581.h:321
virtual unsigned short clock(int v1, int v2, int v3)=0
Definition: Potentiometer.h:38
void setChipModel(ChipModel model)
Definition: SID.cpp:207
void input(int value)
Definition: SID.cpp:317
unsigned char read(int offset)
Definition: SID.cpp:323
void write(int offset, unsigned char value)
Definition: SID.cpp:358
void setSamplingParameters(double clockFrequency, SamplingMethod method, double samplingFrequency)
Definition: SID.cpp:477
void setFilter6581Range(double adjustment)
Definition: SID.cpp:157
ChipModel getChipModel() const
Definition: SID.h:163
void setCombinedWaveforms(CombinedWaveforms cws)
Definition: SID.cpp:272
void setFilter6581Curve(double filterCurve)
Definition: SID.cpp:152
void setFilter8580Curve(double filterCurve)
Definition: SID.cpp:162
void enableFilter(bool enable)
Definition: SID.cpp:167
void reset()
Definition: SID.cpp:296
int clock(unsigned int cycles, short *buf)
Definition: SID.h:349
void clockSilent(unsigned int cycles)
Definition: SID.cpp:496
RESID_INLINE float output(const WaveformGenerator *ringModulator)
Definition: Voice.h:66