44 typedef int_least32_t (
Mixer::*mixer_func_t)()
const;
51 std::vector<sidemu*> m_chips;
52 std::vector<short*> m_buffers;
54 std::vector<int_least32_t> m_iSamples;
55 std::vector<int_least32_t> m_volume;
57 std::vector<mixer_func_t> m_mix;
60 int m_fastForwardFactor;
63 short *m_sampleBuffer;
64 uint_least32_t m_sampleCount;
65 uint_least32_t m_sampleIndex;
72 int triangularDithering()
74 const int prevValue = oldRandomValue;
75 oldRandomValue = rand() & (VOLUME_MAX-1);
76 return oldRandomValue - prevValue;
79 int_least32_t channel1MonoMix()
const {
return (m_iSamples[0] + m_iSamples[1]) / 2; }
80 int_least32_t channel1StereoMix()
const {
return m_iSamples[0]; }
82 int_least32_t channel2FromMonoMix()
const {
return m_iSamples[0]; }
83 int_least32_t channel2FromStereoMix()
const {
return m_iSamples[1]; }
91 m_fastForwardFactor(1),
95 m_mix.push_back(&Mixer::channel1MonoMix);
119 void begin(
short *buffer, uint_least32_t count);
139 sidemu*
getSid(
unsigned int i)
const {
return (i < m_chips.size()) ? m_chips[i] : 0; }
155 void setVolume(int_least32_t left, int_least32_t right);
167 bool notFinished()
const {
return m_sampleIndex != m_sampleCount; }
static const unsigned int MAX_SIDS
Maximum number of supported SIDs.
Definition: mixer.h:41
void clockChips()
Definition: mixer.cpp:59
static const int_least32_t VOLUME_MAX
Maximum allowed volume, must be a power of 2.
Definition: mixer.h:48
void setStereo(bool stereo)
Definition: mixer.cpp:159
bool notFinished() const
Definition: mixer.h:167
bool setFastForward(int ff)
Definition: mixer.cpp:171
void setVolume(int_least32_t left, int_least32_t right)
Definition: mixer.cpp:180
uint_least32_t samplesGenerated() const
Definition: mixer.h:172
void doMix()
Definition: mixer.cpp:69
Mixer()
Definition: mixer.h:89
void addSid(sidemu *chip)
Definition: mixer.cpp:145
sidemu * getSid(unsigned int i) const
Definition: mixer.h:139
void clearSids()
Definition: mixer.cpp:139
void begin(short *buffer, uint_least32_t count)
Definition: mixer.cpp:125
void resetBufs()
Definition: mixer.cpp:64