winealsa.drv: add missing offset of pitch bender in midi input
Ralf Beck
musical_snake at gmx.de
Wed May 23 12:11:21 CDT 2007
-------------- next part --------------
--- a/dlls/winealsa.drv/midi.c 2007-05-11 19:35:02.000000000 +0200
+++ b/dlls/winealsa.drv/midi.c 2007-05-23 17:34:57.000000000 +0200
@@ -319,6 +319,7 @@ static DWORD WINAPI midRecThread(LPVOID
FIXME("Unexpected event received, type = %x from %d:%d\n", ev->type, ev->source.client, ev->source.port);
else {
DWORD dwTime, toSend = 0;
+ int value = 0;
/* FIXME: Should use ev->time instead for better accuracy */
dwTime = GetTickCount() - MidiInDev[wDevID].startTime;
TRACE("Event received, type = %x, device = %d\n", ev->type, wDevID);
@@ -337,7 +338,8 @@ static DWORD WINAPI midRecThread(LPVOID
toSend = (ev->data.control.value << 16) | (ev->data.control.param << 8) | MIDI_CMD_CONTROL | ev->data.control.channel;
break;
case SND_SEQ_EVENT_PITCHBEND:
- toSend = (ev->data.control.value << 16) | (ev->data.control.param << 8) | MIDI_CMD_BENDER | ev->data.control.channel;
+ value = ev->data.control.value + 0x2000;
+ toSend = (((value >> 7) & 0x7f) << 16) | ((value & 0x7f) << 8) | MIDI_CMD_BENDER | ev->data.control.channel;
break;
case SND_SEQ_EVENT_PGMCHANGE:
toSend = (ev->data.control.value << 16) | (ev->data.control.param << 8) | MIDI_CMD_PGM_CHANGE | ev->data.control.channel;
More information about the wine-patches
mailing list