@@ -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-
512466int 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
541489int 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)
0 commit comments