[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[freesci-develop] Clarification on the Glutton sound subsystem update
From: |
Christoph Reichenbach |
Subject: |
[freesci-develop] Clarification on the Glutton sound subsystem update |
Date: |
Thu, 25 Dec 2003 02:50:23 +0100 |
User-agent: |
Mutt/1.3.28i |
Hi everyone,
just to clarify: The last commit completes the glutton sound subsystem
infrastructure, with the exception of its configuration scheme. The
system basically consists of the following units, some of which are
optional:
The polled sound event checker: This part merely serves to compute
sound events. It is separate from the part that plays sound, but
re-uses its /song iterators/, which are the internal representations
we use for songs and sound effects.
The /song player/: This can be almost anything that takes a song
iterator and plays it. Right now, the only implementation is a rather
internal one which makes use of a /sequencer/ and a /timer/.
/timer/s are things that allow certain callbacks to be invoked
semi-regularly. They are used by /song player/s and /mixer/s to handle
audio output.
/sequencer/s take individual MIDI commands and output them in some
fashion appropriate for the hardware they abstract. They may also use
certain lower-level /device/s. /software sequencers/ are a special
breed of /sequencer/s that do not require a /device/, but, instead,
are hooked into the global /mixer/.
The /mixer/ is a singleton object that accepts input data from several
/feed/s, converts it, mixes it, and converts it to the correct output
data. Then, the mixer computes how much data to output and feeds its
aggregated /pcm_device/. The mixer is one of the two entities invoked
by a /timer/.
A /feed/ is an abstract source of data for PCM mixing. It can be
finite in length. A mixer must be able to accept an arbitrary number
of feeds simultaneously.
A /pcm_device/ is an object that abstracts on an output device capable
of emitting PCM-based audio. It is aggregated and invoked by the
global /mixer/. /pcm_device/s may provide an associated /timer/, which
is preferrably chosen as the global /timer/ when deciding on which
timing mechanism to use globally.
An /audio buffer/ is a queue (FIFO) that handles "buffer underruns" by
copying the last 'sample' it received. It is commonly used by
/pcm_device/s, /mixer/s and certain /feed/s, such as those employed by
/software sequencers/.
I hope you're all sufficiently confused now. I'll write a better
description if I ever get hold of the partially LaTeXified revised
documentation.
-- Christoph
- [freesci-develop] Clarification on the Glutton sound subsystem update,
Christoph Reichenbach <=