Audio System
This is issue is tracking development of Molten's audio system.
Implement audio abstraction layer:
- [x] AudioSettings - To be added into EngineSettings as a .Audio property
- [ ] ISoundSource - Contains loaded audio data + format info, as well as access to related audio settings.
- [ ] ISoundInstance - Provides support of playing multiple copies of the same sound, as well as access to related audio settings.
- [ ] SoundEmitterComponent - An in-world representation of an attached ISoundInstance. Automatically updates any 3D-positioning audio info.
- [ ] Pitch and Speed control - Sound sources/instances should provide access to pitch and speed/tempo
- [ ] Dynamic sound sources/instances - Allow manipulation of sound effect data to allow real-time audio generation or manipulation. This may open the door to run-time-generated audio effects. e.g. echo, noise, explosions, etc.
- [ ] Audio capture functionality - Record audio directly from an input device. e.g. microphone or line-in
While implementing some simple build-in effects to simulate under-water sounds would be nice, i would suggest to have at least the option to play (or generate) a sound with a random range of pitch and speed adjustments without the need to ship 10 slightly different versions of the same sound.
@IceReaper That should be quite easy to achieve. Control over the pitch/speed of a sound effect/instance is something I would also expect as a standard feature.
I think sound generation can also be facilitated, by allowing streams or buffers to be used for populating sound data. For example, a memory stream could be used for real-time generation/manipulation of sound effect data.
I'll definitely look into this more once I get started on the audio system 👍