LiVES 1.4.9
|
00001 // omc-learn.h 00002 // LiVES (lives-exe) 00003 // (c) G. Finch 2003 - 2009 00004 // Released under the GPL 3 or later 00005 // see file ../COPYING for licensing details 00006 00007 #ifndef _HAS_OMC_LEARN_H 00008 #define _HAS_OMC_LEARN_H 00009 00011 #define N_OMC_MACROS 32 00012 00014 #define OMC_FP_FIX 4 00015 00016 // OMC device interfaces 00017 #if HAVE_LINUX_JOYSTICK_H 00018 #define OMC_JS_IMPL 00019 #endif 00020 00021 #define OMC_MIDI_IMPL 00022 00023 00024 #ifdef OMC_JS_IMPL 00025 gchar *js_mangle(void); 00026 gboolean js_open(void); 00027 void js_close(void); 00028 const gchar *get_js_filename(void); 00029 #endif 00030 00031 #ifdef OMC_MIDI_IMPL 00032 gchar *midi_mangle(void); 00033 const gchar *get_midi_filename(void); 00034 gboolean midi_open(void); 00035 void midi_close(void); 00036 #endif 00037 00038 /* parameter types */ 00039 #define OMC_PARAM_INT 1 00040 #define OMC_PARAM_DOUBLE 2 00041 #define OMC_PARAM_SPECIAL 128 ///< can be int or double, depending on effect type 00042 00043 typedef struct { 00044 gchar *msg; 00045 gchar *macro_text; 00046 gchar *info_text; 00047 gchar *stype_tags; 00048 00049 gint nparams; 00050 00051 gchar **pname; 00052 00053 gint *ptypes; 00054 00055 gint *mini; 00056 gint *maxi; 00057 gint *vali; 00058 00059 gdouble *mind; 00060 gdouble *maxd; 00061 gdouble *vald; 00062 00063 00064 } lives_omc_macro_t; 00065 00066 00067 00068 00069 typedef struct { 00070 gchar *srch; 00071 gint macro; 00072 00073 gint nvars; 00074 gint *offs0; 00075 gdouble *scale; 00076 gint *offs1; 00077 00078 gint *min; 00079 gint *max; 00080 00081 gboolean *matchp; 00082 gint *matchi; 00083 00084 // enumerated by number of params in target macro 00085 gint *map; 00086 gint *fvali; 00087 gdouble *fvald; 00088 00089 00091 00092 GtkWidget *treev1; 00093 GtkWidget *treev2; 00094 00095 GtkTreeStore *gtkstore; 00096 GtkTreeStore *gtkstore2; 00097 00098 int *tmpvals; 00099 00100 } lives_omc_match_node_t; 00101 00102 00103 00104 typedef struct { 00105 GtkWidget *dialog; 00106 GtkWidget *clear_button; 00107 GtkWidget *del_all_button; 00108 00109 gint tbl_rows; 00110 gint tbl_currow; 00111 GtkWidget *table; 00112 GtkWidget *top_vbox; 00113 } omclearn_w; 00114 00115 00116 00117 enum { 00118 TITLE_COLUMN, 00119 VALUE_COLUMN, 00120 FILTER_COLUMN, 00121 RANGE_COLUMN, 00122 OFFS1_COLUMN, 00123 SCALE_COLUMN, 00124 OFFS2_COLUMN, 00125 NUM_COLUMNS 00126 }; 00127 00128 00129 enum { 00130 TITLE2_COLUMN, 00131 VALUE2_COLUMN, 00132 NUM2_COLUMNS 00133 }; 00134 00135 00136 #define OMC_JS 1 00137 #define OMC_JS_AXIS 2 00138 #define OMC_JS_BUTTON 3 00139 00140 00141 #define OMC_MIDI 128 00142 #define OMC_MIDI_NOTE 129 00143 #define OMC_MIDI_NOTE_OFF 130 00144 #define OMC_MIDI_CONTROLLER 131 00145 #define OMC_MIDI_PITCH_BEND 132 00146 #define OMC_MIDI_PGM_CHANGE 133 00147 00149 void on_midi_learn_activate (GtkMenuItem *, gpointer); 00150 00153 gboolean omc_process_string(gint supertype, const gchar *string, gboolean learn, omclearn_w *omclw); 00154 00155 00156 00157 #define OMC_FILE_VSTRING "LiVES OMC map version 1.0" 00158 00159 void on_midi_save_activate (GtkMenuItem *, gpointer); 00160 void on_midi_load_activate (GtkMenuItem *, gpointer); 00161 00162 00163 #include "osc.h" 00164 00165 #define OSC_BUF_SIZE 1024 00166 #define OSC_MAX_TYPETAGS 64 00167 00169 OSCbuf *omc_learner_decode(gint type, gint index, const gchar *string); 00170 00171 00172 #endif // _HAS_OMC_LEARN_H 00173