diff options
Diffstat (limited to 'audio/softsynth')
| -rw-r--r-- | audio/softsynth/cms.cpp | 16 | ||||
| -rw-r--r-- | audio/softsynth/emumidi.h | 6 |
2 files changed, 10 insertions, 12 deletions
diff --git a/audio/softsynth/cms.cpp b/audio/softsynth/cms.cpp index 67eacd1a41..a675da3f03 100644 --- a/audio/softsynth/cms.cpp +++ b/audio/softsynth/cms.cpp @@ -163,19 +163,15 @@ void CMSEmulator::update(int chip, int16 *buffer, int length) { struct SAA1099 *saa = &_saa1099[chip]; int j, ch; + if (chip == 0) { + memset(buffer, 0, sizeof(int16)*length*2); + } + /* if the channels are disabled we're done */ if (!saa->all_ch_enable) { - /* init output data */ - if (chip == 0) { - memset(buffer, 0, sizeof(int16)*length*2); - } return; } - if (chip == 0) { - memset(buffer, 0, sizeof(int16)*length*2); - } - for (ch = 0; ch < 2; ch++) { switch (saa->noise_params[ch]) { case 0: saa->noise[ch].freq = 31250.0 * 2; break; @@ -244,8 +240,8 @@ void CMSEmulator::update(int chip, int16 *buffer, int length) { } } /* write sound data to the buffer */ - buffer[j*2] += output_l / 6; - buffer[j*2+1] += output_r / 6; + buffer[j*2+0] = CLIP<int>(buffer[j*2+0] + output_l / 6, -32768, 32767); + buffer[j*2+1] = CLIP<int>(buffer[j*2+1] + output_r / 6, -32768, 32767); } } diff --git a/audio/softsynth/emumidi.h b/audio/softsynth/emumidi.h index f3d7645f87..f72dad7eaf 100644 --- a/audio/softsynth/emumidi.h +++ b/audio/softsynth/emumidi.h @@ -26,8 +26,6 @@ #include "audio/mididrv.h" #include "audio/mixer.h" -#define FIXP_SHIFT 16 - class MidiDriver_Emulated : public Audio::AudioStream, public MidiDriver { protected: bool _isOpen; @@ -38,6 +36,10 @@ private: Common::TimerManager::TimerProc _timerProc; void *_timerParam; + enum { + FIXP_SHIFT = 16 + }; + int _nextTick; int _samplesPerTick; |
