From 2af6bdc283a15f762229bde1f83d80a16605f7c8 Mon Sep 17 00:00:00 2001 From: Wojtek Figat Date: Tue, 11 Mar 2025 18:46:25 +0100 Subject: [PATCH] Fix audio artifacts when importing 32-bit IEE `wav` files --- Source/Engine/Tools/AudioTool/AudioTool.cpp | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/Source/Engine/Tools/AudioTool/AudioTool.cpp b/Source/Engine/Tools/AudioTool/AudioTool.cpp index f1709af7e..18e483b96 100644 --- a/Source/Engine/Tools/AudioTool/AudioTool.cpp +++ b/Source/Engine/Tools/AudioTool/AudioTool.cpp @@ -4,7 +4,7 @@ #include "AudioTool.h" #include "Engine/Core/Core.h" -#include "Engine/Core/Memory/Allocation.h" +#include "Engine/Core/Math/Math.h" #if USE_EDITOR #include "Engine/Serialization/Serialization.h" #include "Engine/Scripting/Enums.h" @@ -307,8 +307,9 @@ void AudioTool::ConvertFromFloat(const float* input, int32* output, uint32 numSa { for (uint32 i = 0; i < numSamples; i++) { - const float sample = *(float*)input; - output[i] = static_cast(sample * 2147483647.0f); + float sample = *(float*)input; + sample = Math::Clamp(sample, -1.0f + ZeroTolerance, +1.0f - ZeroTolerance); + output[i] = static_cast(sample * 2147483648.0f); input++; } }