aboutsummaryrefslogtreecommitdiff
path: root/Src/Plugins/Input/in_midi/seq.h
diff options
context:
space:
mode:
authorJef <jef@targetspot.com>2024-09-24 08:54:57 -0400
committerJef <jef@targetspot.com>2024-09-24 08:54:57 -0400
commit20d28e80a5c861a9d5f449ea911ab75b4f37ad0d (patch)
tree12f17f78986871dd2cfb0a56e5e93b545c1ae0d0 /Src/Plugins/Input/in_midi/seq.h
parent537bcbc86291b32fc04ae4133ce4d7cac8ebe9a7 (diff)
downloadwinamp-20d28e80a5c861a9d5f449ea911ab75b4f37ad0d.tar.gz
Initial community commit
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
+};