1 module polyplex.core.audio.effects.eaxreverb; 2 import polyplex.core.audio.effects; 3 import polyplex.core.audio.effect; 4 import openal; 5 6 /* 7 An advanced form of reverb which also supports echoing 8 WARNING: Some sound cards might not support this. 9 10 If in doubt you can bundle OpenAL-soft with the application. 11 OpenAL-Soft has no hardware accelleration but supports AL_EFFECT_EAXREVERB. 12 */ 13 public class RoomDynamicsEffect : AudioEffect { 14 public: 15 this() { 16 super(EffectType.RoomDynamics); 17 setupDone(); 18 } 19 20 @property float Decay() { 21 ALfloat val; 22 alGetEffectf(id, AL_EAXREVERB_DECAY_TIME, &val); 23 return val; 24 } 25 26 @property void Decay(ALfloat val) { 27 alEffectf(id, AL_EAXREVERB_DECAY_TIME, val); 28 } 29 30 @property float DecayHighFreqRatio() { 31 ALfloat val; 32 alGetEffectf(id, AL_EAXREVERB_DECAY_HFRATIO, &val); 33 return val; 34 } 35 36 @property void DecayHighFreqRatio(ALfloat val) { 37 alEffectf(id, AL_EAXREVERB_DECAY_HFRATIO, val); 38 } 39 40 @property float DecayLowFreqRatio() { 41 ALfloat val; 42 alGetEffectf(id, AL_EAXREVERB_DECAY_LFRATIO, &val); 43 return val; 44 } 45 46 @property void DecayLowFreqRatio(ALfloat val) { 47 alEffectf(id, AL_EAXREVERB_DECAY_LFRATIO, val); 48 } 49 50 @property float Density() { 51 ALfloat val; 52 alGetEffectf(id, AL_EAXREVERB_DENSITY, &val); 53 return val; 54 } 55 56 @property void Density(ALfloat val) { 57 alEffectf(id, AL_EAXREVERB_DENSITY, val); 58 } 59 60 @property float Diffusion() { 61 ALfloat val; 62 alGetEffectf(id, AL_EAXREVERB_DIFFUSION, &val); 63 return val; 64 } 65 66 @property void Diffusion(ALfloat val) { 67 alEffectf(id, AL_EAXREVERB_DIFFUSION, val); 68 } 69 70 @property float Gain() { 71 ALfloat val; 72 alGetEffectf(id, AL_EAXREVERB_GAIN, &val); 73 return val; 74 } 75 76 @property void Gain(ALfloat val) { 77 alEffectf(id, AL_EAXREVERB_GAIN, val); 78 } 79 80 @property float GainHighFreq() { 81 ALfloat val; 82 alGetEffectf(id, AL_EAXREVERB_GAINHF, &val); 83 return val; 84 } 85 86 @property void GainHighFreq(ALfloat val) { 87 alEffectf(id, AL_EAXREVERB_GAINHF, val); 88 } 89 90 @property float GainLowFreq() { 91 ALfloat val; 92 alGetEffectf(id, AL_EAXREVERB_GAINLF, &val); 93 return val; 94 } 95 96 @property void GainLowFreq(ALfloat val) { 97 alEffectf(id, AL_EAXREVERB_GAINLF, val); 98 } 99 100 @property float ReflectionsGain() { 101 ALfloat val; 102 alGetEffectf(id, AL_EAXREVERB_REFLECTIONS_GAIN, &val); 103 return val; 104 } 105 106 @property void ReflectionsGain(ALfloat val) { 107 alEffectf(id, AL_EAXREVERB_REFLECTIONS_GAIN, val); 108 } 109 110 @property float ReflectionsDelay() { 111 ALfloat val; 112 alGetEffectf(id, AL_EAXREVERB_REFLECTIONS_DELAY, &val); 113 return val; 114 } 115 116 @property void ReflectionsDelay(ALfloat val) { 117 alEffectf(id, AL_EAXREVERB_REFLECTIONS_DELAY, val); 118 } 119 120 @property float ReflectionsPan() { 121 ALfloat val; 122 alGetEffectf(id, AL_EAXREVERB_REFLECTIONS_PAN, &val); 123 return val; 124 } 125 126 @property void ReflectionsPan(ALfloat val) { 127 alEffectf(id, AL_EAXREVERB_REFLECTIONS_PAN, val); 128 } 129 130 @property float EchoTime() { 131 ALfloat val; 132 alGetEffectf(id, AL_EAXREVERB_ECHO_TIME, &val); 133 return val; 134 } 135 136 @property void EchoTime(ALfloat val) { 137 alEffectf(id, AL_EAXREVERB_ECHO_TIME, val); 138 } 139 140 @property float EchoDepth() { 141 ALfloat val; 142 alGetEffectf(id, AL_EAXREVERB_ECHO_DEPTH, &val); 143 return val; 144 } 145 146 @property void EchoDepth(ALfloat val) { 147 alEffectf(id, AL_EAXREVERB_ECHO_DEPTH, val); 148 } 149 150 @property float ModulationTime() { 151 ALfloat val; 152 alGetEffectf(id, AL_EAXREVERB_MODULATION_TIME, &val); 153 return val; 154 } 155 156 @property void ModulationTime(ALfloat val) { 157 alEffectf(id, AL_EAXREVERB_MODULATION_TIME, val); 158 } 159 160 @property float ModulationDepth() { 161 ALfloat val; 162 alGetEffectf(id, AL_EAXREVERB_MODULATION_DEPTH, &val); 163 return val; 164 } 165 166 @property void ModulationDepth(ALfloat val) { 167 alEffectf(id, AL_EAXREVERB_MODULATION_DEPTH, val); 168 } 169 170 @property float LateReverbGain() { 171 ALfloat val; 172 alGetEffectf(id, AL_EAXREVERB_LATE_REVERB_GAIN, &val); 173 return val; 174 } 175 176 @property void LateReverbGain(ALfloat val) { 177 alEffectf(id, AL_EAXREVERB_LATE_REVERB_GAIN, val); 178 } 179 180 @property float LateReverbDelay() { 181 ALfloat val; 182 alGetEffectf(id, AL_EAXREVERB_LATE_REVERB_DELAY, &val); 183 return val; 184 } 185 186 @property void LateReverbDelay(ALfloat val) { 187 alEffectf(id, AL_EAXREVERB_LATE_REVERB_DELAY, val); 188 } 189 190 @property float AirAbsorbtionGainHighFreq() { 191 ALfloat val; 192 alGetEffectf(id, AL_EAXREVERB_AIR_ABSORPTION_GAINHF, &val); 193 return val; 194 } 195 196 @property void AirAbsorbtionGainHighFreq(ALfloat val) { 197 alEffectf(id, AL_EAXREVERB_AIR_ABSORPTION_GAINHF, val); 198 } 199 200 @property float RoomRollOffFactor() { 201 ALfloat val; 202 alGetEffectf(id, AL_EAXREVERB_ROOM_ROLLOFF_FACTOR, &val); 203 return val; 204 } 205 206 @property void RoomRollOffFactor(ALfloat val) { 207 alEffectf(id, AL_EAXREVERB_ROOM_ROLLOFF_FACTOR, val); 208 } 209 210 @property float HighFreqReference() { 211 ALfloat val; 212 alGetEffectf(id, AL_EAXREVERB_HFREFERENCE, &val); 213 return val; 214 } 215 216 @property void HighFreqReference(ALfloat val) { 217 alEffectf(id, AL_EAXREVERB_HFREFERENCE, val); 218 } 219 220 @property float LowFreqReference() { 221 ALfloat val; 222 alGetEffectf(id, AL_EAXREVERB_LFREFERENCE, &val); 223 return val; 224 } 225 226 @property void LowFreqReference(ALfloat val) { 227 alEffectf(id, AL_EAXREVERB_LFREFERENCE, val); 228 } 229 230 @property float DecayHighFreqLimit() { 231 ALfloat val; 232 alGetEffectf(id, AL_EAXREVERB_DECAY_HFLIMIT, &val); 233 return val; 234 } 235 236 @property void DecayHighFreqLimit(ALfloat val) { 237 alEffectf(id, AL_EAXREVERB_DECAY_HFLIMIT, val); 238 } 239 }