00001
00002
00003
00004
00005 #ifndef __I_IRRKLANG_SOUND_EFFECT_CONTROL_H_INCLUDED__
00006 #define __I_IRRKLANG_SOUND_EFFECT_CONTROL_H_INCLUDED__
00007
00008 #include "ik_IVirtualRefCounted.h"
00009 #include "ik_vec3d.h"
00010
00011
00012 namespace irrklang
00013 {
00015
00026 class ISoundEffectControl
00027 {
00028 public:
00029
00031 virtual void disableAllEffects() = 0;
00032
00034
00046 virtual bool enableChorusSoundEffect(ik_f32 fWetDryMix = 50,
00047 ik_f32 fDepth = 10,
00048 ik_f32 fFeedback = 25,
00049 ik_f32 fFrequency = 1.1,
00050 bool sinusWaveForm = true,
00051 ik_f32 fDelay = 16,
00052 ik_s32 lPhase = 90) = 0;
00053
00055 virtual void disableChorusSoundEffect() = 0;
00056
00058 virtual bool isChorusSoundEffectEnabled() = 0;
00059
00061
00070 virtual bool enableCompressorSoundEffect( ik_f32 fGain = 0,
00071 ik_f32 fAttack = 10,
00072 ik_f32 fRelease = 200,
00073 ik_f32 fThreshold = -20,
00074 ik_f32 fRatio = 3,
00075 ik_f32 fPredelay = 4) = 0;
00076
00078 virtual void disableCompressorSoundEffect() = 0;
00079
00081 virtual bool isCompressorSoundEffectEnabled() = 0;
00082
00084
00093 virtual bool enableDistortionSoundEffect(ik_f32 fGain = -18,
00094 ik_f32 fEdge = 15,
00095 ik_f32 fPostEQCenterFrequency = 2400,
00096 ik_f32 fPostEQBandwidth = 2400,
00097 ik_f32 fPreLowpassCutoff = 8000) = 0;
00098
00100 virtual void disableDistortionSoundEffect() = 0;
00101
00103 virtual bool isDistortionSoundEffectEnabled() = 0;
00104
00106
00114 virtual bool enableEchoSoundEffect(ik_f32 fWetDryMix = 50,
00115 ik_f32 fFeedback = 50,
00116 ik_f32 fLeftDelay = 500,
00117 ik_f32 fRightDelay = 500,
00118 ik_s32 lPanDelay = 0) = 0;
00119
00121 virtual void disableEchoSoundEffect() = 0;
00122
00124 virtual bool isEchoSoundEffectEnabled() = 0;
00125
00127
00141 virtual bool enableFlangerSoundEffect(ik_f32 fWetDryMix = 50,
00142 ik_f32 fDepth = 100,
00143 ik_f32 fFeedback = -50,
00144 ik_f32 fFrequency = 0.25f,
00145 bool triangleWaveForm = true,
00146 ik_f32 fDelay = 2,
00147 ik_s32 lPhase = 0) = 0;
00148
00150 virtual void disableFlangerSoundEffect() = 0;
00151
00153 virtual bool isFlangerSoundEffectEnabled() = 0;
00154
00156
00161 virtual bool enableGargleSoundEffect(ik_s32 rateHz = 20, bool sinusWaveForm = true) = 0;
00162
00164 virtual void disableGargleSoundEffect() = 0;
00165
00167 virtual bool isGargleSoundEffectEnabled() = 0;
00168
00170
00185 virtual bool enableI3DL2ReverbSoundEffect(ik_s32 lRoom = -1000,
00186 ik_s32 lRoomHF = -100,
00187 ik_f32 flRoomRolloffFactor = 0,
00188 ik_f32 flDecayTime = 1.49f,
00189 ik_f32 flDecayHFRatio = 0.83f,
00190 ik_s32 lReflections = -2602,
00191 ik_f32 flReflectionsDelay = 0.007f,
00192 ik_s32 lReverb = 200,
00193 ik_f32 flReverbDelay = 0.011f,
00194 ik_f32 flDiffusion = 100.0f,
00195 ik_f32 flDensity = 100.0f,
00196 ik_f32 flHFReference = 5000.0f ) = 0;
00197
00199 virtual void disableI3DL2ReverbSoundEffect() = 0;
00200
00202 virtual bool isI3DL2ReverbSoundEffectEnabled() = 0;
00203
00205
00211 virtual bool enableParamEqSoundEffect(ik_f32 fCenter = 8000,
00212 ik_f32 fBandwidth = 12,
00213 ik_f32 fGain = 0) = 0;
00214
00216 virtual void disableParamEqSoundEffect() = 0;
00217
00219 virtual bool isParamEqSoundEffectEnabled() = 0;
00220
00222
00228 virtual bool enableWavesReverbSoundEffect(ik_f32 fInGain = 0,
00229 ik_f32 fReverbMix = 0,
00230 ik_f32 fReverbTime = 1000,
00231 ik_f32 fHighFreqRTRatio = 0.001f) = 0;
00232
00234 virtual void disableWavesReverbSoundEffect() = 0;
00235
00237 virtual bool isWavesReverbSoundEffectEnabled() = 0;
00238 };
00239
00240 }
00241
00242
00243 #endif