godotengine / godot

Godot Engine – Multi-platform 2D and 3D game engine
https://godotengine.org
MIT License
91.41k stars 21.26k forks source link

Reverb predelay does not separate dry from wet. #98863

Open yosimba2000 opened 3 weeks ago

yosimba2000 commented 3 weeks ago

Tested versions

4.3 .Net , 4.4 Dev3 .Net

System information

Win10 x64 22H2

Issue description

Predelay in reverb means the time difference between the start of the audio sample (dry), and the start of the reverb effect (wet).

In reverb settings, assign Predelay to 0ms and Feedback to 0. Playing an audio source will have wet and dry play at the same time. Ok, good so far.

Assigning Predelay to the max value of 500ms STILL has wet and dry play at the same time, instead of playing wet 500ms after dry starts.

Maybe Feedback is the issue? Turn up Feedback to 0.5 and keep Predelay at 500ms. Play the sound again, and notice 1) Wet and dry still play at the same time instead of having 500ms delay between the two. 2) But now the whole reverb effect is repeated every Predelay time.

Steps to reproduce

1) Open Godot, go to go to Audio tab and assign Reverb to the Master bus. 2) Crank up room size to 1 for reverb emphasis. 3) Set damp to 0 for clean reverb. 4) Set wet to 1 and dry to 0.5 to hear reverb better. 4) Set predelay to 0ms, and feedback to 0. 5) Add an audio source to the scene and play it. 6) Notice Wet and Dry play at the same time. This is correct since there is 0ms predelay between the two. 7) Set 500ms predelay, and play the audio again. 8) Notice Wet and Dry still play at the same time. This is wrong because there should be 500ms delay between Wet and Dry. Perhaps feedback needs to be non-zero? 9) Set feedback to 0.5, and replay audio. 10) Notice Wet and Dry still play at the same time, but the reverb effect repeats every predelay time. This is also wrong.

Minimal reproduction project (MRP)

n/a

fkeyzuwu commented 2 weeks ago

+1 to this. Use predelay in a regular reverb anywhere outside of Godot, and in Godot, and compare. In any other software predelay does a different effect, as said here.