Commit c5ab94ea authored by Takashi Iwai's avatar Takashi Iwai

ALSA: seq: Fix missing channel at encoding RPN/NRPN MIDI2 messages

The conversion from the legacy event to MIDI2 UMP for RPN and NRPN
missed the setup of the channel number, resulting in always the
channel 0.  Fix it.

Fixes: e9e02819 ("ALSA: seq: Automatic conversion of UMP events")
Link: https://patch.msgid.link/20240625095200.25745-1-tiwai@suse.deSigned-off-by: default avatarTakashi Iwai <tiwai@suse.de>
parent 17563b4a
...@@ -791,7 +791,8 @@ static int paf_ev_to_ump_midi2(const struct snd_seq_event *event, ...@@ -791,7 +791,8 @@ static int paf_ev_to_ump_midi2(const struct snd_seq_event *event,
/* set up the MIDI2 RPN/NRPN packet data from the parsed info */ /* set up the MIDI2 RPN/NRPN packet data from the parsed info */
static void fill_rpn(struct snd_seq_ump_midi2_bank *cc, static void fill_rpn(struct snd_seq_ump_midi2_bank *cc,
union snd_ump_midi2_msg *data) union snd_ump_midi2_msg *data,
unsigned char channel)
{ {
if (cc->rpn_set) { if (cc->rpn_set) {
data->rpn.status = UMP_MSG_STATUS_RPN; data->rpn.status = UMP_MSG_STATUS_RPN;
...@@ -808,6 +809,7 @@ static void fill_rpn(struct snd_seq_ump_midi2_bank *cc, ...@@ -808,6 +809,7 @@ static void fill_rpn(struct snd_seq_ump_midi2_bank *cc,
} }
data->rpn.data = upscale_14_to_32bit((cc->cc_data_msb << 7) | data->rpn.data = upscale_14_to_32bit((cc->cc_data_msb << 7) |
cc->cc_data_lsb); cc->cc_data_lsb);
data->rpn.channel = channel;
cc->cc_data_msb = cc->cc_data_lsb = 0; cc->cc_data_msb = cc->cc_data_lsb = 0;
} }
...@@ -855,7 +857,7 @@ static int cc_ev_to_ump_midi2(const struct snd_seq_event *event, ...@@ -855,7 +857,7 @@ static int cc_ev_to_ump_midi2(const struct snd_seq_event *event,
cc->cc_data_lsb = val; cc->cc_data_lsb = val;
if (!(cc->rpn_set || cc->nrpn_set)) if (!(cc->rpn_set || cc->nrpn_set))
return 0; // skip return 0; // skip
fill_rpn(cc, data); fill_rpn(cc, data, channel);
return 1; return 1;
} }
...@@ -957,7 +959,7 @@ static int ctrl14_ev_to_ump_midi2(const struct snd_seq_event *event, ...@@ -957,7 +959,7 @@ static int ctrl14_ev_to_ump_midi2(const struct snd_seq_event *event,
cc->cc_data_lsb = lsb; cc->cc_data_lsb = lsb;
if (!(cc->rpn_set || cc->nrpn_set)) if (!(cc->rpn_set || cc->nrpn_set))
return 0; // skip return 0; // skip
fill_rpn(cc, data); fill_rpn(cc, data, channel);
return 1; return 1;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment