mirror of https://github.com/GNOME/gimp.git
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:
parent
a3c08b8d92
commit
c4558d8e1c
|
@ -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
|
||||||
|
|
|
@ -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 */
|
||||||
|
|
Loading…
Reference in New Issue