From 72325446265ecaad9fe0602795a9759fa973a945 Mon Sep 17 00:00:00 2001 From: Stephen Birarda Date: Thu, 6 Jun 2013 11:04:40 -0700 Subject: [PATCH] uncomment the FreeVerb code --- audio-mixer/src/main.cpp | 68 ++++++++++++++++++++-------------------- 1 file changed, 34 insertions(+), 34 deletions(-) diff --git a/audio-mixer/src/main.cpp b/audio-mixer/src/main.cpp index d84a995767..5ed19e6c60 100644 --- a/audio-mixer/src/main.cpp +++ b/audio-mixer/src/main.cpp @@ -220,40 +220,40 @@ int main(int argc, const char* argv[]) { numSamplesDelay = PHASE_DELAY_AT_90 * sinRatio; weakChannelAmplitudeRatio = 1 - (PHASE_AMPLITUDE_RATIO_AT_90 * sinRatio); } -// -// FreeVerbAgentMap& agentFreeVerbs = agentRingBuffer->getFreeVerbs(); -// FreeVerbAgentMap::iterator freeVerbIterator = agentFreeVerbs.find(otherAgent->getAgentID()); -// -// if (freeVerbIterator == agentFreeVerbs.end()) { -// // setup the freeVerb effect for this source for this client -// otherAgentFreeVerb = agentFreeVerbs[otherAgent->getAgentID()] = new stk::FreeVerb; -// -// otherAgentFreeVerb->setDamping(DISTANCE_REVERB_DAMPING); -// otherAgentFreeVerb->setRoomSize(DISTANCE_REVERB_ROOM_SIZE); -// otherAgentFreeVerb->setWidth(DISTANCE_REVERB_WIDTH); -// } else { -// otherAgentFreeVerb = freeVerbIterator->second; -// } -// -// const float WETNESS_DOUBLING_DISTANCE_FACTOR = 2.0f; -// const float MAX_REVERB_DISTANCE = 160.0f; -// -// // higher value increases wetness more quickly with distance -// const float WETNESS_CALC_EXPONENT_BASE = 2.0f; -// -// const float MAX_EXPONENT = logf(MAX_REVERB_DISTANCE) / logf(WETNESS_DOUBLING_DISTANCE_FACTOR); -// const int MAX_EXPONENT_INT = floorf(MAX_EXPONENT); -// const float DISTANCE_REVERB_LOG_REMAINDER = fmodf(MAX_EXPONENT, MAX_EXPONENT_INT); -// const float DISTANCE_REVERB_MAX_WETNESS = 1.0f; -// const float EFFECT_MIX_RHS = DISTANCE_REVERB_MAX_WETNESS / powf(WETNESS_DOUBLING_DISTANCE_FACTOR, -// MAX_EXPONENT_INT); -// -// float effectMix = powf(WETNESS_CALC_EXPONENT_BASE, -// (0.5f * logf(distanceSquareToSource) / logf(WETNESS_CALC_EXPONENT_BASE)) -// - DISTANCE_REVERB_LOG_REMAINDER); -// effectMix *= EFFECT_MIX_RHS; -// -// otherAgentFreeVerb->setEffectMix(effectMix); + + FreeVerbAgentMap& agentFreeVerbs = agentRingBuffer->getFreeVerbs(); + FreeVerbAgentMap::iterator freeVerbIterator = agentFreeVerbs.find(otherAgent->getAgentID()); + + if (freeVerbIterator == agentFreeVerbs.end()) { + // setup the freeVerb effect for this source for this client + otherAgentFreeVerb = agentFreeVerbs[otherAgent->getAgentID()] = new stk::FreeVerb; + + otherAgentFreeVerb->setDamping(DISTANCE_REVERB_DAMPING); + otherAgentFreeVerb->setRoomSize(DISTANCE_REVERB_ROOM_SIZE); + otherAgentFreeVerb->setWidth(DISTANCE_REVERB_WIDTH); + } else { + otherAgentFreeVerb = freeVerbIterator->second; + } + + const float WETNESS_DOUBLING_DISTANCE_FACTOR = 2.0f; + const float MAX_REVERB_DISTANCE = 160.0f; + + // higher value increases wetness more quickly with distance + const float WETNESS_CALC_EXPONENT_BASE = 2.0f; + + const float MAX_EXPONENT = logf(MAX_REVERB_DISTANCE) / logf(WETNESS_DOUBLING_DISTANCE_FACTOR); + const int MAX_EXPONENT_INT = floorf(MAX_EXPONENT); + const float DISTANCE_REVERB_LOG_REMAINDER = fmodf(MAX_EXPONENT, MAX_EXPONENT_INT); + const float DISTANCE_REVERB_MAX_WETNESS = 1.0f; + const float EFFECT_MIX_RHS = DISTANCE_REVERB_MAX_WETNESS / powf(WETNESS_DOUBLING_DISTANCE_FACTOR, + MAX_EXPONENT_INT); + + float effectMix = powf(WETNESS_CALC_EXPONENT_BASE, + (0.5f * logf(distanceSquareToSource) / logf(WETNESS_CALC_EXPONENT_BASE)) + - DISTANCE_REVERB_LOG_REMAINDER); + effectMix *= EFFECT_MIX_RHS; + + otherAgentFreeVerb->setEffectMix(effectMix); } int16_t* goodChannel = (bearingRelativeAngleToSource > 0.0f)