On Wed, Sep 23, 2015 at 8:14 PM, Clemens Ladisch clemens@ladisch.de wrote:
Francesco Lavra wrote:
So how would you approach the task of writing a MIDI driver that uses UART behind the scenes? Am I correct in assuming that I have to use the RawMIDI interface (as the UART 16550 driver does) to make my MIDI port available to ALSA applications? Or is there a better alternative?
The kernel-internal serial port interfaces are designed to be able to run a console.
The easiest way would be a userspace daemon that bridges between some /dev/tty* and the ALSA sequencer. See http://www.alsa-project.org/~clemens/usbmidid/usbmidid.c for an example that uses some other device.
There already is an userspace daemon that bridges a tty with the ALSA sequencer: ttymidi (http://www.varal.org/ttymidi/). Unfortunately it doesn't support non-standard baud rates such as 31.25 kbps, and using the termios API it's not possible to set non-standard baud rates. Messing with the serial port settings via setserial could do the trick (not sure if it works on my system, though), otherwise another solution could be to use the (non-POSIX) termios2 API...
Regards, Francesco