Sound Buffer.h 2.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. /******************************************************************************/
  2. #if EE_PRIVATE
  3. /******************************************************************************/
  4. enum VIRTUALIZATION_MODE // 2D Sound Virtualization Mode
  5. {
  6. VIRT_NONE, // none
  7. VIRT_LOW , // low
  8. VIRT_HIGH, // high
  9. };
  10. /******************************************************************************/
  11. const_mem_addr struct SoundBuffer // can be moved however 'memAddressChanged' needs to be called afterwards
  12. {
  13. // manage
  14. void del ();
  15. Bool create(Int frequency, Int bits, Int channels, Int samples, Bool is3D=false);
  16. // operations
  17. void memAddressChanged(); // !! can't be called when the SoundBuffer is playing/paused !!
  18. #if OPEN_SL
  19. Bool emulate3D();
  20. #endif
  21. #if DIRECT_SOUND
  22. Bool lock(Int pos=0, Int size=-1);
  23. void unlock( );
  24. #endif
  25. // get / set
  26. Bool is ()C;
  27. Bool is3D ()C;
  28. void raw ( Int raw ); Int raw ()C;
  29. void pan ( Flt pan );
  30. void volume ( Flt volume );
  31. void frequency( Int frequency);
  32. void speed ( Flt speed );
  33. void range ( Flt range ); Flt range()C;
  34. void pos (C Vec &pos ); Vec pos ()C;
  35. void vel (C Vec &vel ); Vec vel ()C;
  36. void setParams(C _Sound &sound, Bool pos_range, Bool doppler);
  37. // stop / play
  38. void stop ();
  39. void pause ();
  40. void toggle (Bool loop);
  41. Bool playing()C;
  42. void play (Bool loop);
  43. #if EE_PRIVATE
  44. void zero();
  45. #endif
  46. ~SoundBuffer() {del();}
  47. SoundBuffer();
  48. #if !EE_PRIVATE
  49. private:
  50. #endif
  51. SoundStream::Params _par;
  52. #if DIRECT_SOUND
  53. Ptr _lock_data;
  54. UInt _lock_size;
  55. IDirectSoundBuffer *_s;
  56. IDirectSound3DBuffer *_s3d;
  57. #elif XAUDIO
  58. IXAudio2SourceVoice *_sv;
  59. Mems<Byte> _data;
  60. Bool _3d;
  61. #elif OPEN_AL
  62. Bool _3d;
  63. UInt _buffer[2], _source;
  64. #elif OPEN_SL
  65. Bool _3d;
  66. Int _processed;
  67. Flt _volume, _range;
  68. Vec _pos;
  69. SLObjectItf player_object;
  70. SLPlayItf player_play;
  71. SLVolumeItf player_volume;
  72. SLPlaybackRateItf player_playback_rate;
  73. SLAndroidSimpleBufferQueueItf player_buffer_queue;
  74. SL3DLocationItf player_location;
  75. SL3DDopplerItf player_doppler;
  76. SL3DSourceItf player_source;
  77. Mems<Byte> _data;
  78. #endif
  79. NO_COPY_CONSTRUCTOR(SoundBuffer);
  80. };
  81. /******************************************************************************/
  82. #if XAUDIO
  83. extern IXAudio2 *XAudio;
  84. #endif
  85. /******************************************************************************/
  86. #endif
  87. /******************************************************************************/