1 module polyplex.core.audio.effects.chorus;
2 import polyplex.core.audio.effects;
3 import polyplex.core.audio.effect;
4 import openal;
5 
6 /// A Chours
7 public class ChorusEffect : AudioEffect {
8 public:
9     this() {
10         super(EffectType.Chorus);
11         setupDone();
12     }
13 
14     @property WaveformType Waveform() {
15         ALenum val;
16         alGetEffecti(id, AL_CHORUS_WAVEFORM, &val);
17         return cast(WaveformType)val;
18     }
19 
20     @property void Waveform(WaveformType val) {
21         alEffecti(id, AL_CHORUS_WAVEFORM, cast(ALuint)val);
22     }
23 
24     @property int Phase() {
25         ALint val;
26         alGetEffecti(id, AL_CHORUS_PHASE, &val);
27         return cast(int)val;
28     }
29 
30     @property void Phase(int val) {
31         alEffecti(id, AL_CHORUS_PHASE, cast(ALint)val);
32     }
33 
34     @property float Rate() {
35         ALfloat val;
36         alGetEffectf(id, AL_CHORUS_RATE, &val);
37         return val;
38     }
39 
40     @property void Rate(ALfloat val) {
41         alEffectf(id, AL_CHORUS_RATE, val);
42     }
43 
44     @property float Depth() {
45         ALfloat val;
46         alGetEffectf(id, AL_CHORUS_DEPTH, &val);
47         return val;
48     }
49 
50     @property void Depth(ALfloat val) {
51         alEffectf(id, AL_CHORUS_DEPTH, val);
52     }
53 
54     @property float Feedback() {
55         ALfloat val;
56         alGetEffectf(id, AL_CHORUS_FEEDBACK, &val);
57         return val;
58     }
59 
60     @property void Feedback(ALfloat val) {
61         alEffectf(id, AL_CHORUS_FEEDBACK, val);
62     }
63 
64     @property float Delay() {
65         ALfloat val;
66         alGetEffectf(id, AL_CHORUS_DELAY, &val);
67         return val;
68     }
69 
70     @property void Delay(ALfloat val) {
71         alEffectf(id, AL_CHORUS_DELAY, val);
72     }
73 }