mirror of
https://github.com/libretro/scummvm.git
synced 2025-04-02 06:41:51 +00:00
AUDIO: Add Audio::MidiPlayer::createDriver(), let some engines use it
This commit is contained in:
parent
a33ee051d0
commit
8c931fd1e8
@ -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)
|
||||
|
@ -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.
|
||||
|
@ -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) {
|
||||
|
@ -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) {
|
||||
|
@ -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) {
|
||||
|
@ -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) {
|
||||
|
@ -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) {
|
||||
|
@ -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(); }
|
||||
|
@ -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;
|
||||
|
@ -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) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user