simplified swallowing of SysEx messages and unwanted data bytes. Reordered

2004-06-19  Michael Natterer  <mitch@gimp.org>

	* modules/controller_midi.c (midi_read_event): simplified
	swallowing of SysEx messages and unwanted data bytes. Reordered
	and commented stuff to be more readable.
This commit is contained in:
Michael Natterer 2004-06-19 18:34:14 +00:00 committed by Michael Natterer
parent a3c08b8d92
commit c4558d8e1c
2 changed files with 58 additions and 43 deletions

View File

@ -1,3 +1,9 @@
2004-06-19 Michael Natterer <mitch@gimp.org>
* modules/controller_midi.c (midi_read_event): simplified
swallowing of SysEx messages and unwanted data bytes. Reordered
and commented stuff to be more readable.
2004-06-19 Michael Natterer <mitch@gimp.org> 2004-06-19 Michael Natterer <mitch@gimp.org>
* modules/Makefile.am * modules/Makefile.am

View File

@ -409,43 +409,41 @@ midi_read_event (GIOChannel *io,
{ {
if (buf[pos] >= 0xf8) /* realtime messages */ if (buf[pos] >= 0xf8) /* realtime messages */
{ {
/* nop */ switch (buf[pos])
{
case 0xf8: /* timing clock */
case 0xf9: /* (undefined) */
case 0xfa: /* start */
case 0xfb: /* continue */
case 0xfc: /* stop */
case 0xfd: /* (undefined) */
case 0xfe: /* active sensing */
case 0xff: /* system reset */
/* nop */
#if 0 #if 0
g_print ("MIDI: realtime message (%02x)\n", buf[pos]); g_print ("MIDI: realtime message (%02x)\n", buf[pos]);
#endif #endif
} break;
else if (buf[pos] >= 0xf0) /* system messages */
{
if (buf[pos] == 0xf0) /* sysex start */
{
midi->swallow = TRUE;
D (g_print ("MIDI: sysex start\n"));
} }
else }
{ else
midi->swallow = FALSE; /* any status bytes ends swallowing */ {
midi->swallow = FALSE; /* any status bytes ends swallowing */
if (buf[pos] >= 0xf0) /* system messages */
{
switch (buf[pos]) switch (buf[pos])
{ {
case 0xf7: /* sysex end */ case 0xf0: /* sysex start */
D (g_print ("MIDI: sysex end\n")); midi->swallow = TRUE;
D (g_print ("MIDI: sysex start\n"));
break; break;
case 0xf6: /* tune request */ case 0xf1: /* time code */
D (g_print ("MIDI: tune request\n")); midi->swallow = TRUE; /* type + data */
break;
case 0xf5: /* undefined */ D (g_print ("MIDI: time code\n"));
case 0xf4: /* undefined */
D (g_print ("MIDI: undefined system message\n"));
break;
case 0xf3: /* song select */
midi->swallow = TRUE; /* song number */
D (g_print ("MIDI: song select\n"));
break; break;
case 0xf2: /* song position */ case 0xf2: /* song position */
@ -454,26 +452,37 @@ midi_read_event (GIOChannel *io,
D (g_print ("MIDI: song position\n")); D (g_print ("MIDI: song position\n"));
break; break;
case 0xf1: /* time code */ case 0xf3: /* song select */
midi->swallow = TRUE; /* type + data */ midi->swallow = TRUE; /* song number */
D (g_print ("MIDI: time code\n")); D (g_print ("MIDI: song select\n"));
break;
case 0xf4: /* (undefined) */
case 0xf5: /* (undefined) */
D (g_print ("MIDI: undefined system message\n"));
break;
case 0xf6: /* tune request */
D (g_print ("MIDI: tune request\n"));
break;
case 0xf7: /* sysex end */
D (g_print ("MIDI: sysex end\n"));
break; break;
} }
} }
} else /* channel messages */
else /* channel messages */ {
{ midi->command = buf[pos] >> 4;
midi->swallow = FALSE; /* any status byte ends swallowing */ midi->channel = buf[pos] & 0xf;
midi->command = buf[pos] >> 4; /* reset running status */
midi->channel = buf[pos] & 0xf; midi->key = -1;
midi->velocity = -1;
/* reset running status */ midi->msb = -1;
midi->key = -1; midi->lsb = -1;
midi->velocity = -1; }
midi->msb = -1;
midi->lsb = -1;
} }
pos++; /* status byte consumed */ pos++; /* status byte consumed */