aboutsummaryrefslogtreecommitdiff
path: root/Src/Plugins/Input/in_midi/seq.h
diff options
context:
space:
mode:
Diffstat (limited to 'Src/Plugins/Input/in_midi/seq.h')
-rw-r--r--Src/Plugins/Input/in_midi/seq.h75
1 files changed, 75 insertions, 0 deletions
diff --git a/Src/Plugins/Input/in_midi/seq.h b/Src/Plugins/Input/in_midi/seq.h
new file mode 100644
index 00000000..eefc5b6f
--- /dev/null
+++ b/Src/Plugins/Input/in_midi/seq.h
@@ -0,0 +1,75 @@
+#define SEQ_HAVE_PANEL
+
+class seq_base : public player_base
+{
+protected:
+
+
+ int seq_cmd_start(DWORD cflags);
+ void seq_cmd_stop();
+
+ virtual ~seq_base();
+
+ //OVERRIDE ME
+ virtual void seq_shortmsg(DWORD msg)=0;
+ virtual void seq_sysex(BYTE*,UINT)=0;
+ virtual int seq_play_start() {return 1;}
+ virtual void seq_play_stop() {}
+
+
+ seq_base();
+private:
+ virtual int gettime();
+ virtual int settime(int);
+ virtual void unpause();
+ virtual void pause();
+
+ DWORD preprocess(DWORD e);
+
+ void send_sysex(int n);
+// void reset_ins();
+ UINT do_sysex(UINT src,UINT tm);
+ BOOL do_ctrl(DWORD e);
+ void reset();
+ int note_state(int ch,int note);
+ void note_on(int ch,int note);
+ void note_off(int ch,int note);
+ UINT do_seek(DWORD n,DWORD p);
+ void thread();
+ DWORD get_time();
+ void get_ins(UINT c);
+ static DWORD WINAPI seq_trd(void* p);
+ static void sysexfunc(seq_base* cb,BYTE* s,UINT sz);
+
+
+ MIDI_file* mf;
+ bool kill,paused;
+ CSysexMap* smap;
+ int pan,vol;
+
+ UINT seek_to,n_events;
+ MIDI_EVENT* events;
+
+ UINT c_loop,loop_start;
+ BYTE notes[256];
+ BYTE ctrl_tab[16][128];
+ BYTE ins_tab[16];
+ DWORD tm_ofs,p_time;
+ HANDLE hTrd;
+ DWORD ins_set;
+
+#ifdef SEQ_HAVE_PANEL
+ HWND hCtrl;
+ float tempo;
+ BOOL novol,noins;
+ DWORD last_time_ms;
+ double last_time_ret;
+ CRITICAL_SECTION tm_sec;
+ DWORD mute_mask;
+ bool initialized;
+
+ static BOOL CALLBACK CtrlProc(HWND wnd,UINT msg,WPARAM wp,LPARAM lp);
+ void do_msg(UINT msg,WPARAM wp,LPARAM lp);
+ void set_mute(UINT ch,BOOL st);
+#endif
+};