diff options
-rw-r--r-- | sound/imuse.cpp | 6 | ||||
-rw-r--r-- | sound/mididrv.cpp | 14 |
2 files changed, 16 insertions, 4 deletions
diff --git a/sound/imuse.cpp b/sound/imuse.cpp index c34a8a5efc..7d609a9902 100644 --- a/sound/imuse.cpp +++ b/sound/imuse.cpp @@ -560,7 +560,7 @@ public: #ifdef _WIN32_WCE return 0x1F0000 * 2; // Sampled down to 11 kHz #else //_WIN32_WCE - return 0x1924E0; + return 0x1F0000; // Was: 0x1924E0; #endif //_WIN32_WCE } @@ -618,7 +618,7 @@ public: static int midi_driver_thread(void *param); - uint32 get_base_tempo() { return 0x400000; } + uint32 get_base_tempo() { return 0x460000; } byte get_hardware_type() { return 5; } }; @@ -1348,7 +1348,7 @@ int32 IMuseInternal::do_command(int a, int b, int c, int d, int e, int f, int g, return stop_all_sounds(); case 13: return get_sound_status(b); - case 14: + case 14: return stop_sound(b); //FIXME should be something like fade off case 16: return set_volchan(b, c); diff --git a/sound/mididrv.cpp b/sound/mididrv.cpp index 3623f34040..2400248fae 100644 --- a/sound/mididrv.cpp +++ b/sound/mididrv.cpp @@ -219,9 +219,21 @@ void MidiDriver_WIN::close() { } void MidiDriver_WIN::send(uint32 b) { + union { + DWORD dwData; + BYTE bData[4]; + } u; + if (_mode != MO_SIMPLE) error("MidiDriver_WIN:send called but driver is not in simple mode"); - check_error(midiOutShortMsg(_mo, b)); + + u.bData[3] = (byte)((b & 0xFF000000) >> 24); + u.bData[2] = (byte)((b & 0x00FF0000) >> 16); + u.bData[1] = (byte)((b & 0x0000FF00) >> 8); + u.bData[0] = (byte)(b & 0x000000FF); + + //printMidi(u.bData[0], u.bData[1], u.bData[2], u.bData[3]); + check_error(midiOutShortMsg(_mo, u.dwData)); } void MidiDriver_WIN::pause(bool pause) { |