+---------------------+ +----------------------+ +--------------+ | Sound Object hander | | Faked 'audio.device' | | Applications | etc... +---------------------+ +----------------------+ +--------------+ | | | | +--------------------------+ | | | +----------------------------------------------+ V V V +--------------+ +--------------+ | ahi.device | | Applications | +--------------+ +--------------+ | | | +---------------+ V V +---------------+ | ahi.library | +---------------+ | | | | | +----------------------------------+ | +-------------------+ | V V V +-----------------+ +---------------+ +-------------------+ | ahi/paula.audio | | ahi/gus.audio | | ahi/toccata.audio | etc... +-----------------+ +---------------+ +-------------------+ Level 1: Device interface o Allows applications to share the resources, with priorities etc. o Could even use multiply libraries on a soundcard equipped system, to allow both the native hardware and the card to be used. o The user (not the application programmer) could select desired library (libraries), resolution (8/12/16 bit), mixing frequency, number of channels etc... Level 2: Library interface o This library contains mixing functions, perhaps sample conversion and (de)crunch functions etc. o For all programs that talks to the hardware today (and has a good reason to do so), like composer programs and module players. And the ahi.device, of course. Level 3: Sound card drivers o The drivers are libraries. o Only one owner at time. o Can either just send a mixed audio stream to the sound card, or chose to preform the mixing itself, perhaps with its own DSP.