unsigned char index = event->data.control.param & 0x7f;
unsigned char val = event->data.control.value & 0x7f;
struct ump_cvt_to_ump_bank *cc = &dest_port->midi2_bank[channel];
- int ret;
+ int ret = 0;
/* process special CC's (bank/rpn/nrpn) */
switch (index) {
cc->cc_rpn_msb = val;
if (cc->cc_rpn_msb == 0x7f && cc->cc_rpn_lsb == 0x7f)
reset_rpn(cc);
- return ret;
+ break;
case UMP_CC_RPN_LSB:
ret = fill_rpn(cc, data, channel, true);
cc->rpn_set = 1;
cc->cc_rpn_lsb = val;
if (cc->cc_rpn_msb == 0x7f && cc->cc_rpn_lsb == 0x7f)
reset_rpn(cc);
- return ret;
+ break;
case UMP_CC_NRPN_MSB:
ret = fill_rpn(cc, data, channel, true);
cc->nrpn_set = 1;
cc->cc_nrpn_msb = val;
- return ret;
+ break;
case UMP_CC_NRPN_LSB:
ret = fill_rpn(cc, data, channel, true);
cc->nrpn_set = 1;
cc->cc_nrpn_lsb = val;
- return ret;
+ break;
case UMP_CC_DATA:
cc->cc_data_msb_set = 1;
cc->cc_data_msb = val;
- return fill_rpn(cc, data, channel, false);
+ ret = fill_rpn(cc, data, channel, false);
+ break;
case UMP_CC_BANK_SELECT:
cc->bank_set = 1;
cc->cc_bank_msb = val;
- return 0; // skip
+ ret = 0; // skip
+ break;
case UMP_CC_BANK_SELECT_LSB:
cc->bank_set = 1;
cc->cc_bank_lsb = val;
- return 0; // skip
+ ret = 0; // skip
+ break;
case UMP_CC_DATA_LSB:
cc->cc_data_lsb_set = 1;
cc->cc_data_lsb = val;
- return fill_rpn(cc, data, channel, false);
+ ret = fill_rpn(cc, data, channel, false);
+ break;
+ default:
+ data->cc.status = status;
+ data->cc.channel = channel;
+ data->cc.index = index;
+ data->cc.data = upscale_7_to_32bit(event->data.control.value & 0x7f);
+ ret = 1;
+ break;
}
- data->cc.status = status;
- data->cc.channel = channel;
- data->cc.index = index;
- data->cc.data = upscale_7_to_32bit(event->data.control.value & 0x7f);
- return 1;
+ return ret;
}
/* convert one-parameter control event to MIDI 2.0 UMP */