> > > > - It would allow only one application to have an input or output > > > > open at a time since merging is nontrivial. > > > > > > Non-trivial but HIGHLY desirable. I want to run a synth pathc editor > > > and a sequencer simultaneously so I can tweak the synth's patch while > > > a sequence is playing. > > > > That may be. But multiplexing can be done using a seperate mixer > > application that can be accessed by the sequencer/patch editor as > > normal outputs. I don't want the API to compete with the ALSA > > sequencer, but to be a more flexible and slightly higher level RawMidi > > kind of interface that only supports very basic time ordered scheduling. > > What about Midi devices which aren't supported by ALSA like the usb midi > interfaces?
Well, in the system I am working on a driver is a user space process. An ALSA MIDI interface could be used through an ALSA driver process. And USB MIDI interfaces could be supported through another process. Take for example serial MIDI interfaces. No driver is needed to use these since all a driver has to provide is a way to communicate with the device and this is already possible using the serial port device. But for applications to be able to use it a standard API would have to be used, the one I'm working on for MIDI uses IPC to talk to a driver daemon. It might be possible to open a serial device driver from kernel space, but IIRC the ALSA serial MIDI driver does not do this. So you can probably not use it on all serial ports, but I may be wrong in this. --martijn
