UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
AudioMixerQuantizedCommands.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2#pragma once
3
4#include "AudioMixerClock.h"
5
6namespace Audio
7{
8 // QuartzQuantizedCommand that plays a sound on a sample-accurate boundary
10 {
11 public:
12 // ctor
14
15 // dtor
17
19
21
23
24 AUDIOMIXER_API virtual void CancelCustom() override;
25
26 virtual bool RequiresAudioDevice() const override { return true; }
27
28 AUDIOMIXER_API virtual FName GetCommandName() const override;
29
30 // for your implementation, a new EQuartzCommandType needs to be defined in QuartzQuantizationUtilities.h
31 virtual EQuartzCommandType GetCommandType() const { return EQuartzCommandType::PlaySound; };
32
33 virtual int32 OverrideFramesUntilExec(int32 NumFramesUntilExec);
34
35 protected:
37
39
40 bool bIsCanceled = false;
41
42 }; // class FQuantizedPlayCommand
43
44
46 {
47 public:
49
51
52 AUDIOMIXER_API virtual int32 OverrideFramesUntilExec(int32 NumFramesUntilExec) override;
53
55
56 virtual bool RequiresAudioDevice() const override { return true; }
57
58 AUDIOMIXER_API virtual FName GetCommandName() const override;
59 virtual EQuartzCommandType GetCommandType() const { return EQuartzCommandType::QueueSoundToPlay; };
60
62
64
65 private:
66 TSharedPtr<FQuartzClock> OwningClockPtr{ nullptr };
67
68 //Data for the quantization event
69 FAudioComponentCommandInfo AudioComponentData;
70 }; // class FQuantizedQueueCommand
71
72 // QuartzQuantizedCommand that changes the TickRate of a clock on a sample-accurate boundary (i.e. BPM changes)
74 {
75 public:
76 void SetTickRate(const FQuartzClockTickRate& InTickRate)
77 {
78 TickRate = InTickRate;
79 }
80
82
84
86
87 virtual bool IsClockAltering() override { return true; }
88
89 AUDIOMIXER_API virtual FName GetCommandName() const override;
90 virtual EQuartzCommandType GetCommandType() const { return EQuartzCommandType::TickRateChange; };
91
92 private:
93 FQuartzClockTickRate TickRate;
94 TSharedPtr<FQuartzClock> OwningClockPtr{ nullptr };
95
96 }; // class FQuantizedTickRateChange
97
98
99 // QuartzQuantizedCommand that resets the transport of a clock's metronome on a sample-accurate boundary
101 {
102 public:
104
106
108
109 virtual bool IsClockAltering() override { return true; }
110
111 AUDIOMIXER_API virtual FName GetCommandName() const override;
112 virtual EQuartzCommandType GetCommandType() const { return EQuartzCommandType::TransportReset; };
113
114 private:
115 TSharedPtr<FQuartzClock> OwningClockPtr{ nullptr };
116
117 }; // class FQuantizedTransportReset
118
119
120 // QuartzQuantizedCommand that starts a second clock on a sample-accurate boundary
122 {
123 public:
125
127
129
130 virtual bool IsClockAltering() override { return true; }
131
132 AUDIOMIXER_API virtual FName GetCommandName() const override;
133 virtual EQuartzCommandType GetCommandType() const { return EQuartzCommandType::StartOtherClock; };
134
135 private:
136 TSharedPtr<FQuartzClock> OwningClockPtr{ nullptr };
137 FName NameOfClockToStart;
138
139 }; // class FQuantizedOtherClockStart
140
141
142 // QuartzQuantizedCommand that basically no-ops, so the game thread can get notified on a musical boundary
144 {
145 public:
146 // ctor
148
149 // dtor
150 virtual ~FQuantizedNotify() override = default;
151
153
154 virtual bool RequiresAudioDevice() const override { return true; }
155
156 AUDIOMIXER_API virtual FName GetCommandName() const override;
157
158 virtual EQuartzCommandType GetCommandType() const override { return EQuartzCommandType::Notify; };
159
161
162 AUDIOMIXER_API virtual int32 OverrideFramesUntilExec(int32 NumFramesUntilExec) override;
163
164 protected:
166 float OffsetInMs = 0.f;
167 float SampleRate = 0.f;
168 bool bIsCanceled = false;
169
170 }; // class FQuantizedNotify
171
172} // namespace Audio
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
EQuartzCommandType
Definition QuartzQuantizationUtilities.h:205
Definition AudioMixerQuantizedCommands.h:144
virtual bool RequiresAudioDevice() const override
Definition AudioMixerQuantizedCommands.h:154
virtual AUDIOMIXER_API void OnQueuedCustom(const FQuartzQuantizedCommandInitInfo &InCommandInitInfo) override
Definition AudioMixerQuantizedCommands.cpp:277
virtual EQuartzCommandType GetCommandType() const override
Definition AudioMixerQuantizedCommands.h:158
float SampleRate
Definition AudioMixerQuantizedCommands.h:167
bool bIsCanceled
Definition AudioMixerQuantizedCommands.h:168
virtual AUDIOMIXER_API FName GetCommandName() const override
Definition AudioMixerQuantizedCommands.cpp:288
virtual ~FQuantizedNotify() override=default
float OffsetInMs
Definition AudioMixerQuantizedCommands.h:166
virtual AUDIOMIXER_API TSharedPtr< IQuartzQuantizedCommand > GetDeepCopyOfDerivedObject() const override
Definition AudioMixerQuantizedCommands.cpp:282
TSharedPtr< FQuartzClock > OwningClockPtr
Definition AudioMixerQuantizedCommands.h:165
virtual AUDIOMIXER_API int32 OverrideFramesUntilExec(int32 NumFramesUntilExec) override
Definition AudioMixerQuantizedCommands.cpp:271
Definition AudioMixerQuantizedCommands.h:122
virtual AUDIOMIXER_API void OnFinalCallbackCustom(int32 InNumFramesLeft) override
Definition AudioMixerQuantizedCommands.cpp:236
virtual EQuartzCommandType GetCommandType() const
Definition AudioMixerQuantizedCommands.h:133
virtual AUDIOMIXER_API void OnQueuedCustom(const FQuartzQuantizedCommandInitInfo &InCommandInitInfo) override
Definition AudioMixerQuantizedCommands.cpp:228
virtual bool IsClockAltering() override
Definition AudioMixerQuantizedCommands.h:130
virtual AUDIOMIXER_API FName GetCommandName() const override
Definition AudioMixerQuantizedCommands.cpp:261
virtual AUDIOMIXER_API TSharedPtr< IQuartzQuantizedCommand > GetDeepCopyOfDerivedObject() const override
Definition AudioMixerQuantizedCommands.cpp:218
Definition AudioMixerQuantizedCommands.h:10
virtual bool RequiresAudioDevice() const override
Definition AudioMixerQuantizedCommands.h:26
~FQuantizedPlayCommand()
Definition AudioMixerQuantizedCommands.h:16
virtual AUDIOMIXER_API void CancelCustom() override
Definition AudioMixerQuantizedCommands.cpp:80
bool bIsCanceled
Definition AudioMixerQuantizedCommands.h:40
virtual AUDIOMIXER_API TSharedPtr< IQuartzQuantizedCommand > GetDeepCopyOfDerivedObject() const override
Definition AudioMixerQuantizedCommands.cpp:13
int32 SourceID
Definition AudioMixerQuantizedCommands.h:38
virtual AUDIOMIXER_API FName GetCommandName() const override
Definition AudioMixerQuantizedCommands.cpp:99
TSharedPtr< FQuartzClock > OwningClockPtr
Definition AudioMixerQuantizedCommands.h:36
virtual int32 OverrideFramesUntilExec(int32 NumFramesUntilExec)
Definition AudioMixerQuantizedCommands.cpp:104
AUDIOMIXER_API FQuantizedPlayCommand()
Definition AudioMixerQuantizedCommands.cpp:9
virtual EQuartzCommandType GetCommandType() const
Definition AudioMixerQuantizedCommands.h:31
virtual AUDIOMIXER_API void OnFinalCallbackCustom(int32 InNumFramesLeft) override
Definition AudioMixerQuantizedCommands.cpp:48
virtual AUDIOMIXER_API void OnQueuedCustom(const FQuartzQuantizedCommandInitInfo &InCommandInitInfo) override
Definition AudioMixerQuantizedCommands.cpp:23
Definition AudioMixerQuantizedCommands.h:46
virtual EQuartzCommandType GetCommandType() const
Definition AudioMixerQuantizedCommands.h:59
virtual AUDIOMIXER_API FName GetCommandName() const override
Definition AudioMixerQuantizedCommands.cpp:158
virtual AUDIOMIXER_API void OnQueuedCustom(const FQuartzQuantizedCommandInitInfo &InCommandInitInfo) override
Definition AudioMixerQuantizedCommands.cpp:127
virtual bool RequiresAudioDevice() const override
Definition AudioMixerQuantizedCommands.h:56
virtual AUDIOMIXER_API void OnFinalCallbackCustom(int32 InNumFramesLeft) override
Definition AudioMixerQuantizedCommands.cpp:146
FQuantizedQueueCommand()
Definition AudioMixerQuantizedCommands.h:63
AUDIOMIXER_API void SetQueueCommand(const FAudioComponentCommandInfo &InAudioCommandData)
Definition AudioMixerQuantizedCommands.cpp:117
virtual AUDIOMIXER_API TSharedPtr< IQuartzQuantizedCommand > GetDeepCopyOfDerivedObject() const override
Definition AudioMixerQuantizedCommands.cpp:122
virtual AUDIOMIXER_API int32 OverrideFramesUntilExec(int32 NumFramesUntilExec) override
Definition AudioMixerQuantizedCommands.cpp:132
Definition AudioMixerQuantizedCommands.h:74
virtual bool IsClockAltering() override
Definition AudioMixerQuantizedCommands.h:87
void SetTickRate(const FQuartzClockTickRate &InTickRate)
Definition AudioMixerQuantizedCommands.h:76
virtual AUDIOMIXER_API void OnQueuedCustom(const FQuartzQuantizedCommandInitInfo &InCommandInitInfo) override
Definition AudioMixerQuantizedCommands.cpp:173
virtual EQuartzCommandType GetCommandType() const
Definition AudioMixerQuantizedCommands.h:90
virtual AUDIOMIXER_API TSharedPtr< IQuartzQuantizedCommand > GetDeepCopyOfDerivedObject() const override
Definition AudioMixerQuantizedCommands.cpp:163
virtual AUDIOMIXER_API void OnFinalCallbackCustom(int32 InNumFramesLeft) override
Definition AudioMixerQuantizedCommands.cpp:178
virtual AUDIOMIXER_API FName GetCommandName() const override
Definition AudioMixerQuantizedCommands.cpp:184
Definition AudioMixerQuantizedCommands.h:101
virtual EQuartzCommandType GetCommandType() const
Definition AudioMixerQuantizedCommands.h:112
virtual AUDIOMIXER_API void OnFinalCallbackCustom(int32 InNumFramesLeft) override
Definition AudioMixerQuantizedCommands.cpp:203
virtual AUDIOMIXER_API TSharedPtr< IQuartzQuantizedCommand > GetDeepCopyOfDerivedObject() const override
Definition AudioMixerQuantizedCommands.cpp:189
virtual AUDIOMIXER_API FName GetCommandName() const override
Definition AudioMixerQuantizedCommands.cpp:212
virtual bool IsClockAltering() override
Definition AudioMixerQuantizedCommands.h:109
virtual AUDIOMIXER_API void OnQueuedCustom(const FQuartzQuantizedCommandInitInfo &InCommandInitInfo) override
Definition AudioMixerQuantizedCommands.cpp:198
Definition QuartzQuantizationUtilities.h:588
Definition NameTypes.h:617
Definition SharedPointer.h:692
NO_LOGGING.
Definition AudioMixerPlatformAndroid.cpp:53
Definition QuartzQuantizationUtilities.h:557
Definition QuartzQuantizationUtilities.h:676