#include "alsa_midi.h" #include static int alsa_midi_driver_attach( alsa_midi_driver_t *driver, jack_engine_t *engine ) { return driver->midi->attach(driver->midi); } static int alsa_midi_driver_detach( alsa_midi_driver_t *driver, jack_engine_t *engine ) { return driver->midi->detach(driver->midi); } static int alsa_midi_driver_read( alsa_midi_driver_t *driver, jack_nframes_t nframes ) { driver->midi->read(driver->midi, nframes); return 0; } static int alsa_midi_driver_write( alsa_midi_driver_t *driver, jack_nframes_t nframes ) { driver->midi->write(driver->midi, nframes); return 0; } static int alsa_midi_driver_start( alsa_midi_driver_t *driver ) { return driver->midi->start(driver->midi); } static int alsa_midi_driver_stop( alsa_midi_driver_t *driver ) { return driver->midi->stop(driver->midi); } static void alsa_midi_driver_delete( alsa_midi_driver_t *driver ) { if (driver->midi) (driver->midi->destroy)(driver->midi); free (driver); } static jack_driver_t * alsa_midi_driver_new (jack_client_t *client, const char *name) { alsa_midi_driver_t *driver; jack_info ("creating alsa_midi driver ..."); driver = (alsa_midi_driver_t *) calloc (1, sizeof (alsa_midi_driver_t)); jack_driver_init ((jack_driver_t *) driver); driver->attach = (JackDriverAttachFunction) alsa_midi_driver_attach; driver->detach = (JackDriverDetachFunction) alsa_midi_driver_detach; driver->read = (JackDriverReadFunction) alsa_midi_driver_read; driver->write = (JackDriverWriteFunction) alsa_midi_driver_write; driver->start = (JackDriverStartFunction) alsa_midi_driver_start; driver->stop = (JackDriverStartFunction) alsa_midi_driver_stop; driver->midi = alsa_seqmidi_new(client, NULL); driver->client = client; return (jack_driver_t *) driver; } /* DRIVER "PLUGIN" INTERFACE */ const char driver_client_name[] = "alsa_midi"; const jack_driver_desc_t * driver_get_descriptor () { jack_driver_desc_t * desc; jack_driver_param_desc_t * params; //unsigned int i; desc = calloc (1, sizeof (jack_driver_desc_t)); strcpy (desc->name,"alsa_midi"); desc->nparams = 0; params = calloc (desc->nparams, sizeof (jack_driver_param_desc_t)); desc->params = params; return desc; } jack_driver_t * driver_initialize (jack_client_t *client, const JSList * params) { const JSList * node; const jack_driver_param_t * param; for (node = params; node; node = jack_slist_next (node)) { param = (const jack_driver_param_t *) node->data; switch (param->character) { default: break; } } return alsa_midi_driver_new (client, NULL); } void driver_finish (jack_driver_t *driver) { alsa_midi_driver_delete ((alsa_midi_driver_t *) driver); }