I don't know if this was requested:
A transparent "preemptive" priority sound manager.
Because OpenAL can go from 16 to 62 sources (optimistically). Maybe more with some fat-ass sound cards, but those aren't probably owned by the common public.
Like for example, it could have this interface (it feels somewhat redundant, it could be worked out):
void Sound::SetPriority(float Priority);
void Sound::SetSeizable(bool Seizable);
void Sound::SetOwnsSource(bool OwnsSource);
priority[0..1]: default 0.5
seizable: default false
OwnsSource: default true
This default values yield a "classic" behaviour.
So if a sound is requested to play:
If there are free sources: Attach to a source and play it
If no sources are available: Seize the source of a less or equal priority sound that is seizable.
Sounds that own the source are not in the pool of non-playing sources until they are destroyed.
If the lib is meant to be easy, it should have this functionality. Everything is explained like Sound is to audio like a Sprite is to Graphics.
But Sound actually is owning a resource (AL's Source), Sprites don't.
For instance, every enemy object owns it's own sprite. But if they wanted to own their own Sound... it would fail miserably on some drivers.
On other drivers, it would just allow me to have ilimited sources but only play some and stop playing when it runs out of real internal sources (without priority).
Also, if the user wants to implement its own manager, or don't care... then it just have to leave this parameters as default.
EDIT: it could also take into account the distance to the listener to roughly degrade the priority by the distance (roughly=fast=sqrt table).
Thanks
-Martín