BsAudio.h 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. //********************************** Banshee Engine (www.banshee3d.com) **************************************************//
  2. //**************** Copyright (c) 2016 Marko Pintera ([email protected]). All rights reserved. **********************//
  3. #pragma once
  4. #include "BsCorePrerequisites.h"
  5. #include "BsModule.h"
  6. namespace BansheeEngine
  7. {
  8. /** @addtogroup Audio
  9. * @{
  10. */
  11. /** Identifier for a device that can be used for playing audio. */
  12. struct AudioDevice
  13. {
  14. WString name;
  15. };
  16. /** Provides global functionality relating to sounds and music. */
  17. class BS_CORE_EXPORT Audio : public Module<Audio>
  18. {
  19. public:
  20. virtual ~Audio() { }
  21. /** Sets global audio volume. In range [0, 1]. */
  22. virtual void setVolume(float volume) = 0;
  23. /** Returns global audio volume. In range [0, 1]. */
  24. virtual float getVolume() const = 0;
  25. /** Pauses audio reproduction globally. */
  26. virtual void setPaused(bool paused) = 0;
  27. /** Checks is audio reproduction currently paused. */
  28. virtual bool isPaused() const = 0;
  29. /** Changes the device on which is the audio played back on. */
  30. virtual void setActiveDevice(const AudioDevice& device) = 0;
  31. /** Retrieves the identifier of the device that the audio is currently being played back on. */
  32. virtual AudioDevice getActiveDevice() const = 0;
  33. /** Returns the default audio device identifier. */
  34. virtual AudioDevice getDefaultDevice() const = 0;
  35. /** Returns a list of all available audio devices. */
  36. virtual const Vector<AudioDevice>& getAllDevices() const = 0;
  37. /** @name Internal
  38. * @{
  39. */
  40. /** Called once per frame. Queues streaming audio requests. */
  41. virtual void _update() = 0;
  42. /** @} */
  43. protected:
  44. friend class AudioClip;
  45. friend class AudioListener;
  46. friend class AudioSource;
  47. /**
  48. * Creates a new audio clip.
  49. *
  50. * @param[in] samples Stream containing audio samples in format specified in @p desc.
  51. * @param[in] streamSize Size of the audio data in the provided stream, in bytes.
  52. * @param[in] numSamples Number of samples in @p samples stream.
  53. * @param[in] desc Descriptor describing the type of the audio stream (format, sample rate, etc.).
  54. * @return Newly created AudioClip. Must be manually initialized.
  55. */
  56. virtual SPtr<AudioClip> createClip(const SPtr<DataStream>& samples, UINT32 streamSize, UINT32 numSamples,
  57. const AUDIO_CLIP_DESC& desc) = 0;
  58. /** Creates a new AudioListener. */
  59. virtual SPtr<AudioListener> createListener() = 0;
  60. /** Creates a new AudioSource. */
  61. virtual SPtr<AudioSource> createSource() = 0;
  62. };
  63. /** Provides easier access to Audio. */
  64. BS_CORE_EXPORT Audio& gAudio();
  65. /** @} */
  66. }