pshifter.cpp 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. #include "config.h"
  2. #include "AL/al.h"
  3. #include "AL/efx.h"
  4. #include "effects.h"
  5. #include "effects/base.h"
  6. namespace {
  7. void Pshifter_setParamf(EffectProps*, ALenum param, float)
  8. { throw effect_exception{AL_INVALID_ENUM, "Invalid pitch shifter float property 0x%04x", param}; }
  9. void Pshifter_setParamfv(EffectProps*, ALenum param, const float*)
  10. {
  11. throw effect_exception{AL_INVALID_ENUM, "Invalid pitch shifter float-vector property 0x%04x",
  12. param};
  13. }
  14. void Pshifter_setParami(EffectProps *props, ALenum param, int val)
  15. {
  16. switch(param)
  17. {
  18. case AL_PITCH_SHIFTER_COARSE_TUNE:
  19. if(!(val >= AL_PITCH_SHIFTER_MIN_COARSE_TUNE && val <= AL_PITCH_SHIFTER_MAX_COARSE_TUNE))
  20. throw effect_exception{AL_INVALID_VALUE, "Pitch shifter coarse tune out of range"};
  21. props->Pshifter.CoarseTune = val;
  22. break;
  23. case AL_PITCH_SHIFTER_FINE_TUNE:
  24. if(!(val >= AL_PITCH_SHIFTER_MIN_FINE_TUNE && val <= AL_PITCH_SHIFTER_MAX_FINE_TUNE))
  25. throw effect_exception{AL_INVALID_VALUE, "Pitch shifter fine tune out of range"};
  26. props->Pshifter.FineTune = val;
  27. break;
  28. default:
  29. throw effect_exception{AL_INVALID_ENUM, "Invalid pitch shifter integer property 0x%04x",
  30. param};
  31. }
  32. }
  33. void Pshifter_setParamiv(EffectProps *props, ALenum param, const int *vals)
  34. { Pshifter_setParami(props, param, vals[0]); }
  35. void Pshifter_getParami(const EffectProps *props, ALenum param, int *val)
  36. {
  37. switch(param)
  38. {
  39. case AL_PITCH_SHIFTER_COARSE_TUNE:
  40. *val = props->Pshifter.CoarseTune;
  41. break;
  42. case AL_PITCH_SHIFTER_FINE_TUNE:
  43. *val = props->Pshifter.FineTune;
  44. break;
  45. default:
  46. throw effect_exception{AL_INVALID_ENUM, "Invalid pitch shifter integer property 0x%04x",
  47. param};
  48. }
  49. }
  50. void Pshifter_getParamiv(const EffectProps *props, ALenum param, int *vals)
  51. { Pshifter_getParami(props, param, vals); }
  52. void Pshifter_getParamf(const EffectProps*, ALenum param, float*)
  53. { throw effect_exception{AL_INVALID_ENUM, "Invalid pitch shifter float property 0x%04x", param}; }
  54. void Pshifter_getParamfv(const EffectProps*, ALenum param, float*)
  55. {
  56. throw effect_exception{AL_INVALID_ENUM, "Invalid pitch shifter float vector-property 0x%04x",
  57. param};
  58. }
  59. EffectProps genDefaultProps() noexcept
  60. {
  61. EffectProps props{};
  62. props.Pshifter.CoarseTune = AL_PITCH_SHIFTER_DEFAULT_COARSE_TUNE;
  63. props.Pshifter.FineTune = AL_PITCH_SHIFTER_DEFAULT_FINE_TUNE;
  64. return props;
  65. }
  66. } // namespace
  67. DEFINE_ALEFFECT_VTABLE(Pshifter);
  68. const EffectProps PshifterEffectProps{genDefaultProps()};