mirror of
https://github.com/lubosz/overte.git
synced 2025-08-07 14:41:19 +02:00
Fix Reverb Zone settings to work correctly with new reverb.
This commit is contained in:
parent
caf2595e13
commit
c6ca984782
3 changed files with 15 additions and 14 deletions
|
@ -370,13 +370,14 @@ void AudioMixer::sendAudioEnvironmentPacket(SharedNodePointer node) {
|
||||||
wetLevel = _zoneReverbSettings[i].wetLevel;
|
wetLevel = _zoneReverbSettings[i].wetLevel;
|
||||||
|
|
||||||
// Modulate wet level with distance to wall
|
// Modulate wet level with distance to wall
|
||||||
float MIN_ATTENUATION_DISTANCE = 2.0f;
|
//float MIN_ATTENUATION_DISTANCE = 2.0f;
|
||||||
float MAX_ATTENUATION = -12; // dB
|
//float MAX_ATTENUATION = -12; // dB
|
||||||
glm::vec3 distanceToWalls = (box.getDimensions() / 2.0f) - glm::abs(streamPosition - box.calcCenter());
|
//glm::vec3 distanceToWalls = (box.getDimensions() / 2.0f) - glm::abs(streamPosition - box.calcCenter());
|
||||||
float distanceToClosestWall = glm::min(distanceToWalls.x, distanceToWalls.z);
|
//float distanceToClosestWall = glm::min(distanceToWalls.x, distanceToWalls.z);
|
||||||
if (distanceToClosestWall < MIN_ATTENUATION_DISTANCE) {
|
//if (distanceToClosestWall < MIN_ATTENUATION_DISTANCE) {
|
||||||
wetLevel += MAX_ATTENUATION * (1.0f - distanceToClosestWall / MIN_ATTENUATION_DISTANCE);
|
// wetLevel += MAX_ATTENUATION * (1.0f - distanceToClosestWall / MIN_ATTENUATION_DISTANCE);
|
||||||
}
|
//}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -308,7 +308,7 @@
|
||||||
"name": "reverb",
|
"name": "reverb",
|
||||||
"type": "table",
|
"type": "table",
|
||||||
"label": "Reverb Settings",
|
"label": "Reverb Settings",
|
||||||
"help": "In this table you can set reverb levels for audio zones. For a medium-sized (e.g., 100 square meter) meeting room, try a decay time of around 1.5 seconds and a wet level of -10 db. For an airplane hangar or cathedral, try a decay time of 4 seconds and a wet level of -5 db.",
|
"help": "In this table you can set reverb levels for audio zones. For a medium-sized (e.g., 100 square meter) meeting room, try a decay time of around 1.5 seconds and a wet/dry mix of 25%. For an airplane hangar or cathedral, try a decay time of 4 seconds and a wet/dry mix of 50%.",
|
||||||
"numbered": true,
|
"numbered": true,
|
||||||
"columns": [
|
"columns": [
|
||||||
{
|
{
|
||||||
|
@ -325,9 +325,9 @@
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "wet_level",
|
"name": "wet_level",
|
||||||
"label": "Wet Level",
|
"label": "Wet/Dry Mix",
|
||||||
"can_set": true,
|
"can_set": true,
|
||||||
"placeholder": "(in db)"
|
"placeholder": "(in percent)"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
|
@ -565,10 +565,10 @@ void AudioClient::updateReverbOptions() {
|
||||||
_zoneReverbOptions.setReverbTime(_receivedAudioStream.getRevebTime());
|
_zoneReverbOptions.setReverbTime(_receivedAudioStream.getRevebTime());
|
||||||
reverbChanged = true;
|
reverbChanged = true;
|
||||||
}
|
}
|
||||||
//if (_zoneReverbOptions.getWetLevel() != _receivedAudioStream.getWetLevel()) {
|
if (_zoneReverbOptions.getWetDryMix() != _receivedAudioStream.getWetLevel()) {
|
||||||
// _zoneReverbOptions.setWetLevel(_receivedAudioStream.getWetLevel());
|
_zoneReverbOptions.setWetDryMix(_receivedAudioStream.getWetLevel());
|
||||||
// reverbChanged = true;
|
reverbChanged = true;
|
||||||
//}
|
}
|
||||||
|
|
||||||
if (_reverbOptions != &_zoneReverbOptions) {
|
if (_reverbOptions != &_zoneReverbOptions) {
|
||||||
_reverbOptions = &_zoneReverbOptions;
|
_reverbOptions = &_zoneReverbOptions;
|
||||||
|
|
Loading…
Reference in a new issue