UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
IntegerDelay.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/Dsp.h"
9
10namespace Audio
11{
12
13 // An adjustable delay line. Delays values are limited to integer values.
15 {
16 public:
17
18 // InMaxDelaySamples is the maximum supported delay.
19 // InDelaySamples is the initial delay in samples.
21
22 // Destructor
24
25 // Sets the current delay in samples. InDelay must be less than or equal to the InMaxDelaySamples set in the constructor.
27
28 // Resets the delay line state, flushes buffer and resets read/write pointers.
30
31 // Returns the current delay length in samples.
33
34 // Process InSamples, placing delayed versions in OutSamples.
35 inline float ProcessAudioSample(float InSample)
36 {
37 // Update delay line.
38 DelayLine->AddSamples(&InSample, 1);
39
40 // Copy delayed version to output
41 const float DelayedSample = *(DelayLine->InspectSamples(1 + NumBufferOffsetSamples, NumDelayLineOffsetSamples));
42
43 // Remove unneeded delay line.
44 DelayLine->RemoveSamples(1);
45
46 return DelayedSample;
47 }
48
50 // Process InSamples, placing delayed versions in OutSamples.
52
53 // Retrieve a copy of the internal delay line.
54 // InNum must be less than or equal to InMaxNumDelaySamples.
56
57 private:
58 // Process a block of audio. InNum is always less than or equal to NumInternalBufferSamples.
59 void ProcessAudioBlock(const float* InSamples, const int32 InNum, float* OutSamples);
60
61 // Maximum supported number of delay samples
62 int32 MaxNumDelaySamples;
63
64 // Current number of delay samples
65 int32 NumDelaySamples;
66
67 // Offset of output delayed samples relative to DelayLine block buffer
68 int32 NumDelayLineOffsetSamples;
69
70 // Offset to handle delay values which are not multiple of required buffer alignment.
71 int32 NumBufferOffsetSamples;
72
73 // Number of samples in an internal buffer
74 int32 NumInternalBufferSamples;
75
76 // Buffer for holding delayed data.
78 };
79}
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
Definition IntegerDelay.h:15
SIGNALPROCESSING_API void SetDelayLengthSamples(int32 InNumDelaySamples)
Definition IntegerDelay.cpp:32
SIGNALPROCESSING_API void ProcessAudio(const Audio::FAlignedFloatBuffer &InSamples, Audio::FAlignedFloatBuffer &OutSamples)
Definition IntegerDelay.cpp:72
SIGNALPROCESSING_API int32 GetNumDelaySamples() const
Definition IntegerDelay.cpp:67
SIGNALPROCESSING_API void PeekDelayLine(int32 InNum, Audio::FAlignedFloatBuffer &OutSamples)
Definition IntegerDelay.cpp:116
SIGNALPROCESSING_API void Reset()
Definition IntegerDelay.cpp:60
float ProcessAudioSample(float InSample)
Definition IntegerDelay.h:35
SIGNALPROCESSING_API ~FIntegerDelay()
Definition IntegerDelay.cpp:29
Definition ArrayView.h:139
Definition UniquePtr.h:107
NO_LOGGING.
Definition AudioMixerPlatformAndroid.cpp:53