diff --git a/src/gui/midi.cpp b/src/gui/midi.cpp index 989912ba..ce4647fb 100644 --- a/src/gui/midi.cpp +++ b/src/gui/midi.cpp @@ -25,6 +25,7 @@ #include "SDL.h" #include "dosbox.h" +#include "midi.h" #include "cross.h" #include "support.h" #include "setup.h" @@ -33,7 +34,6 @@ #include "hardware.h" #include "timer.h" -#define SYSEX_SIZE 1024 #define RAWBUF 1024 Bit8u MIDI_evt_len[256] = { @@ -59,23 +59,11 @@ Bit8u MIDI_evt_len[256] = { 0,2,3,2, 0,0,1,0, 1,0,1,1, 1,0,1,0 // 0xf0 }; -class MidiHandler; +MidiHandler * handler_list = 0; -MidiHandler * handler_list=0; - -class MidiHandler { -public: - MidiHandler() { - next=handler_list; - handler_list=this; - }; - virtual bool Open(const char * /*conf*/) { return true; }; - virtual void Close(void) {}; - virtual void PlayMsg(Bit8u * /*msg*/) {}; - virtual void PlaySysex(Bit8u * /*sysex*/,Bitu /*len*/) {}; - virtual const char * GetName(void) { return "none"; }; - virtual ~MidiHandler() { }; - MidiHandler * next; +MidiHandler::MidiHandler(){ + next = handler_list; + handler_list = this; }; MidiHandler Midi_none; @@ -103,21 +91,7 @@ MidiHandler Midi_none; #endif -static struct { - Bitu status; - Bitu cmd_len; - Bitu cmd_pos; - Bit8u cmd_buf[8]; - Bit8u rt_buf[8]; - struct { - Bit8u buf[SYSEX_SIZE]; - Bitu used; - Bitu delay; - Bit32u start; - } sysex; - bool available; - MidiHandler * handler; -} midi; +DB_Midi midi; void MIDI_RawOutByte(Bit8u data) { if (midi.sysex.start) { diff --git a/src/gui/midi_win32.h b/src/gui/midi_win32.h index 47c97e17..44cefd79 100644 --- a/src/gui/midi_win32.h +++ b/src/gui/midi_win32.h @@ -87,6 +87,14 @@ public: return; } } + void ListAll(Program* base) { + unsigned int total = midiOutGetNumDevs(); + for(unsigned int i = 0;i < total;i++) { + MIDIOUTCAPS mididev; + midiOutGetDevCaps(i, &mididev, sizeof(MIDIOUTCAPS)); + base->WriteOut("%2d\t \"%s\"\n",i,mididev.szPname); + } + } }; MidiHandler_win32 Midi_win32; diff --git a/src/hardware/mixer.cpp b/src/hardware/mixer.cpp index d611d4fb..c708f874 100644 --- a/src/hardware/mixer.cpp +++ b/src/hardware/mixer.cpp @@ -47,6 +47,7 @@ #include "mapper.h" #include "hardware.h" #include "programs.h" +#include "midi.h" #define MIXER_SSIZE 4 #define MIXER_SHIFT 14 @@ -577,15 +578,7 @@ private: } void ListMidi(){ -#if defined (WIN32) - unsigned int total = midiOutGetNumDevs(); - for(unsigned int i=0;iListAll(this); }; };