From 63eb905712597903f242ce28a1605b91ba260d1c Mon Sep 17 00:00:00 2001 From: Ken Cooke Date: Sat, 9 Nov 2019 09:32:00 -0800 Subject: [PATCH] Redefine audio zone attenuation coefficient of 1.0 to mean "silent at any distance" instead of extreme rate of falloff with distance. --- assignment-client/src/audio/AudioMixerSlave.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/assignment-client/src/audio/AudioMixerSlave.cpp b/assignment-client/src/audio/AudioMixerSlave.cpp index e5e9f89984..204095ab94 100644 --- a/assignment-client/src/audio/AudioMixerSlave.cpp +++ b/assignment-client/src/audio/AudioMixerSlave.cpp @@ -782,7 +782,7 @@ float computeGain(float masterAvatarGain, gain *= std::max(1.0f - d / (distanceLimit - ATTN_DISTANCE_REF), 0.0f); gain = std::min(gain, ATTN_GAIN_MAX); - } else { + } else if (attenuationPerDoublingInDistance < 1.0f) { // translate a positive zone setting to gain per log2(distance) const float MIN_ATTENUATION_COEFFICIENT = 0.001f; // -60dB per log2(distance) float g = glm::clamp(1.0f - attenuationPerDoublingInDistance, MIN_ATTENUATION_COEFFICIENT, 1.0f); @@ -792,6 +792,10 @@ float computeGain(float masterAvatarGain, float d = (1.0f / ATTN_DISTANCE_REF) * std::max(distance, HRTF_NEARFIELD_MIN); gain *= fastExp2f(fastLog2f(g) * fastLog2f(d)); gain = std::min(gain, ATTN_GAIN_MAX); + + } else { + // translate a zone setting of 1.0 be silent at any distance + gain = 0.0f; } return gain;