aboutsummaryrefslogtreecommitdiff
path: root/audio
diff options
context:
space:
mode:
Diffstat (limited to 'audio')
-rw-r--r--audio/midiplayer.cpp11
-rw-r--r--audio/midiplayer.h3
2 files changed, 14 insertions, 0 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.