added utility function midi_event() which assembles a

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

	* modules/controller_midi.c: added utility function midi_event()
	which assembles a GimpControllerEventValue and emits it.
This commit is contained in:
Michael Natterer
2004-06-23 15:20:37 +00:00
committed by Michael Natterer
parent 1ce16fefd7
commit 0de43cb089
2 changed files with 35 additions and 41 deletions

View File

@ -1,3 +1,8 @@
2004-06-23 Michael Natterer <mitch@gimp.org>
* modules/controller_midi.c: added utility function midi_event()
which assembles a GimpControllerEventValue and emits it.
2004-06-23 Michael Natterer <mitch@gimp.org> 2004-06-23 Michael Natterer <mitch@gimp.org>
* app/widgets/gimpenumaction.[ch] * app/widgets/gimpenumaction.[ch]

View File

@ -107,6 +107,10 @@ static const gchar * midi_get_event_blurb (GimpController *controller,
static gboolean midi_set_device (ControllerMidi *controller, static gboolean midi_set_device (ControllerMidi *controller,
const gchar *device); const gchar *device);
static void midi_event (ControllerMidi *midi,
gint event_id,
gdouble value);
static gboolean midi_read_event (GIOChannel *io, static gboolean midi_read_event (GIOChannel *io,
GIOCondition cond, GIOCondition cond,
gpointer data); gpointer data);
@ -379,6 +383,25 @@ midi_set_device (ControllerMidi *midi,
return FALSE; return FALSE;
} }
static void
midi_event (ControllerMidi *midi,
gint event_id,
gdouble value)
{
GimpControllerEvent event = { 0, };
event.any.type = GIMP_CONTROLLER_EVENT_VALUE;
event.any.source = GIMP_CONTROLLER (midi);
event.any.event_id = event_id;
g_value_init (&event.value.value, G_TYPE_DOUBLE);
g_value_set_double (&event.value.value, value);
gimp_controller_event (GIMP_CONTROLLER (midi), &event);
g_value_unset (&event.value.value);
}
#define D(stmnt) stmnt; #define D(stmnt) stmnt;
@ -521,41 +544,19 @@ midi_read_event (GIOChannel *io,
if (midi->command == 0x9) if (midi->command == 0x9)
{ {
GimpControllerEvent event = { 0, };
D (g_print ("MIDI: note on (%02x vel %02x)\n", D (g_print ("MIDI: note on (%02x vel %02x)\n",
midi->key, midi->velocity)); midi->key, midi->velocity));
event.any.type = GIMP_CONTROLLER_EVENT_VALUE; midi_event (midi, midi->key,
event.any.source = GIMP_CONTROLLER (data);
event.any.event_id = midi->key;
g_value_init (&event.value.value, G_TYPE_DOUBLE);
g_value_set_double (&event.value.value,
(gdouble) midi->velocity / 127.0); (gdouble) midi->velocity / 127.0);
gimp_controller_event (GIMP_CONTROLLER (midi), &event);
g_value_unset (&event.value.value);
} }
else if (midi->command == 0x8) else if (midi->command == 0x8)
{ {
GimpControllerEvent event = { 0, };
D (g_print ("MIDI: note off (%02x vel %02x)\n", D (g_print ("MIDI: note off (%02x vel %02x)\n",
midi->key, midi->velocity)); midi->key, midi->velocity));
event.any.type = GIMP_CONTROLLER_EVENT_VALUE; midi_event (midi, midi->key + 128,
event.any.source = GIMP_CONTROLLER (data);
event.any.event_id = midi->key + 128;
g_value_init (&event.value.value, G_TYPE_DOUBLE);
g_value_set_double (&event.value.value,
(gdouble) midi->velocity / 127.0); (gdouble) midi->velocity / 127.0);
gimp_controller_event (GIMP_CONTROLLER (midi), &event);
g_value_unset (&event.value.value);
} }
else else
{ {
@ -568,6 +569,7 @@ midi_read_event (GIOChannel *io,
break; break;
case 0xb: /* controllers, sustain */ case 0xb: /* controllers, sustain */
if (midi->key == -1) if (midi->key == -1)
{ {
midi->key = buf[pos++]; midi->key = buf[pos++];
@ -580,22 +582,9 @@ midi_read_event (GIOChannel *io,
D (g_print ("MIDI: controller %d (value %d)\n", D (g_print ("MIDI: controller %d (value %d)\n",
midi->key, midi->velocity)); midi->key, midi->velocity));
{ midi_event (midi, midi->key + 128 + 128,
GimpControllerEvent event = { 0, };
event.any.type = GIMP_CONTROLLER_EVENT_VALUE;
event.any.source = GIMP_CONTROLLER (data);
event.any.event_id = midi->key + 128 + 128;
g_value_init (&event.value.value, G_TYPE_DOUBLE);
g_value_set_double (&event.value.value,
(gdouble) midi->velocity / 127.0); (gdouble) midi->velocity / 127.0);
gimp_controller_event (GIMP_CONTROLLER (midi), &event);
g_value_unset (&event.value.value);
}
midi->key = -1; midi->key = -1;
midi->velocity = -1; midi->velocity = -1;
break; break;