aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMax Horn2011-03-28 18:06:24 +0200
committerMax Horn2011-03-28 18:06:36 +0200
commit8c931fd1e8c0ced874f4cb5fe77197b39b940528 (patch)
tree798b30acf547ec6a277b5063978d99f34a1df2d0
parenta33ee051d05ffc5e30e4fc4728714128028e89b1 (diff)
downloadscummvm-rg350-8c931fd1e8c0ced874f4cb5fe77197b39b940528.tar.gz
scummvm-rg350-8c931fd1e8c0ced874f4cb5fe77197b39b940528.tar.bz2
scummvm-rg350-8c931fd1e8c0ced874f4cb5fe77197b39b940528.zip
AUDIO: Add Audio::MidiPlayer::createDriver(), let some engines use it
-rw-r--r--audio/midiplayer.cpp11
-rw-r--r--audio/midiplayer.h3
-rw-r--r--engines/agi/sound_midi.cpp11
-rw-r--r--engines/draci/music.cpp9
-rw-r--r--engines/m4/midi.cpp8
-rw-r--r--engines/made/music.cpp9
-rw-r--r--engines/saga/music.cpp8
-rw-r--r--engines/saga/music.h2
-rw-r--r--engines/sky/music/gmmusic.cpp4
-rw-r--r--engines/tinsel/music.cpp9
10 files changed, 24 insertions, 50 deletions
diff --git a/audio/midiplayer.cpp b/audio/midiplayer.cpp
index 613ad2eddd..f4a13a0438 100644
--- a/audio/midiplayer.cpp
+++ b/audio/midiplayer.cpp
@@ -61,6 +61,17 @@ MidiPlayer::~MidiPlayer() {
}
}
+void MidiPlayer::createDriver(int flags) {
+ MidiDriver::DeviceHandle dev = MidiDriver::detectDevice(flags);
+ _nativeMT32 = ((MidiDriver::getMusicType(dev) == MT_MT32) || ConfMan.getBool("native_mt32"));
+
+ _driver = MidiDriver::createMidi(dev);
+ assert(_driver);
+ if (_nativeMT32)
+ _driver->property(MidiDriver::PROP_CHANNEL_MASK, 0x03FE);
+}
+
+
void MidiPlayer::setVolume(int volume) {
volume = CLIP(volume, 0, 255);
if (_masterVolume == volume)
diff --git a/audio/midiplayer.h b/audio/midiplayer.h
index fe96e0d5e2..0cf373d646 100644
--- a/audio/midiplayer.h
+++ b/audio/midiplayer.h
@@ -142,6 +142,9 @@ protected:
static void timerCallback(void *data);
+ void createDriver(int flags = MDT_MIDI | MDT_ADLIB | MDT_PREFER_GM);
+
+protected:
enum {
/**
* The number of MIDI channels supported.
diff --git a/engines/agi/sound_midi.cpp b/engines/agi/sound_midi.cpp
index ff23a70808..986715721f 100644
--- a/engines/agi/sound_midi.cpp
+++ b/engines/agi/sound_midi.cpp
@@ -72,16 +72,7 @@ MIDISound::MIDISound(uint8 *data, uint32 len, int resnum, SoundMgr &manager) : A
}
SoundGenMIDI::SoundGenMIDI(AgiEngine *vm, Audio::Mixer *pMixer) : SoundGen(vm, pMixer), _isGM(false) {
- MidiDriver::DeviceHandle dev = MidiDriver::detectDevice(MDT_MIDI | MDT_ADLIB);
- _driver = MidiDriver::createMidi(dev);
- assert(_driver);
-
- if (ConfMan.getBool("native_mt32") || MidiDriver::getMusicType(dev) == MT_MT32) {
- _nativeMT32 = true;
- _driver->property(MidiDriver::PROP_CHANNEL_MASK, 0x03FE);
- } else {
- _nativeMT32 = false;
- }
+ MidiPlayer::createDriver(MDT_MIDI | MDT_ADLIB);
int ret = _driver->open();
if (ret == 0) {
diff --git a/engines/draci/music.cpp b/engines/draci/music.cpp
index 242e58e92c..750410b329 100644
--- a/engines/draci/music.cpp
+++ b/engines/draci/music.cpp
@@ -38,14 +38,7 @@ namespace Draci {
MusicPlayer::MusicPlayer(const char *pathMask) : _pathMask(pathMask), _isGM(false), _track(-1) {
- MidiDriver::DeviceHandle dev = MidiDriver::detectDevice(MDT_MIDI | MDT_ADLIB | MDT_PREFER_GM);
- _nativeMT32 = ((MidiDriver::getMusicType(dev) == MT_MT32) || ConfMan.getBool("native_mt32"));
- //bool adlib = (MidiDriver::getMusicType(dev) == MT_ADLIB);
-
- _driver = MidiDriver::createMidi(dev);
- assert(_driver);
- if (_nativeMT32)
- _driver->property(MidiDriver::PROP_CHANNEL_MASK, 0x03FE);
+ MidiPlayer::createDriver();
int ret = _driver->open();
if (ret == 0) {
diff --git a/engines/m4/midi.cpp b/engines/m4/midi.cpp
index d58b92bf01..e49dbfa2e7 100644
--- a/engines/m4/midi.cpp
+++ b/engines/m4/midi.cpp
@@ -36,13 +36,7 @@ namespace M4 {
MidiPlayer::MidiPlayer(MadsM4Engine *vm) : _vm(vm), _isGM(false) {
- MidiDriver::DeviceHandle dev = MidiDriver::detectDevice(MDT_MIDI | MDT_ADLIB | MDT_PREFER_GM);
- _nativeMT32 = ((MidiDriver::getMusicType(dev) == MT_MT32) || ConfMan.getBool("native_mt32"));
-
- _driver = MidiDriver::createMidi(dev);
- assert(_driver);
- if (_nativeMT32)
- _driver->property(MidiDriver::PROP_CHANNEL_MASK, 0x03FE);
+ MidiPlayer::createDriver();
int ret = _driver->open();
if (ret == 0) {
diff --git a/engines/made/music.cpp b/engines/made/music.cpp
index c8b13ba210..2e06871e13 100644
--- a/engines/made/music.cpp
+++ b/engines/made/music.cpp
@@ -38,14 +38,7 @@
namespace Made {
MusicPlayer::MusicPlayer() : _isGM(false) {
- MidiDriver::DeviceHandle dev = MidiDriver::detectDevice(MDT_MIDI | MDT_ADLIB | MDT_PREFER_GM);
- _nativeMT32 = ((MidiDriver::getMusicType(dev) == MT_MT32) || ConfMan.getBool("native_mt32"));
- //bool adlib = (MidiDriver::getMusicType(dev) == MT_ADLIB);
-
- _driver = MidiDriver::createMidi(dev);
- assert(_driver);
- if (_nativeMT32)
- _driver->property(MidiDriver::PROP_CHANNEL_MASK, 0x03FE);
+ MidiPlayer::createDriver();
int ret = _driver->open();
if (ret == 0) {
diff --git a/engines/saga/music.cpp b/engines/saga/music.cpp
index 90e3529472..eb0a911555 100644
--- a/engines/saga/music.cpp
+++ b/engines/saga/music.cpp
@@ -45,14 +45,10 @@ namespace Saga {
MusicDriver::MusicDriver() : _isGM(false) {
- MidiDriver::DeviceHandle dev = MidiDriver::detectDevice(MDT_MIDI | MDT_ADLIB | MDT_PREFER_GM);
- _nativeMT32 = ((MidiDriver::getMusicType(dev) == MT_MT32) || ConfMan.getBool("native_mt32"));
+ MidiPlayer::createDriver();
- _driver = MidiDriver::createMidi(dev);
- assert(_driver);
+ MidiDriver::DeviceHandle dev = MidiDriver::detectDevice(MDT_MIDI | MDT_ADLIB | MDT_PREFER_GM);
_driverType = MidiDriver::getMusicType(dev);
- if (_nativeMT32)
- _driver->property(MidiDriver::PROP_CHANNEL_MASK, 0x03FE);
int retValue = _driver->open();
if (retValue == 0) {
diff --git a/engines/saga/music.h b/engines/saga/music.h
index 29b6e8fe76..465d61e366 100644
--- a/engines/saga/music.h
+++ b/engines/saga/music.h
@@ -52,7 +52,7 @@ public:
virtual void pause();
virtual void resume();
- bool isAdlib() { return _driverType == MT_ADLIB; }
+ bool isAdlib() const { return _driverType == MT_ADLIB; }
// FIXME
bool isPlaying() const { return _parser && _parser->isPlaying(); }
diff --git a/engines/sky/music/gmmusic.cpp b/engines/sky/music/gmmusic.cpp
index 22964f3f56..8818c5b711 100644
--- a/engines/sky/music/gmmusic.cpp
+++ b/engines/sky/music/gmmusic.cpp
@@ -53,8 +53,8 @@ GmMusic::~GmMusic() {
stopMusic();
// Send All Sound Off and All Notes Off (for external synths)
for (int i = 0; i < 16; i++) {
- _midiDrv->send ((120 << 8) | 0xB0 | i);
- _midiDrv->send ((123 << 8) | 0xB0 | i);
+ _midiDrv->send((120 << 8) | 0xB0 | i);
+ _midiDrv->send((123 << 8) | 0xB0 | i);
}
_midiDrv->close();
delete _midiDrv;
diff --git a/engines/tinsel/music.cpp b/engines/tinsel/music.cpp
index 3b9833b418..ea5d88ce1c 100644
--- a/engines/tinsel/music.cpp
+++ b/engines/tinsel/music.cpp
@@ -387,14 +387,7 @@ void DeleteMidiBuffer() {
}
MidiMusicPlayer::MidiMusicPlayer() {
- MidiDriver::DeviceHandle dev = MidiDriver::detectDevice(MDT_MIDI | MDT_ADLIB | MDT_PREFER_GM);
- _nativeMT32 = ((MidiDriver::getMusicType(dev) == MT_MT32) || ConfMan.getBool("native_mt32"));
- //bool adlib = (MidiDriver::getMusicType(dev) == MT_ADLIB);
-
- _driver = MidiDriver::createMidi(dev);
- assert(_driver);
- if (_nativeMT32)
- _driver->property(MidiDriver::PROP_CHANNEL_MASK, 0x03FE);
+ MidiPlayer::createDriver();
int ret = _driver->open();
if (ret == 0) {