[Scummvm-cvs-logs] CVS: scummvm/backends/midi emumidi.h,1.4,1.5
Eugene Sandulenko
sev at users.sourceforge.net
Sat Oct 23 13:34:01 CEST 2004
Update of /cvsroot/scummvm/scummvm/backends/midi
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv8884
Modified Files:
emumidi.h
Log Message:
o Turn BASE_FREQ constant into variable. MT-32 has to be run in lesser time slices.
o Attempt to fix mi2, but that cure for symptom, not the cause. Under dosbox header is always valid, but here we get 0x41001612 instead of 0x41101612.
Index: emumidi.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/backends/midi/emumidi.h,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -d -r1.4 -r1.5
--- emumidi.h 19 Oct 2004 23:03:04 -0000 1.4
+++ emumidi.h 23 Oct 2004 20:33:39 -0000 1.5
@@ -23,7 +23,6 @@
#include "sound/mididrv.h"
#include "sound/mixer.h"
-#define BASE_FREQ 250
#define FIXP_SHIFT 16
class MidiDriver_Emulated : public AudioStream, public MidiDriver {
@@ -42,6 +41,8 @@
virtual void generate_samples(int16 *buf, int len) = 0;
virtual void on_timer() {}
+ int _baseFreq;
+
public:
MidiDriver_Emulated(SoundMixer *mixer) : _mixer(mixer) {
_isOpen = false;
@@ -51,18 +52,20 @@
_next_tick = 0;
_samples_per_tick = 0;
+
+ _baseFreq = 250;
}
int open() {
_isOpen = true;
- int d = getRate() / BASE_FREQ;
- int r = getRate() % BASE_FREQ;
+ int d = getRate() / _baseFreq;
+ int r = getRate() % _baseFreq;
// This is equivalent to (getRate() << FIXP_SHIFT) / BASE_FREQ
// but less prone to arithmetic overflow.
- _samples_per_tick = (d << FIXP_SHIFT) + (r << FIXP_SHIFT) / BASE_FREQ;
+ _samples_per_tick = (d << FIXP_SHIFT) + (r << FIXP_SHIFT) / _baseFreq;
return 0;
}
@@ -71,7 +74,7 @@
_timer_param = timer_param;
}
- uint32 getBaseTempo() { return 1000000 / BASE_FREQ; }
+ uint32 getBaseTempo() { return 1000000 / _baseFreq; }
// AudioStream API
More information about the Scummvm-git-logs
mailing list