40 typedef short (
Mixer::*mixer_func_t)()
const;
47 std::vector<sidemu*> m_chips;
48 std::vector<short*> m_buffers;
50 std::vector<int_least32_t> m_iSamples;
51 std::vector<int_least32_t> m_volume;
53 std::vector<mixer_func_t> m_mix;
56 int m_fastForwardFactor;
59 short *m_sampleBuffer;
60 uint_least32_t m_sampleCount;
61 uint_least32_t m_sampleIndex;
68 int triangularDithering()
70 const int prevValue = oldRandomValue;
72 return oldRandomValue - prevValue;
75 short channel1MonoMix()
const {
return static_cast<short>((m_iSamples[0] + m_iSamples[1]) / 2); }
76 short channel1StereoMix()
const {
return static_cast<short>(m_iSamples[0]); }
78 short channel2FromMonoMix()
const {
return static_cast<short>(m_iSamples[0]); }
79 short channel2FromStereoMix()
const {
return static_cast<short>(m_iSamples[1]); }
89 m_fastForwardFactor(1),
93 m_mix.push_back(&Mixer::channel1MonoMix);
117 void begin(
short *buffer, uint_least32_t count);
137 sidemu*
getSid(
unsigned int i)
const {
return (i < m_chips.size()) ? m_chips[i] : 0; }
153 void setVolume(int_least32_t left, int_least32_t right);
165 bool notFinished()
const {
return m_sampleIndex != m_sampleCount; }
void clockChips()
Definition: mixer.cpp:59
static const int_least32_t VOLUME_MAX
Definition: mixer.h:44
void setStereo(bool stereo)
Definition: mixer.cpp:160
bool notFinished() const
Definition: mixer.h:165
bool setFastForward(int ff)
Definition: mixer.cpp:172
void setVolume(int_least32_t left, int_least32_t right)
Definition: mixer.cpp:181
uint_least32_t samplesGenerated() const
Definition: mixer.h:170
void doMix()
Definition: mixer.cpp:69
Mixer()
Definition: mixer.h:87
void addSid(sidemu *chip)
Definition: mixer.cpp:146
sidemu * getSid(unsigned int i) const
Definition: mixer.h:137
void clearSids()
Definition: mixer.cpp:140
void begin(short *buffer, uint_least32_t count)
Definition: mixer.cpp:126
void resetBufs()
Definition: mixer.cpp:64