ALboolean COALExtProvider::SetEFXEAXReverbProperties(EFXEAXREVERBPROPERTIES *pEFXEAXReverb, ALuint uiEffect) { if(!m_initialized) return AL_FALSE; ALboolean bReturn = AL_FALSE; if (pEFXEAXReverb) { // Clear AL Error code alGetError(); alEffectf(uiEffect, AL_EAXREVERB_DENSITY, pEFXEAXReverb->flDensity); alEffectf(uiEffect, AL_EAXREVERB_DIFFUSION, pEFXEAXReverb->flDiffusion); alEffectf(uiEffect, AL_EAXREVERB_GAIN, pEFXEAXReverb->flGain); alEffectf(uiEffect, AL_EAXREVERB_GAINHF, pEFXEAXReverb->flGainHF); alEffectf(uiEffect, AL_EAXREVERB_GAINLF, pEFXEAXReverb->flGainLF); alEffectf(uiEffect, AL_EAXREVERB_DECAY_TIME, pEFXEAXReverb->flDecayTime); alEffectf(uiEffect, AL_EAXREVERB_DECAY_HFRATIO, pEFXEAXReverb->flDecayHFRatio); alEffectf(uiEffect, AL_EAXREVERB_DECAY_LFRATIO, pEFXEAXReverb->flDecayLFRatio); alEffectf(uiEffect, AL_EAXREVERB_REFLECTIONS_GAIN, pEFXEAXReverb->flReflectionsGain); alEffectf(uiEffect, AL_EAXREVERB_REFLECTIONS_DELAY, pEFXEAXReverb->flReflectionsDelay); alEffectfv(uiEffect, AL_EAXREVERB_REFLECTIONS_PAN, pEFXEAXReverb->flReflectionsPan); alEffectf(uiEffect, AL_EAXREVERB_LATE_REVERB_GAIN, pEFXEAXReverb->flLateReverbGain); alEffectf(uiEffect, AL_EAXREVERB_LATE_REVERB_DELAY, pEFXEAXReverb->flLateReverbDelay); alEffectfv(uiEffect, AL_EAXREVERB_LATE_REVERB_PAN, pEFXEAXReverb->flLateReverbPan); alEffectf(uiEffect, AL_EAXREVERB_ECHO_TIME, pEFXEAXReverb->flEchoTime); alEffectf(uiEffect, AL_EAXREVERB_ECHO_DEPTH, pEFXEAXReverb->flEchoDepth); alEffectf(uiEffect, AL_EAXREVERB_MODULATION_TIME, pEFXEAXReverb->flModulationTime); alEffectf(uiEffect, AL_EAXREVERB_MODULATION_DEPTH, pEFXEAXReverb->flModulationDepth); alEffectf(uiEffect, AL_EAXREVERB_AIR_ABSORPTION_GAINHF, pEFXEAXReverb->flAirAbsorptionGainHF); alEffectf(uiEffect, AL_EAXREVERB_HFREFERENCE, pEFXEAXReverb->flHFReference); alEffectf(uiEffect, AL_EAXREVERB_LFREFERENCE, pEFXEAXReverb->flLFReference); alEffectf(uiEffect, AL_EAXREVERB_ROOM_ROLLOFF_FACTOR, pEFXEAXReverb->flRoomRolloffFactor); alEffecti(uiEffect, AL_EAXREVERB_DECAY_HFLIMIT, pEFXEAXReverb->iDecayHFLimit); if (alGetError() == AL_NO_ERROR) bReturn = AL_TRUE; } return bReturn; }
void EaxReverb::setLateReverbPan(const AudioSpaceCoordinate& coordinate) { m_lateReverbPan.x = std::min(coordinate.x, double(1.0)); m_lateReverbPan.x = std::max(coordinate.x, double(-1.0)); m_lateReverbPan.y = std::min(coordinate.y, double(1.0)); m_lateReverbPan.y = std::max(coordinate.y, double(-1.0)); m_lateReverbPan.z = std::min(coordinate.z, double(1.0)); m_lateReverbPan.z = std::max(coordinate.z, double(-1.0)); ALfloat vec[3] = { static_cast<ALfloat>(m_lateReverbPan.x), static_cast<ALfloat>(m_lateReverbPan.y), static_cast<ALfloat>(m_lateReverbPan.z) }; alEffectfv(m_effect, AL_EAXREVERB_LATE_REVERB_PAN, vec); }
void CEFX::CommitEffects() { if (!supported) return; //! commit reverb properties for (std::map<ALuint, ALfloat>::iterator it = sfxProperties->properties_f.begin(); it != sfxProperties->properties_f.end(); ++it) alEffectf(sfxReverb, it->first, it->second); for (std::map<ALuint, ALint>::iterator it = sfxProperties->properties_i.begin(); it != sfxProperties->properties_i.end(); ++it) alEffecti(sfxReverb, it->first, it->second); for (std::map<ALuint, float3>::iterator it = sfxProperties->properties_v.begin(); it != sfxProperties->properties_v.end(); ++it) alEffectfv(sfxReverb, it->first, (ALfloat*)&it->second[0]); alEffectf(sfxReverb, AL_EAXREVERB_ROOM_ROLLOFF_FACTOR, sfxProperties->properties_f[AL_EAXREVERB_ROOM_ROLLOFF_FACTOR] * heightRolloffModifier); alAuxiliaryEffectSloti(sfxSlot, AL_EFFECTSLOT_EFFECT, sfxReverb); for (std::map<ALuint, ALfloat>::iterator it=sfxProperties->filter_properties_f.begin(); it != sfxProperties->filter_properties_f.end(); ++it) alFilterf(sfxFilter, it->first, it->second); updates++; }
static ALvoid CDECL wine_alEffectfv(ALuint eid, ALenum param, const ALfloat* values) { alEffectfv(eid, param, values); }