mirror of
https://gitlab.freedesktop.org/pipewire/pipewire.git
synced 2026-05-27 21:37:37 -04:00
ump-utils: fix MIDI 2.0 pitch bend and mask program number
Fix spa_ump_to_midi() MIDI 2.0 pitch bend (0xE0) to extract both LSB and MSB from the 32-bit value in word 2, giving full 14-bit resolution. Previously the LSB came from a reserved field and was always zero. Mask the program number with 0x7f for consistency with bank byte masking. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
parent
26635056a4
commit
4fbe2ef421
2 changed files with 25 additions and 1 deletions
|
|
@ -118,7 +118,7 @@ SPA_API_CONTROL_UMP_UTILS int spa_ump_to_midi(const uint32_t **ump, size_t *ump_
|
|||
}
|
||||
else if (*state == 2) {
|
||||
midi[size++] = status;
|
||||
midi[size++] = (u[1] >> 24);
|
||||
midi[size++] = (u[1] >> 24) & 0x7f;
|
||||
*state = 0;
|
||||
}
|
||||
break;
|
||||
|
|
@ -126,6 +126,11 @@ SPA_API_CONTROL_UMP_UTILS int spa_ump_to_midi(const uint32_t **ump, size_t *ump_
|
|||
midi[size++] = status;
|
||||
midi[size++] = (u[1] >> 25);
|
||||
break;
|
||||
case 0xe0:
|
||||
midi[size++] = status;
|
||||
midi[size++] = (u[1] >> 18) & 0x7f;
|
||||
midi[size++] = (u[1] >> 25);
|
||||
break;
|
||||
default:
|
||||
midi[size++] = status;
|
||||
midi[size++] = (u[0] >> 8) & 0x7f;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue