24#ifndef RTOSC_MIDITABLE_H
25#define RTOSC_MIDITABLE_H
59 T&operator[](
int i) {assert(i>=0 && i<n);
return t[i];}
60 T operator[](
int i)
const {assert(i>=0 && i<n);
return t[i];}
63 {
TinyVector next(n+1);
for(
int i=0;i<n; ++i) next.t[i]=t[i]; next.t[n] = t_;
return next;}
65 {
TinyVector next(n+1);
for(
int i=0;i<n + 1; ++i) next.t[i]=0;
return next;}
67 {
TinyVector next(n);
for(
int i=0;i<n; ++i) next.t[i]=0;
return next;}
69 {
TinyVector next(n);
for(
int i=0;i<n; ++i) next.t[i]=t[i];
return next;}
70 int size(
void)
const{
return n;}
73 typedef std::function<void(
const char*)> write_cb;
74 typedef std::function<void(int16_t,write_cb)> callback_t;
81 bool handleCC(
int ID,
int val, write_cb write);
94 int operator()(
float x)
const;
95 float operator()(
int x)
const;
102 void map(
const char *addr,
bool coarse =
true);
106 void addNewMapper(
int ID,
const Port &port, std::string addr);
108 void addFineMapper(
int ID,
const Port &port, std::string addr);
110 void useFreeID(
int ID);
112 void unMap(
const char *addr,
bool coarse);
114 void delMapping(
int ID,
bool coarse,
const char *addr);
115 void replaceMapping(
int,
bool,
const char *);
119 std::map<std::string, std::string> getMidiMappingStrings(
void);
122 std::string getMappedString(std::string addr);
126 void snoop(
const char *msg);
128 void apply_high(
int v,
int ID);
129 void apply_low(
int v,
int ID);
130 void apply_midi(
int val,
int ID);
132 void setBounds(
const char *str,
float low,
float high);
134 std::tuple<float,float,float,float> getBounds(
const char *str);
136 bool has(std::string addr);
137 bool hasPending(std::string addr);
138 bool hasCoarse(std::string addr);
139 bool hasFine(std::string addr);
140 bool hasCoarsePending(std::string addr);
141 bool hasFinePending(std::string addr);
142 int getCoarse(std::string addr);
143 int getFine(std::string addr);
146 std::map<std::string, std::tuple<int, int, int, MidiBijection>> inv_map;
147 std::deque<std::pair<std::string,bool>> learnQueue;
148 std::function<void(
const char *)> rt_cb;
150 const Ports *base_ports;
157 void setBackendCb(std::function<
void(
const char*)> cb);
158 void setFrontendCb(std::function<
void(
const char*)> cb);
159 void handleCC(
int par,
int val,
char chan=1,
bool nrpn=
false);
164 Port addWatchPort(
void);
165 Port removeWatchPort(
void);
168 static const Ports ports;
175 :pos_r(0), pos_w(0), size(0)
177 for(
int i=0; i<32; ++i)
182 if(has(x) || size > 31)
186 pos_w = (pos_w+1)%32;
194 pos_r = (1+pos_r)%32;
198 for(
int i=0; i<32; ++i)
217 std::function<void(
const char*)> backend;
218 std::function<void(
const char*)> frontend;
231 const char *conversion;
243 const Ports &dispatch_root;
246 char *unhandled_path;
248 void (*error_cb)(
const char *,
const char *);
249 void (*event_cb)(
const char *);
250 void (*modify_cb)(
const char *,
const char *,
const char *, int, int);
255 bool has(uint8_t ch, uint8_t ctl)
const;
257 MidiAddr *get(uint8_t ch, uint8_t ctl);
259 const MidiAddr *get(uint8_t ch, uint8_t ctl)
const;
263 void addElm(uint8_t ch, uint8_t ctl,
const char *path);
265 void check_learn(
void);
267 void learn(
const char *s);
269 void clear_entry(
const char *s);
271 void process(uint8_t ch, uint8_t ctl, uint8_t val);
273 Port learnPort(
void);
274 Port unlearnPort(
void);
275 Port registerPort(
void);
278 static float translate(uint8_t val,
const char *meta);
281 class MidiTable_Impl *impl;
Definition: miditable.h:172
Definition: miditable.h:154
Definition: miditable.h:53
Module Overview.
Definition: miditable.h:49
Definition: miditable.h:99
Table of midi mappings - Deprecated.
Definition: miditable.h:240
Collection of functions for ports.
Definition: miditable.h:222
Definition: miditable.h:90
Port in rtosc dispatching hierarchy.
Definition: ports.h:97
Ports - a dispatchable collection of Port entries.
Definition: ports.h:159