UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
WaveShaper.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
5#include "CoreMinimal.h"
6
7namespace Audio
8{
9 enum class EWaveShaperType : int32
10 {
11 Sin,
12 ATan,
13 Tanh,
14 Cubic,
16 };
17
18 // A digital wave shaping effect to cause audio distortion
19 // https://en.wikipedia.org/wiki/Waveshaper
21 {
22 public:
23 // Constructor
25
26 // Destructor
28
29 // Initialize the equalizer
30 SIGNALPROCESSING_API void Init(const float InSampleRate);
31
32 // Sets the amount of wave shapping. 0.0 is no effect.
33 SIGNALPROCESSING_API void SetAmount(const float InAmount);
34
35 // Set DC offset before processing
36 SIGNALPROCESSING_API void SetBias(const float InBias);
37
38 // Sets the output gain of the waveshaper
40
41 // Sets the output gain of the waveshaper
43
45
46 // Processes one Sample, using ATan
47 // Deprecating in favor of ProcessAudioBuffer
48 SIGNALPROCESSING_API void ProcessAudio(const float InSample, float& OutSample);
49
50 // Process an entire buffer of audio
51 SIGNALPROCESSING_API void ProcessAudioBuffer(const float* InBuffer, float* OutBuffer, int32 NumFrames);
52
53 private:
54
55 float Amount;
56 float OutputGain;
57 float Bias;
58 EWaveShaperType Type;
59
60 float OneOverAtanAmount;
61 float OneOverTanhAmount;
62
63 void ProcessHardClip(const float* InBuffer, float* OutBuffer, int32 NumSamples);
64 void ProcessTanh(const float* InBuffer, float* OutBuffer, int32 NumSamples);
65 void ProcessATan(const float* InBuffer, float* OutBuffer, int32 NumSamples);
66 void ProcessCubic(const float* InBuffer, float* OutBuffer, int32 NumSamples);
67 void ProcessSin(const float* InBuffer, float* OutBuffer, int32 NumSamples);
68 };
69
70}
FPlatformTypes::int32 int32
A 32-bit signed integer.
Definition Platform.h:1125
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
void Init()
Definition LockFreeList.h:4
Definition WaveShaper.h:21
SIGNALPROCESSING_API void SetAmount(const float InAmount)
Definition WaveShaper.cpp:26
SIGNALPROCESSING_API void ProcessAudioBuffer(const float *InBuffer, float *OutBuffer, int32 NumFrames)
Definition WaveShaper.cpp:58
SIGNALPROCESSING_API FWaveShaper()
Definition WaveShaper.cpp:8
SIGNALPROCESSING_API ~FWaveShaper()
Definition WaveShaper.cpp:18
SIGNALPROCESSING_API void ProcessAudio(const float InSample, float &OutSample)
Definition WaveShaper.cpp:53
SIGNALPROCESSING_API void SetBias(const float InBias)
Definition WaveShaper.cpp:33
SIGNALPROCESSING_API void SetOutputGainDb(const float InGainDb)
Definition WaveShaper.cpp:38
SIGNALPROCESSING_API void SetOutputGainLinear(const float InGainLinear)
Definition WaveShaper.cpp:43
SIGNALPROCESSING_API void SetType(const EWaveShaperType InType)
Definition WaveShaper.cpp:48
NO_LOGGING.
Definition AudioMixerPlatformAndroid.cpp:53
EWaveShaperType
Definition WaveShaper.h:10