A estas alturas

Y cuando ya pensaba que tenía el fork de pyFluidSynth casi terminado, me doy cuenta de que todavía me falta lo más importante: añadir el driver midi. Sin embargo, conforme uno va implementando cosas se da cuenta de que cada vez es más complicado añadir funcionalidad desde python a una API en C.

En esta ocasión, utilizando las funciones de la API, logro crear un driver MIDI al que conectar luego un teclado. Pero en cuando mando la primera nota, me manda un bonito SYSSEG: reading NULL VMA que hará las delicias de todos. ¿Por qué tengo un puntero nulo? Creía que ctypes se encargaría de todo.

Este es el código que manejo ahora mismo:

[code lang=python]
def start_midi(self, mididriver=’alsa_seq’):
«»»
Starts the MIDI driver to allow the MIDI keyboard interaction.
:param mididriver: name of the midi driver, that can be one of these:
‘alsa_raw’, ‘alsa_seq’, ‘coremidi’, ‘jack’,
‘midishare’, ‘oss’, ‘winmidi’
:return:
«»»
if mididriver is not None:
assert (mididriver in [‘alsa_raw’, ‘alsa_seq’, ‘coremidi’, ‘jack’,
‘midishare’, ‘oss’, ‘winmidi’])
fluid_settings_setstr(self.settings, ‘midi.driver’, mididriver)
# Optionally: sets the real time priority to 99.
fluid_settings_setnum(self.settings, ‘midi.realtimeprio’, 99)
self.midi_driver = new_fluid_midi_driver(self.settings, fluid_midi_router_handle_midi_event, new_fluid_midi_event)
return self.midi_driver
[/code]

No tengo ni idea de como voy a salir del paso, porque en principio parece que la función fluid_midi_router_handle_midi_event debería pasar todos los comandos de entrada al sintetizador, pero en lugar de ello, da fallo de segmentación. No sé si es por el midi.realtimeprio (que siempre da un warning), o por la función en sí, o por el recientemente añadido new_fluid_midi_event, pero la verdad es que estoy bastante estancado. A ver si esta tarde salimos del paso.

Pajaritos, Granada, Granada, España

Publicado por fjmartinezmurcia

Ingeniero de Telecomunicación y Doctor en Tecnologías de la Información y las Comunicaciones por la Universidad de Granada. Investigador Juan de la Cierva en la Universidad de Málaga, especializado en procesamiento y análisis de señales e imágenes médicas cerebrales. Finalista en Famelab 2018 y ganador de 3-Minute Thesis granada 2017. Músico y friki sin remedio.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *