UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
Reverb.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#include "DSP/Delay.h"
7#include "DSP/AllPassFilter.h"
8#include "DSP/OnePole.h"
9
10namespace Audio
11{
12 // forward
13 class FWaveTableOsc;
14
16 {
17 // Early reflections gain
18 float Gain;
19
20 // Delay between input signal and early reflections
22
23 // Input sample bandwidth before entering early reflections
24 float Bandwidth;
25
26 // Early reflections decay (lower value is longer)
27 float Decay;
28
29 // Early reflection high frequency absorption factor
31
33 : Gain(1.0f)
34 , PreDelayMsec(0.0f)
35 , Bandwidth(0.8)
36 , Decay(0.5)
37 , Absorption(0.7)
38 {}
39 };
40
41 // Basic implementation of a 4x4 Feedback Delay Network
43 {
44 public:
47
49
50 // Sets the reverb settings, applies, and updates
52
53 // Process the single audio frame
54 SIGNALPROCESSING_API void ProcessAudioFrame(const float* InBuffer, const int32 InChannels, float* OutBuffer, const int32 OutChannels);
55
56 protected:
59
61
63 {
64 // Pre-Delay for the input audio to the FDN reverberator
66
67 // Input LPF for early reflections
69
70 // 4 feedback delay lines per input channel (stereo) which feed into each other using a normalized feedback matrix
73
76 };
77
79
80 // Stereo input/output for early reflections
82 };
83
85 {
86 // The settings for the early reflections part of the reverb
88
89 // Milliseconds for the predelay
91
92 // Initial attenuation of audio after it leaves the predelay
93 float LateGain;
94
95 // Frequency bandwidth of audio going into input diffusers. 0.999 is full bandwidth
96 float Bandwidth;
97
98 // Amount of input diffusion (larger value results in more diffusion)
99 float Diffusion;
100
101 // The amount of high-frequency dampening in plate feedback paths
103
104 // The amount of decay in the feedback path. Lower value is larger reverb time.
105 float Decay;
106
107 // The amount of diffusion in decay path. Larger values is a more dense reverb.
108 float Density;
109
110 // The amount of output wetness of the reverb as a whole
111 float Wetness;
112
114 : LateDelayMsec(0.0f)
115 , LateGain(0.0f)
116 , Bandwidth(0.5f)
117 , Diffusion(0.5f)
118 , Dampening(0.5f)
119 , Decay(0.5f)
120 , Density(0.5f)
121 , Wetness(0.5f)
122 {}
123 };
124
126 {
127 public:
130
131 // Initialize the reverb with the given sample rate
133
134 // Whether or not to enable late reflections
136
137 // Whether or not to enable late reflections
139
140 // Sets the reverb settings, applies, and updates
142
143 // Process the single audio frame
144 SIGNALPROCESSING_API void ProcessAudioFrame(const float* InBuffer, const int32 InChannels, float* OutBuffer, const int32 OutChannels);
145
146 protected:
147
149
150 // Current parameter settings of reverb
152
153 // Early reflections effect
155
156 // Sample rate used for hard-coded delay line values
157 static const int32 PresetSampleRate = 29761;
158
159 // A simple pre-delay line to emulate large delays for late-reflections
161
162 // Input diffusion
168
169 // Wave table oscillator, modulates input APF in plates
171
172 // Plate data struction to organize each plate's delay lines and filters
192
193 // The plate data
196
197 // Tap points to read audio from various delay lines in plates
198 static const int32 NumTaps = 7;
199
202
203 // Whether or not late reflections are enabled
205
206 // Whether or not to enable early reflections
208 };
209}
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 AllPassFilter.h:13
Definition Delay.h:13
Definition Reverb.h:43
virtual SIGNALPROCESSING_API ~FEarlyReflections()
Definition Reverb.cpp:42
SIGNALPROCESSING_API void ApplySettings()
Definition Reverb.cpp:89
FFDNDelayData Data[2]
Definition Reverb.h:81
float MatrixScaleFactor
Definition Reverb.h:78
SIGNALPROCESSING_API FEarlyReflections()
Definition Reverb.cpp:38
SIGNALPROCESSING_API void ProcessAudioFrame(const float *InBuffer, const int32 InChannels, float *OutBuffer, const int32 OutChannels)
Definition Reverb.cpp:118
SIGNALPROCESSING_API void SetSettings(const FEarlyReflectionsSettings &InSettings)
Definition Reverb.cpp:78
SIGNALPROCESSING_API float ProcessDelayLine(const float InSample, FDelayAPF &InAPF, FOnePoleLPF &InLPF)
Definition Reverb.cpp:111
FEarlyReflectionsSettings Settings
Definition Reverb.h:60
Definition OnePole.h:12
Definition Reverb.h:126
bool bEnableLateReflections
Definition Reverb.h:204
FPlateReverbSettings Settings
Definition Reverb.h:151
static const int32 NumTaps
Definition Reverb.h:198
TSharedPtr< FWaveTableOsc > LFO
Definition Reverb.h:170
FOnePoleLPF InputLPF
Definition Reverb.h:163
FDelayAPF APF1
Definition Reverb.h:164
FPlate LeftPlate
Definition Reverb.h:194
SIGNALPROCESSING_API FPlateReverb()
Definition Reverb.cpp:158
SIGNALPROCESSING_API ~FPlateReverb()
Definition Reverb.cpp:166
FDelayAPF APF4
Definition Reverb.h:167
FEarlyReflections EarlyReflections
Definition Reverb.h:154
FDelay PreDelay
Definition Reverb.h:160
SIGNALPROCESSING_API void ProcessAudioFrame(const float *InBuffer, const int32 InChannels, float *OutBuffer, const int32 OutChannels)
Definition Reverb.cpp:293
SIGNALPROCESSING_API void SetSettings(const FPlateReverbSettings &InSettings)
Definition Reverb.cpp:255
bool bEnableEarlyReflections
Definition Reverb.h:207
static const int32 PresetSampleRate
Definition Reverb.h:157
float LeftTaps[NumTaps]
Definition Reverb.h:200
FDelayAPF APF3
Definition Reverb.h:166
SIGNALPROCESSING_API void ApplySettings()
Definition Reverb.cpp:272
SIGNALPROCESSING_API void EnableLateReflections(const bool bInEnableLateReflections)
Definition Reverb.cpp:245
float RightTaps[NumTaps]
Definition Reverb.h:201
FPlate RightPlate
Definition Reverb.h:195
SIGNALPROCESSING_API void EnableEarlyReflections(const bool bInEnableEarlyReflections)
Definition Reverb.cpp:250
FDelayAPF APF2
Definition Reverb.h:165
Definition SharedPointer.h:692
NO_LOGGING.
Definition AudioMixerPlatformAndroid.cpp:53
Definition Reverb.h:16
float Decay
Definition Reverb.h:27
float Bandwidth
Definition Reverb.h:24
float Gain
Definition Reverb.h:18
float PreDelayMsec
Definition Reverb.h:21
FEarlyReflectionsSettings()
Definition Reverb.h:32
float Absorption
Definition Reverb.h:30
FDelay PreDelay
Definition Reverb.h:65
FDelayAPF APF[4]
Definition Reverb.h:71
FOnePoleLPF InputLPF
Definition Reverb.h:68
float DelayLineOuputs[4]
Definition Reverb.h:75
FOnePoleLPF LPF[4]
Definition Reverb.h:72
float DelayLineInputs[4]
Definition Reverb.h:74
Definition Reverb.h:85
FPlateReverbSettings()
Definition Reverb.h:113
float Diffusion
Definition Reverb.h:99
float Dampening
Definition Reverb.h:102
float LateDelayMsec
Definition Reverb.h:90
float Wetness
Definition Reverb.h:111
float Bandwidth
Definition Reverb.h:96
float Decay
Definition Reverb.h:105
float LateGain
Definition Reverb.h:93
float Density
Definition Reverb.h:108
FEarlyReflectionsSettings EarlyReflections
Definition Reverb.h:87
Definition Reverb.h:174
float PreviousSample
Definition Reverb.h:182
FOnePoleLPF LPF
Definition Reverb.h:177
FDelay Delay2
Definition Reverb.h:179
FDelay Delay1
Definition Reverb.h:176
float ModulatedBaseDelayMsec
Definition Reverb.h:183
FPlate()
Definition Reverb.h:186
FDelayAPF APF
Definition Reverb.h:178
FDelayAPF ModulatedAPF
Definition Reverb.h:175
float ModulatedDeltaDelayMsec
Definition Reverb.h:184