|
-
- #include "alsa_midi.h"
- #include <string.h>
-
- 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);
- }
|