7#ifndef HAS_LIVES_OMC_LEARN_H
8#define HAS_LIVES_OMC_LEARN_H
10#define OMC_DEV_MIDI (1 << 0)
11#define OMC_DEV_JS (1 << 1)
12#define OMC_DEV_FORCE_RAW_MIDI (1 << 2)
13#define OMC_DEV_MIDI_DUMMY (1 << 3)
16#define N_OMC_MACROS 64
22#if HAVE_LINUX_JOYSTICK_H
34const char *get_js_filename(
void);
45#define OMC_PARAM_INT 1
46#define OMC_PARAM_DOUBLE 2
47#define OMC_PARAM_SPECIAL 128
62 double *mind, *
maxd, *vald;
126#define OMC_INTERNAL 0
130#define OMC_JS_BUTTON 3
133#define OMC_MIDI_NOTE 129
134#define OMC_MIDI_NOTE_OFF 130
135#define OMC_MIDI_CONTROLLER 131
136#define OMC_MIDI_PITCH_BEND 132
137#define OMC_MIDI_PGM_CHANGE 133
149#define OMC_FILE_VSTRING "LiVES OMC map version 1.1"
150#define OMC_FILE_VSTRING_1_0 "LiVES OMC map version 1.0"
159#define OSC_BUF_SIZE 1024
160#define OSC_MAX_TYPETAGS 64
void on_devicemap_load_activate(LiVESMenuItem *, livespointer)
boolean omc_process_string(int supertype, const char *string, boolean learn, omclearn_w *omclw)
process a string (i.e. convert to an OSC message and pass to OSC subsys) only need to set omclw if le...
const char * get_midi_filename(void)
OSCbuf * omc_learner_decode(int type, int index, const char *string)
decode learnt behaviours
boolean has_devicemap(int has_this_macro)
void on_devicemap_save_activate(LiVESMenuItem *, livespointer)
void create_devicemap_directory(void)
void on_midi_learn_activate(LiVESMenuItem *, livespointer)
start learning MIDI inputs
const lives_omc_macro_t * get_omc_macro(int idx)
char * macro_text
macro text
char * info_text
descriptive text
char * stype_tags
setter type tags
int * min
min values of input params
char * srch
string to match
int macro
action number this is linked to (or -1) (see mainwindow.h)
LiVESTreeStore * gtkstore
int * max
max values of input params
int * offs0
offs to add to params before scale (pre-bias)
int * map
mapping macro parameters to variables in the input (whether we use a default or a variable)
int nvars
number of input params
LiVESTreeStore * gtkstore2
double * scale
scale for params (unbiased scale)
boolean * matchp
do we additionally need to match this param val in the input ?
double * fvald
defaults, mapping to fixed doubles
int * fvali
defaults, mapping to fixed ints
int * offs1
offs to add to params after scale (post bias)
LiVESWidget * del_all_button
LiVESWidget * clear_button