Each user can configure its own variant of nullsound, with its own set
of exported sound command, like e.g. "play a sample", "start a music",
"fade volume"...
The sound driver itself is now a sort of cooperative scheduler,
configured to handle a number of concurrent sound actions. Each sound
action gets called by the driver to update its local state, and then
yield execution so the next action can be scheduled.
As a first commit, the driver supports playing ADPCM-a samples. Other
modules such as music playback can be added in subsequent commits.
Each user can configure its own variant of nullsound, with its own set of exported sound command, like e.g. "play a sample", "start a music", "fade volume"...
The sound driver itself is now a sort of cooperative scheduler, configured to handle a number of concurrent sound actions. Each sound action gets called by the driver to update its local state, and then yield execution so the next action can be scheduled.
As a first commit, the driver supports playing ADPCM-a samples. Other modules such as music playback can be added in subsequent commits.
Closes #16