mirror of
https://github.com/ZDoom/raze-gles.git
synced 2025-01-13 19:40:43 +00:00
7b0104e9a1
git-svn-id: https://svn.eduke32.com/eduke32@452 1a8010ca-5511-0410-912e-c29ae57300e0
75 lines
1.6 KiB
C++
Executable file
75 lines
1.6 KiB
C++
Executable file
#ifndef __midisynth_win32_hpp__
|
|
#define __midisynth_win32_hpp__
|
|
|
|
#include "midisynth.hpp"
|
|
|
|
class MidiSynth_Win32;
|
|
|
|
struct hdrtyp {
|
|
MIDIHDR header;
|
|
int n;
|
|
MidiSynth_Win32 *synth;
|
|
};
|
|
|
|
#define STREAMBUFLEN 256 // *4 = 4K of event data per quarter note
|
|
|
|
class MidiSynth_Win32 : public JFAudMidiSynth {
|
|
private:
|
|
bool loop, paused, justpaused;
|
|
|
|
HMIDISTRM streamhnd;
|
|
struct hdrtyp headers[2];
|
|
DWORD bufdata[2][STREAMBUFLEN], buffullness[2];
|
|
int buffersplaying;
|
|
|
|
MidiSequencer *seq;
|
|
MidiSequencer::EMIDIDevice devtype;
|
|
|
|
unsigned evtdelta, evtlength;
|
|
unsigned char evtcommand;
|
|
unsigned char const *evtdata;
|
|
int bufferdata(int num);
|
|
|
|
bool Reset(bool stop = true);
|
|
void StopAllNotes(void);
|
|
|
|
// for threaded buffering
|
|
HANDLE threadhnd; DWORD threadid;
|
|
CRITICAL_SECTION mutex;
|
|
static DWORD WINAPI BufThread(class MidiSynth_Win32 *myself);
|
|
|
|
// for callback notification
|
|
static void CALLBACK midiCallback(HMIDIOUT handle, UINT uMsg, DWORD dwInstance, DWORD dwParam1, DWORD dwParam2);
|
|
|
|
// used internally by both thread and callback
|
|
void _BufferDone(int n);
|
|
bool _Update();
|
|
void Lock();
|
|
void Unlock();
|
|
protected:
|
|
public:
|
|
MidiSynth_Win32();
|
|
virtual ~MidiSynth_Win32();
|
|
|
|
virtual bool Open(const char *dev);
|
|
virtual bool Close(void);
|
|
virtual bool Update(void);
|
|
static char **Enumerate(char **def);
|
|
|
|
virtual bool SetMedia(MidiSequencer *);
|
|
|
|
virtual bool Play(void);
|
|
virtual bool Stop(void);
|
|
virtual bool Pause(void);
|
|
virtual bool Resume(void);
|
|
|
|
virtual bool SetLoop(bool onf);
|
|
virtual bool GetLoop(void) const;
|
|
|
|
};
|
|
|
|
#ifndef _INC_MMSYSTEM
|
|
# undef DWORD
|
|
#endif
|
|
|
|
#endif
|