Por primera vez, he logrado lanzar fluidsynth
desde una terminal python, crear su correspondiente driver MIDI y tocar algunas notas con el teclado en directo. A partir de aquí, es todo mejorar.
El problema que estaba teniendo era con la función new_fluid_midi_driver(settings, handler, event_handler_data)
, en el que en la documentación aparece como que hay que llamarlo (en C) de esta forma:
[code lang=C]
fluid_settings_t* settings;
fluid_midi_driver_t* mdriver;
settings = new_fluid_settings();
mdriver = new_fluid_midi_driver(settings, handle_midi_event, NULL);
[/code]
sugiriendo el uso de fluid_midi_router_handle_midi_event()
como handler callback. Finalmente, la mejor opción para mi fue:
[code lang=C]
mdriver = new_fluid_midi_driver(settings, fluid_synth_handle_midi_event, synth)
[/code]
O sea, que había que la función fluid_synth_handle_midi_event
es la pancea y en ningún sitio de la documentación de API te la especifican. Bien por fluidsynth. Y usar el propio objeto sintetizador synth
como event_handler_data
.