Skip to content
Snippets Groups Projects
Commit bb37e148 authored by Ivica Bukvic's avatar Ivica Bukvic
Browse files

upstream midi fix for OSX/Windows

parent 4f9cc742
No related branches found
No related tags found
No related merge requests found
...@@ -244,44 +244,51 @@ void nd_sysex_inword(int midiindev, int status, int data1, int data2, int data3) ...@@ -244,44 +244,51 @@ void nd_sysex_inword(int midiindev, int status, int data1, int data2, int data3)
void sys_poll_midi(void) void sys_poll_midi(void)
{ {
int i, nmess; int i, nmess, throttle = 100;
PmEvent buffer; PmEvent buffer;
for (i = 0; i < mac_nmidiindev; i++) for (i = 0; i < mac_nmidiindev; i++)
{ {
int nmess = Pm_Read(mac_midiindevlist[i], &buffer, 1); while (1)
if (nmess > 0)
{ {
int status = Pm_MessageStatus(buffer.message); if (!throttle--)
int data1 = Pm_MessageData1(buffer.message); goto overload;
int data2 = Pm_MessageData2(buffer.message); nmess = Pm_Read(mac_midiindevlist[i], &buffer, 1);
int data3 = ((buffer.message >> 24) & 0xFF); if (nmess > 0)
int msgtype = (status >> 4) - 8;
switch (msgtype)
{ {
case 0: int status = Pm_MessageStatus(buffer.message);
case 1: int data1 = Pm_MessageData1(buffer.message);
case 2: int data2 = Pm_MessageData2(buffer.message);
case 3: int data3 = ((buffer.message >> 24) & 0xFF);
case 6: int msgtype = (status >> 4) - 8;
sys_midibytein(i, status); switch (msgtype)
sys_midibytein(i, data1); {
sys_midibytein(i, data2); case 0:
break; case 1:
case 4: case 2:
case 5: case 3:
sys_midibytein(i, status); case 6:
sys_midibytein(i, data1); sys_midibytein(i, status);
break; sys_midibytein(i, data1);
case 7: sys_midibytein(i, data2);
nd_sysex_mode=1; break;
nd_sysex_inword(i, status, data1, data2, data3); case 4:
break; case 5:
default: sys_midibytein(i, status);
if (nd_sysex_mode) sys_midibytein(i, data1);
break;
case 7:
nd_sysex_mode=1;
nd_sysex_inword(i, status, data1, data2, data3); nd_sysex_inword(i, status, data1, data2, data3);
break;
default:
if (nd_sysex_mode)
nd_sysex_inword(i, status, data1, data2, data3);
}
} }
else break;
} }
} }
overload: ;
} }
void midi_getdevs(char *indevlist, int *nindevs, void midi_getdevs(char *indevlist, int *nindevs,
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment