Goals for getting audio-cpp V2 are to move from experimental changes to officially documenting the audio-cpp APIs.
This involves basic device management and enumeration operations. Making sure the only dependency for this project is miniaudio.
These are changes for v2:
audio::context
audio::device
audio::sound
audio::listener
audio::engine
Brief Details
audio::context
- Primarily for enumerating audio devices (playback and capture)
- Configuration for audio device priorities
- Setting systemwide thread priorities
audio::device
- Primarily for streaming data to either playback/capture devices.
- Can be configured as playback, capture, or full duplex devices.
- Configuring resampling in gigahertz.
audio::sound
- Primarily to represent 3D sound sources.
- Streaming audio files as a kind of
audio::sound.
- External API's for playback, spatialization, and other operations to perform on the sound.
- Has API's for dynamic configuration for real-time audio.
audio::listener
- Represent locations of your sound in a 3D world.
- Can set the position/direction of where your sounds are located.
- Works with
audio::sound to perform panning and attenuation on multiple sound sources.
audio::engine
- Used to manage resources (ref-counting, etc).
- Manage multiple listeners through indices to specify which listener to retrieve.
- Tracks both
audio::listener and audio::sound resources.
- Provide API's to provide routines to execute multiple sub-mixes of audio sources altogether.
At Completion -- Expected Behavior
Once this task is completed. This would mean that we have enough capabilities to manage not just multiple listeners. Rather, we could also successfully perform base audio operations.
Whether this is playing multiple sounds, we would be able to integrate into TheAtlasEngine to manage where sounds could be located.
Should be able to create multiple listeners on multiple threads that play different sounds and signal each other when one of the sounds is finished. To indicate a transitioning period.
[listener1] -> play sound1.wav (thread 1
[listener2] -> play sound2.wav (thread 2)
--- workflow ---
[ Listener 1 ]
|
v
[ Play Sound 1 ]
|
v
[ Stop/Signal ] --------------------
| |
v v
[ Listener 2 ] --> [ Pause Listener 1 ]
|
v
[ Play Sound 2 ]
|
v
[ sound2.wav ]
Goals for getting audio-cpp V2 are to move from experimental changes to officially documenting the audio-cpp APIs.
This involves basic device management and enumeration operations. Making sure the only dependency for this project is
miniaudio.These are changes for v2:
audio::contextaudio::deviceaudio::soundaudio::listeneraudio::engineBrief Details
audio::contextaudio::deviceaudio::soundaudio::sound.audio::listeneraudio::soundto perform panning and attenuation on multiple sound sources.audio::engineaudio::listenerandaudio::soundresources.At Completion -- Expected Behavior
Once this task is completed. This would mean that we have enough capabilities to manage not just multiple listeners. Rather, we could also successfully perform base audio operations.
Whether this is playing multiple sounds, we would be able to integrate into TheAtlasEngine to manage where sounds could be located.
Should be able to create multiple listeners on multiple threads that play different sounds and signal each other when one of the sounds is finished. To indicate a transitioning period.