The currently available sequencer interfaces for Linux are the /dev/sequencer and /dev/music from the Open Sound System, OSS or OSS/Free. Though these interfaces are sufficiently useful for most sequencer applications they have a few shortcomings:
Only one application at a time can have access.
Because of non real-time character of a time-shared system like Linux the driver offers a queue in the kernel which is needed to prevent events to be scheduled too late. This queue introduces big latency in event processing.
It's one big monolithic driver.
Especially the 2nd issue restricts building midi oriented applications that can perform on-par with applications on Apple Macinctoshes and Atari ST's regarding real-time response. Examples:
If one wants to have a sequencer perform a MIDI THRU function, it will suffer form big delays, and using the OUT_OFF_BAND ioctl() results in hanging notes because the driver has no clue what events are playing.
Events have to be enqueued ahead. Parameter changes (eg. volume control, muting tracks or instruments) will not be effective instantly.
In practice the currently available (OSS) sequencer seems to be best suited for applications that only perform playback of event like eg. MIDI and MOD file players.