MoltenEngine icon indicating copy to clipboard operation
MoltenEngine copied to clipboard

Audio System

Open Syncaidius opened this issue 3 years ago • 2 comments

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

Syncaidius avatar Mar 20 '22 08:03 Syncaidius

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 avatar Jun 12 '22 13:06 IceReaper

@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 👍

Syncaidius avatar Jun 13 '22 07:06 Syncaidius