On Sun, 2010-07-04 at 15:46 -0400, Paul Davis wrote:
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 :)
Is there literature how to learn C, C++ for Linux audio, when learning
C, C++ from the beginning? What kind of C, C++ code needs to be avoided
and what kind of programming is existential etc..
I still got some hints, but some books, e-books might be better.
- Ralf