Skip to content

Commit e903d39

Browse files
committed
Fixes to latest commit:
+ Remove wrong (missed) lines. + Remove all auto-relative mode references and variables.
1 parent 156a8ef commit e903d39

File tree

2 files changed

+45
-67
lines changed

2 files changed

+45
-67
lines changed

zynmidirouter.c

Lines changed: 35 additions & 59 deletions
Original file line numberDiff line numberDiff line change
@@ -386,8 +386,6 @@ int zmip_init(int iz, char *name, uint32_t flags) {
386386
zmips[iz].event.time = 0xFFFFFFFF;
387387
zmips[iz].event_count = 0;
388388
zmips[iz].flags = flags;
389-
memset(zmips[iz].ctrl_mode, CTRL_MODE_ABS, 16 * 128);
390-
memset(zmips[iz].ctrl_relmode_count, 0, 16 * 128);
391389
memset(zmips[iz].last_ctrl_val, 0, 16 * 128);
392390

393391
// Create direct input ring-buffer
@@ -465,50 +463,6 @@ int zmip_has_flags(int iz, uint32_t flags) {
465463
return (zmips[iz].flags & flags) == flags;
466464
}
467465

468-
int zmip_set_flag_cc_auto_mode(int iz, uint8_t flag) {
469-
if (iz < 0 || iz >= MAX_NUM_ZMIPS) {
470-
fprintf(stderr, "ZynMidiRouter: Bad input port index (%d).\n", iz);
471-
return 0;
472-
}
473-
if (flag)
474-
zmips[iz].flags |= (uint32_t)FLAG_ZMIP_CC_AUTO_MODE;
475-
else
476-
zmips[iz].flags &= ~(uint32_t)FLAG_ZMIP_CC_AUTO_MODE;
477-
return 1;
478-
}
479-
480-
int zmip_get_flag_cc_auto_mode(int iz) {
481-
if (iz < 0 || iz >= MAX_NUM_ZMIPS) {
482-
fprintf(stderr, "ZynMidiRouter: Bad output port index (%d).\n", iz);
483-
return 0;
484-
}
485-
return (zmips[iz].flags & (uint32_t)FLAG_ZMIP_CC_AUTO_MODE) > 0;
486-
}
487-
488-
int clear_cc_pedals(uint8_t izmip) {
489-
uint8_t buffer[3];
490-
buffer[2] = 0;
491-
for (uint8_t pedal = 0; pedal < 4; ++pedal) {
492-
for (uint8_t izmop = 0; izmop < NUM_ZMOP_CHAINS; ++izmop) {
493-
if (!zmop_get_route_from(izmop, izmip))
494-
continue;
495-
if (zmops[izmop].midi_chan < 0 || zmops[izmop].midi_chans[zmops[izmop].midi_chan] < 0)
496-
continue;
497-
buffer[0] = 0xB0 + zmops[izmop].midi_chans[zmops[izmop].midi_chan];
498-
if (pedal_sent[pedal] & (1 << izmop)) {
499-
buffer[1] = pedal_cc[pedal];
500-
if (!write_rb_midi_event(zmops[izmop].rbuffer, buffer, 3))
501-
return 0;
502-
pedal_sent[pedal] &= ~(1 << izmop);
503-
}
504-
}
505-
for (uint8_t midi_chan = 0; midi_chan < 16; ++midi_chan)
506-
//!@todo May be refactored if optimise pedals
507-
zmips[izmip].last_ctrl_val[midi_chan][pedal_cc[pedal]] = 0;
508-
}
509-
return 1;
510-
}
511-
512466
int zmip_set_flag_active_chain(int iz, uint8_t flag) {
513467
if (iz < 0 || iz >= MAX_NUM_ZMIPS) {
514468
fprintf(stderr, "ZynMidiRouter: Bad input port number (%d).\n", iz);
@@ -531,12 +485,6 @@ int zmip_get_flag_active_chain(int iz) {
531485
return zmips[ZMIP_DEV0 + iz].flags & (uint32_t)FLAG_ZMIP_ACTIVE_CHAIN;
532486
}
533487

534-
uint32_t get_cc_pedal(uint8_t pedal) {
535-
if (pedal < 4)
536-
return pedal_sent[pedal];
537-
return 0;
538-
}
539-
540488
//Route/unroute a MIDI input device (zmip) to *ALL* chain zmops
541489
int zmip_set_route_chains(int iz, int route) {
542490
if (iz < 0 || iz >= MAX_NUM_ZMIPS) {
@@ -1123,6 +1071,41 @@ int zmop_get_cc_route(int iz, uint8_t *cc_route) {
11231071
return 1;
11241072
}
11251073

1074+
//-----------------------------------------------------------------------------
1075+
// Pedal Management
1076+
//-----------------------------------------------------------------------------
1077+
1078+
uint32_t get_cc_pedal(uint8_t pedal) {
1079+
if (pedal < 4)
1080+
return pedal_sent[pedal];
1081+
return 0;
1082+
}
1083+
1084+
// Jofemodo: I'm not sure this is very nice ...
1085+
int clear_cc_pedals(uint8_t izmip) {
1086+
uint8_t buffer[3];
1087+
buffer[2] = 0;
1088+
for (uint8_t pedal = 0; pedal < 4; ++pedal) {
1089+
for (uint8_t izmop = 0; izmop < NUM_ZMOP_CHAINS; ++izmop) {
1090+
if (!zmop_get_route_from(izmop, izmip))
1091+
continue;
1092+
if (zmops[izmop].midi_chan < 0 || zmops[izmop].midi_chans[zmops[izmop].midi_chan] < 0)
1093+
continue;
1094+
buffer[0] = 0xB0 + zmops[izmop].midi_chans[zmops[izmop].midi_chan];
1095+
if (pedal_sent[pedal] & (1 << izmop)) {
1096+
buffer[1] = pedal_cc[pedal];
1097+
if (!write_rb_midi_event(zmops[izmop].rbuffer, buffer, 3))
1098+
return 0;
1099+
pedal_sent[pedal] &= ~(1 << izmop);
1100+
}
1101+
}
1102+
for (uint8_t midi_chan = 0; midi_chan < 16; ++midi_chan)
1103+
//!@todo May be refactored if optimise pedals
1104+
zmips[izmip].last_ctrl_val[midi_chan][pedal_cc[pedal]] = 0;
1105+
}
1106+
return 1;
1107+
}
1108+
11261109
//-----------------------------------------------------------------------------
11271110
// Jack MIDI processing
11281111
//-----------------------------------------------------------------------------
@@ -1509,13 +1492,6 @@ int jack_process(jack_nframes_t nframes, void *arg) {
15091492
if (zmop->flags & FLAG_ZMOP_CHAN_TRANSFILTER && zmop->midi_chan >= 0) {
15101493
// ACTI => route events to active chain, translating channel as required ...
15111494
if (zmip->flags & FLAG_ZMIP_ACTIVE_CHAIN) {
1512-
1513-
1514-
// If (active MIDI channel or active chain)
1515-
1516-
// and output midi channel is mapped => Send to active zmop's MIDI channel
1517-
zmop->midi_chans[zmop->midi_chan] >= 0) {
1518-
15191495
// If (active MIDI channel
15201496
if (((active_midi_chan && zmops[active_chain].midi_chan == zmop->midi_chan)
15211497
// or active chain)

zynmidirouter.h

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -209,13 +209,9 @@ struct zmip_st {
209209
uint32_t next_event; // Index of the next event to be processed (not fake queues)
210210
jack_midi_event_t event; // Event currently being processed
211211

212-
uint8_t ctrl_mode[16][128]; // Controller mode for all 128 CCs x 16 chans
213-
uint8_t ctrl_relmode_count[16][128]; // Counter array used for mode auto-detection
214212
uint8_t last_ctrl_val[16][128]; // Last CC value tracked for each CC x 16 chans
215213
};
216214

217-
static const uint8_t pedal_cc[] = {64, 66, 67, 69}; // List of CC that should be treated as pedals
218-
219215
// MIDI Input port (ZMIPs) management
220216
int zmip_init(int iz, char *name, uint32_t flags);
221217
int zmip_end(int iz);
@@ -224,17 +220,14 @@ int zmip_get_seq_index();
224220
int zmip_get_step_index();
225221
int zmip_get_int_index();
226222
int zmip_get_ctrl_index();
227-
int clear_cc_pedals(uint8_t izmip);
228223

229224
// Flag management
230225
int zmip_set_flags(int iz, uint32_t flags);
231226
uint32_t zmip_get_flags(int iz);
232227
int zmip_has_flags(int iz, uint32_t flag);
233-
int zmop_set_flag_cc_auto_mode(int iz, uint8_t flag);
234-
uint8_t zmop_get_flag_cc_auto_mode(int iz);
235228
int zmip_set_flag_active_chain(int iz, uint8_t flag);
236229
int zmip_get_flag_active_chain(int iz);
237-
uint32_t get_cc_pedal(uint8_t pedal);
230+
238231
// Routing
239232
int zmip_set_route_chains(int iz, int route); // Route/un-route a MIDI input port (zmip) to/from *ALL* zmop chains
240233

@@ -384,6 +377,15 @@ int zmop_get_cc_route(int iz, uint8_t *cc_route);
384377
// This is called from jack process!!
385378
void zmop_push_event(struct zmop_st * zmop, jack_midi_event_t * ev); // Add event to MIDI output port
386379

380+
//-----------------------------------------------------------------------------
381+
// Pedal management
382+
//-----------------------------------------------------------------------------
383+
384+
static const uint8_t pedal_cc[] = {64, 66, 67, 69}; // List of CC that should be treated as pedals
385+
386+
uint32_t get_cc_pedal(uint8_t pedal);
387+
int clear_cc_pedals(uint8_t izmip);
388+
387389
//-----------------------------------------------------------------------------
388390
// Jack MIDI Process
389391
//-----------------------------------------------------------------------------

0 commit comments

Comments
 (0)