From 8c931fd1e8c0ced874f4cb5fe77197b39b940528 Mon Sep 17 00:00:00 2001 From: Max Horn Date: Mon, 28 Mar 2011 18:06:24 +0200 Subject: AUDIO: Add Audio::MidiPlayer::createDriver(), let some engines use it --- audio/midiplayer.cpp | 11 +++++++++++ audio/midiplayer.h | 3 +++ engines/agi/sound_midi.cpp | 11 +---------- engines/draci/music.cpp | 9 +-------- engines/m4/midi.cpp | 8 +------- engines/made/music.cpp | 9 +-------- engines/saga/music.cpp | 8 ++------ engines/saga/music.h | 2 +- engines/sky/music/gmmusic.cpp | 4 ++-- engines/tinsel/music.cpp | 9 +-------- 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) { -- cgit v1.2.3