diff options
| author | Max Horn | 2011-03-28 18:06:24 +0200 | 
|---|---|---|
| committer | Max Horn | 2011-03-28 18:06:36 +0200 | 
| commit | 8c931fd1e8c0ced874f4cb5fe77197b39b940528 (patch) | |
| tree | 798b30acf547ec6a277b5063978d99f34a1df2d0 | |
| parent | a33ee051d05ffc5e30e4fc4728714128028e89b1 (diff) | |
| download | scummvm-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.cpp | 11 | ||||
| -rw-r--r-- | audio/midiplayer.h | 3 | ||||
| -rw-r--r-- | engines/agi/sound_midi.cpp | 11 | ||||
| -rw-r--r-- | engines/draci/music.cpp | 9 | ||||
| -rw-r--r-- | engines/m4/midi.cpp | 8 | ||||
| -rw-r--r-- | engines/made/music.cpp | 9 | ||||
| -rw-r--r-- | engines/saga/music.cpp | 8 | ||||
| -rw-r--r-- | engines/saga/music.h | 2 | ||||
| -rw-r--r-- | engines/sky/music/gmmusic.cpp | 4 | ||||
| -rw-r--r-- | 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) {  | 
