1 module polyplex.core.audio.effects.reverb;
2 import polyplex.core.audio.effect;
3 import openal;
4 
5 public class ReverbEffect : AudioEffect {
6 public:
7     this() {
8         super(EffectType.Reverb);
9         setupDone();
10     }
11 
12     @property float Decay() {
13         ALfloat val;
14         alGetEffectf(id, AL_REVERB_DECAY_TIME, &val);
15         return val;
16     }
17 
18     @property void Decay(ALfloat val) {
19         alEffectf(id, AL_REVERB_DECAY_TIME, val);
20     }
21 
22     @property float DecayHighFreqRatio() {
23         ALfloat val;
24         alGetEffectf(id, AL_REVERB_DECAY_HFRATIO, &val);
25         return val;
26     }
27 
28     @property void DecayHighFreqRatio(ALfloat val) {
29         alEffectf(id, AL_REVERB_DECAY_HFRATIO, val);
30     }
31 
32     @property float Density() {
33         ALfloat val;
34         alGetEffectf(id, AL_REVERB_DENSITY, &val);
35         return val;
36     }
37 
38     @property void Density(ALfloat val) {
39         alEffectf(id, AL_REVERB_DENSITY, val);
40     }
41 
42     @property float Diffusion() {
43         ALfloat val;
44         alGetEffectf(id, AL_REVERB_DIFFUSION, &val);
45         return val;
46     }
47 
48     @property void Diffusion(ALfloat val) {
49         alEffectf(id, AL_REVERB_DIFFUSION, val);
50     }
51 
52     @property float Gain() {
53         ALfloat val;
54         alGetEffectf(id, AL_REVERB_GAIN, &val);
55         return val;
56     }
57 
58     @property void Gain(ALfloat val) {
59         alEffectf(id, AL_REVERB_GAIN, val);
60     }
61 
62     @property float GainHighFreq() {
63         ALfloat val;
64         alGetEffectf(id, AL_REVERB_GAINHF, &val);
65         return val;
66     }
67 
68     @property void GainHighFreq(ALfloat val) {
69         alEffectf(id, AL_REVERB_GAINHF, val);
70     }
71 
72     @property float ReflectionsGain() {
73         ALfloat val;
74         alGetEffectf(id, AL_REVERB_REFLECTIONS_GAIN, &val);
75         return val;
76     }
77 
78     @property void ReflectionsGain(ALfloat val) {
79         alEffectf(id, AL_REVERB_REFLECTIONS_GAIN, val);
80     }
81 
82     @property float ReflectionsDelay() {
83         ALfloat val;
84         alGetEffectf(id, AL_REVERB_REFLECTIONS_DELAY, &val);
85         return val;
86     }
87 
88     @property void ReflectionsDelay(ALfloat val) {
89         alEffectf(id, AL_REVERB_REFLECTIONS_DELAY, val);
90     }
91 
92     @property float LateReverbGain() {
93         ALfloat val;
94         alGetEffectf(id, AL_REVERB_LATE_REVERB_GAIN, &val);
95         return val;
96     }
97 
98     @property void LateReverbGain(ALfloat val) {
99         alEffectf(id, AL_REVERB_LATE_REVERB_GAIN, val);
100     }
101 
102     @property float LateReverbDelay() {
103         ALfloat val;
104         alGetEffectf(id, AL_REVERB_LATE_REVERB_DELAY, &val);
105         return val;
106     }
107 
108     @property void LateReverbDelay(ALfloat val) {
109         alEffectf(id, AL_REVERB_LATE_REVERB_DELAY, val);
110     }
111 
112     @property float AirAbsorbtionGainHighFreq() {
113         ALfloat val;
114         alGetEffectf(id, AL_REVERB_AIR_ABSORPTION_GAINHF, &val);
115         return val;
116     }
117 
118     @property void AirAbsorbtionGainHighFreq(ALfloat val) {
119         alEffectf(id, AL_REVERB_AIR_ABSORPTION_GAINHF, val);
120     }
121 
122     @property float RoomRollOffFactor() {
123         ALfloat val;
124         alGetEffectf(id, AL_REVERB_ROOM_ROLLOFF_FACTOR, &val);
125         return val;
126     }
127 
128     @property void RoomRollOffFactor(ALfloat val) {
129         alEffectf(id, AL_REVERB_ROOM_ROLLOFF_FACTOR, val);
130     }
131 
132     @property float DecayHighFreqLimit() {
133         ALfloat val;
134         alGetEffectf(id, AL_REVERB_DECAY_HFLIMIT, &val);
135         return val;
136     }
137 
138     @property void DecayHighFreqLimit(ALfloat val) {
139         alEffectf(id, AL_REVERB_DECAY_HFLIMIT, val);
140     }
141 }