On Saturday 31 December 2005 00:52, Florian Schmidt wrote:
All of this depends on whether physical port midi
activity is really
handled by IRQ's too. Anyone know more?
I don't know every MIDI interface details, but there are many different
variations. Please, somebody with better knowledge could provide additional
info and correct my very probable mistakes.
USB MIDI interfaces don't generate interrupts. Instead, this is done by the
USB host controller (EHCI/OHCI/UHCI). The driver for these devices provide an
interrupt handler not directly, but indirectly (the in/out URB completion
handlers). So yes, this device type may be considered interrupt-driven.
The oldest MIDI interface for PCs was the Roland MPU-401. It had two
operational modes: Intelligent and UART mode. Intelligent mode was necessary
because the low power of early personal computers CPUs. This intelligent mode
required IRQ handlers for both MIDI input and output operations, and to
control the internal timer used for hardware scheduling and event
timestamping, and also for external MTC/SMPTE synchronization. It was a
rather sofisticated piece of hardware, but there is not an ALSA driver for
these devices (and I don't know a single manufacturer selling it nowadays).
The MPU-401 UART mode doesn't provide an interrupt signal to finish the
output completion, so you must use polling for output (it provides an
interrupt only for incoming events). There is an ALSA driver for this mode,
that is used also by many consumer sound cards emulating the MPU-401. I
wouldn't recommend to use these MIDI interfaces.
Other chips, as the Ensoniq 1370/1371 used in some cheap SoundBlaster
products, included a better UART mode, providing interrupts for both
reception and transmission. There is also an ALSA driver for the 16550 UART,
that can be used with a few external devices like the Roland Canvas and the
Midiator devices.
Regards,
Pedro