On Sun, Jul 4, 2010 at 3:39 PM, Ralf Mardorf <ralf.mardorf(a)alice-dsl.net> wrote:
I once did a MIDI extension for SpeechBasic to program
a real time MIDI
sound sampler on BASIC for the C64, for example
$1810 LDA $DEO6
$1813 LSR
$1814 BCC $1810
$1816 LDA $DE07; read MIDI event byte, usually followed by RTS
this code has nothing whatsoever to do with anything in a multi-user,
multitasking OS except for the very internal part of an interrupt
handler.
the code in ALSA that you find complex or whatever is code associated
with moving data between kernel space and user space, and with sharing
resources. furthermore, ALSA contains a lot of code related to the
idea of sequencing MIDI (i.e. scheduling it) and routing it between
clients, none of which is even remotely imagined by the code above. if
you want to work on an operating system that does cooperative
multitasking (if any multitasking at all), and where all the registers
of all the devices are accessible to any program, then you can get
back to the style of programming you show above. if you want the
benefits that an OS like Linux (or windows, or os x, or bsd or ...)
offer, then you have to put up with the fact that nothing is that
simple anymore.
of course, if you use JACK MIDI, then from the application's point of
view, it really is just about that simple :)