UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
AudioMixerBlueprintLibrary.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"
9#include "Sound/AudioBus.h"
10#include "SampleBuffer.h"
11#include "Sound/SoundCue.h"
14#include "AudioMixer.h"
15#include "AudioMixerTypes.h"
16#include "AudioMixerBlueprintLibrary.generated.h"
17
18class USoundSubmix;
19
24
25
26
27UENUM(BlueprintType)
29{
30 C = 0,
31 Db = 1,
32 D = 2,
33 Eb = 3,
34 E = 4,
35 F = 5,
36 Gb = 6,
37 G = 7,
38 Ab = 8,
39 A = 9,
40 Bb = 10,
41 B = 11,
42};
43
44//Duplicate of Audio::EAudioMixerStreamDataFormat::Type, to get around UHT's lack of namespace support
45UENUM()
53
55
56//A copy of Audio::EAudioMixerChannel::Type to get around UHT's refusal of namespaces
57UENUM()
82
83inline const TCHAR* ToString(EAudioMixerChannelType InType)
84{
85 switch (InType)
86 {
87 case EAudioMixerChannelType::FrontLeft: return TEXT("FrontLeft");
88 case EAudioMixerChannelType::FrontRight: return TEXT("FrontRight");
89 case EAudioMixerChannelType::FrontCenter: return TEXT("FrontCenter");
90 case EAudioMixerChannelType::LowFrequency: return TEXT("LowFrequency");
91 case EAudioMixerChannelType::BackLeft: return TEXT("BackLeft");
92 case EAudioMixerChannelType::BackRight: return TEXT("BackRight");
93 case EAudioMixerChannelType::FrontLeftOfCenter: return TEXT("FrontLeftOfCenter");
94 case EAudioMixerChannelType::FrontRightOfCenter: return TEXT("FrontRightOfCenter");
95 case EAudioMixerChannelType::BackCenter: return TEXT("BackCenter");
96 case EAudioMixerChannelType::SideLeft: return TEXT("SideLeft");
97 case EAudioMixerChannelType::SideRight: return TEXT("SideRight");
98 case EAudioMixerChannelType::TopCenter: return TEXT("TopCenter");
99 case EAudioMixerChannelType::TopFrontLeft: return TEXT("TopFrontLeft");
100 case EAudioMixerChannelType::TopFrontCenter: return TEXT("TopFrontCenter");
101 case EAudioMixerChannelType::TopFrontRight: return TEXT("TopFrontRight");
102 case EAudioMixerChannelType::TopBackLeft: return TEXT("TopBackLeft");
103 case EAudioMixerChannelType::TopBackCenter: return TEXT("TopBackCenter");
104 case EAudioMixerChannelType::TopBackRight: return TEXT("TopBackRight");
105 case EAudioMixerChannelType::Unknown: return TEXT("Unknown");
106
107 default:
108 return TEXT("UNSUPPORTED");
109 }
110}
111
112// Resulting State of SwapAudioOutputDevice call
113UENUM(BlueprintType)
120
124USTRUCT(BlueprintType)
126{
128
130
132 UPROPERTY(BlueprintReadOnly, Category = "Audio")
133 FString CurrentDeviceId;
134
136 UPROPERTY(BlueprintReadOnly, Category = "Audio")
137 FString RequestedDeviceId;
138
140 UPROPERTY(BlueprintReadOnly, Category = "Audio")
142};
143
147USTRUCT(BlueprintType)
149{
151
153 : Name("")
154 , DeviceId("")
155 , NumChannels(0)
156 , SampleRate(0)
158 , bIsSystemDefault(true)
159 , bIsCurrentDevice(false)
160 {};
161
163
165 UPROPERTY(BlueprintReadOnly, Category="Audio")
166 FString Name;
167
169 UPROPERTY(BlueprintReadOnly, Category = "Audio")
170 FString DeviceId;
171
173 UPROPERTY(BlueprintReadOnly, Category = "Audio")
174 int32 NumChannels = 0;
175
177 UPROPERTY(BlueprintReadOnly, Category = "Audio")
178 int32 SampleRate = 0;
179
181 UPROPERTY(BlueprintReadOnly, Category = "Audio")
183
185 UPROPERTY(BlueprintReadOnly, Category = "Audio")
186 TArray<EAudioMixerChannelType> OutputChannelArray;
187
189 UPROPERTY(BlueprintReadOnly, Category = "Audio")
190 uint8 bIsSystemDefault : 1;
191
193 UPROPERTY(BlueprintReadOnly, Category = "Audio")
194 uint8 bIsCurrentDevice : 1;
195};
196
201
206
211
212UCLASS(meta=(ScriptName="AudioMixerLibrary"), MinimalAPI)
214{
216
217public:
223 UFUNCTION(BlueprintPure, meta = (DisplayName = "Audio Output Device Info To String", CompactNodeTitle = "->", BlueprintAutocast), Category = "Audio")
224 static AUDIOMIXER_API FString Conv_AudioOutputDeviceInfoToString(const FAudioOutputDeviceInfo& Info);
225
227 UFUNCTION(BlueprintCallable, Category = "Audio|Effects", meta=(WorldContext="WorldContextObject"))
228 static AUDIOMIXER_API void AddMasterSubmixEffect(const UObject* WorldContextObject, USoundEffectSubmixPreset* SubmixEffectPreset);
229
231 UFUNCTION(BlueprintCallable, Category = "Audio|Effects", meta=(WorldContext="WorldContextObject"))
232 static AUDIOMIXER_API void RemoveMasterSubmixEffect(const UObject* WorldContextObject, USoundEffectSubmixPreset* SubmixEffectPreset);
233
235 UFUNCTION(BlueprintCallable, Category = "Audio|Effects", meta = (WorldContext = "WorldContextObject"))
236 static AUDIOMIXER_API void ClearMasterSubmixEffects(const UObject* WorldContextObject);
237
239 UFUNCTION(BlueprintCallable, Category = "Audio|Effects", meta = (WorldContext = "WorldContextObject"))
240 static AUDIOMIXER_API int32 AddSubmixEffect(const UObject* WorldContextObject, USoundSubmix* SoundSubmix, USoundEffectSubmixPreset* SubmixEffectPreset);
241
242 UE_DEPRECATED(4.27, "RemoveSubmixEffectPreset is deprecated, use RemoveSubmixEffect.")
243 UFUNCTION(BlueprintCallable, Category = "Audio|Effects", meta = (WorldContext = "WorldContextObject", DeprecatedFunction))
244 static AUDIOMIXER_API void RemoveSubmixEffectPreset(const UObject* WorldContextObject, USoundSubmix* SoundSubmix, USoundEffectSubmixPreset* SubmixEffectPreset);
245
247 UFUNCTION(BlueprintCallable, Category = "Audio|Effects", meta = (WorldContext = "WorldContextObject"))
248 static AUDIOMIXER_API void RemoveSubmixEffect(const UObject* WorldContextObject, USoundSubmix* SoundSubmix, USoundEffectSubmixPreset* SubmixEffectPreset);
249
250 UE_DEPRECATED(4.27, "RemoveSubmixEffectPresetAtIndex is deprecated, use RemoveSubmixEffectAtIndex.")
251 UFUNCTION(BlueprintCallable, Category = "Audio|Effects", meta = (WorldContext = "WorldContextObject", DeprecatedFunction))
252 static AUDIOMIXER_API void RemoveSubmixEffectPresetAtIndex(const UObject* WorldContextObject, USoundSubmix* SoundSubmix, int32 SubmixChainIndex);
253
255 UFUNCTION(BlueprintCallable, Category = "Audio|Effects", meta = (WorldContext = "WorldContextObject"))
256 static AUDIOMIXER_API void RemoveSubmixEffectAtIndex(const UObject* WorldContextObject, USoundSubmix* SoundSubmix, int32 SubmixChainIndex);
257
258 UE_DEPRECATED(4.27, "ReplaceSoundEffectSubmix is deprecated, use ReplaceSubmixEffect.")
259 UFUNCTION(BlueprintCallable, Category = "Audio|Effects", meta = (WorldContext = "WorldContextObject", DeprecatedFunction))
260 static AUDIOMIXER_API void ReplaceSoundEffectSubmix(const UObject* WorldContextObject, USoundSubmix* InSoundSubmix, int32 SubmixChainIndex, USoundEffectSubmixPreset* SubmixEffectPreset);
261
263 UFUNCTION(BlueprintCallable, Category = "Audio|Effects", meta = (WorldContext = "WorldContextObject"))
264 static AUDIOMIXER_API void ReplaceSubmixEffect(const UObject* WorldContextObject, USoundSubmix* InSoundSubmix, int32 SubmixChainIndex, USoundEffectSubmixPreset* SubmixEffectPreset);
265
267 UFUNCTION(BlueprintCallable, Category = "Audio|Effects", meta = (WorldContext = "WorldContextObject"))
268 static AUDIOMIXER_API void ClearSubmixEffects(const UObject* WorldContextObject, USoundSubmix* SoundSubmix);
269
271 UFUNCTION(BlueprintCallable, Category = "Audio|Effects", meta = (WorldContext = "WorldContextObject"))
272 static AUDIOMIXER_API void SetSubmixEffectChainOverride(const UObject* WorldContextObject, USoundSubmix* SoundSubmix, TArray<USoundEffectSubmixPreset*> SubmixEffectPresetChain, float FadeTimeSec);
273
275 UFUNCTION(BlueprintCallable, Category = "Audio|Effects", meta = (WorldContext = "WorldContextObject"))
276 static AUDIOMIXER_API void ClearSubmixEffectChainOverride(const UObject* WorldContextObject, USoundSubmix* SoundSubmix, float FadeTimeSec);
277
279 UFUNCTION(BlueprintCallable, Category = "Audio|Recording", meta = (WorldContext = "WorldContextObject", AdvancedDisplay = 1))
280 static AUDIOMIXER_API void StartRecordingOutput(const UObject* WorldContextObject, float ExpectedDuration, USoundSubmix* SubmixToRecord = nullptr);
281
283 UFUNCTION(BlueprintCallable, Category = "Audio|Recording", meta = (WorldContext = "WorldContextObject", DisplayName = "Finish Recording Output", AdvancedDisplay = 4))
284 static AUDIOMIXER_API USoundWave* StopRecordingOutput(const UObject* WorldContextObject, EAudioRecordingExportType ExportType, const FString& Name, FString Path, USoundSubmix* SubmixToRecord = nullptr, USoundWave* ExistingSoundWaveToOverwrite= nullptr);
285
287 UFUNCTION(BlueprintCallable, Category = "Audio|Recording", meta = (WorldContext = "WorldContextObject", AdvancedDisplay = 1))
288 static AUDIOMIXER_API void PauseRecordingOutput(const UObject* WorldContextObject, USoundSubmix* SubmixToPause = nullptr);
289
291 UFUNCTION(BlueprintCallable, Category = "Audio|Recording", meta = (WorldContext = "WorldContextObject", AdvancedDisplay = 1))
292 static AUDIOMIXER_API void ResumeRecordingOutput(const UObject* WorldContextObject, USoundSubmix* SubmixToPause = nullptr);
293
295 UFUNCTION(BlueprintCallable, Category = "Audio|Analysis", meta = (WorldContext = "WorldContextObject", AdvancedDisplay = 1))
296 static AUDIOMIXER_API void StartAnalyzingOutput(const UObject* WorldContextObject, USoundSubmix* SubmixToAnalyze = nullptr, EFFTSize FFTSize = EFFTSize::DefaultSize, EFFTPeakInterpolationMethod InterpolationMethod = EFFTPeakInterpolationMethod::Linear, EFFTWindowType WindowType = EFFTWindowType::Hann, float HopSize = 0, EAudioSpectrumType SpectrumType = EAudioSpectrumType::MagnitudeSpectrum);
297
299 UFUNCTION(BlueprintCallable, Category = "Audio|Analysis", meta = (WorldContext = "WorldContextObject", AdvancedDisplay = 1))
300 static AUDIOMIXER_API void StopAnalyzingOutput(const UObject* WorldContextObject, USoundSubmix* SubmixToStopAnalyzing = nullptr);
301
310 UFUNCTION(BlueprintPure, Category = "Audio|Analysis", meta = (AdvancedDisplay = 3))
312
321 UFUNCTION(BlueprintPure, Category = "Audio|Analysis", meta = (AdvancedDisplay = 3))
322 static AUDIOMIXER_API TArray<FSoundSubmixSpectralAnalysisBandSettings> MakeFullSpectrumSpectralAnalysisBandSettings(int32 InNumBands = 30, float InMinimumFrequency=40.f, float InMaximumFrequency=16000.f, int32 InAttackTimeMsec = 10, int32 InReleaseTimeMsec = 10);
323
331 UFUNCTION(BlueprintPure, Category = "Audio|Analysis", meta = (AdvancedDisplay = 2))
333
335 UFUNCTION(BlueprintCallable, Category = "Audio|Analysis", meta = (WorldContext = "WorldContextObject", AdvancedDisplay = 3))
336 static AUDIOMIXER_API void GetMagnitudeForFrequencies(const UObject* WorldContextObject, const TArray<float>& Frequencies, TArray<float>& Magnitudes, USoundSubmix* SubmixToAnalyze = nullptr);
337
339 UFUNCTION(BlueprintCallable, Category = "Audio|Analysis", meta = (WorldContext = "WorldContextObject", AdvancedDisplay = 3))
340 static AUDIOMIXER_API void GetPhaseForFrequencies(const UObject* WorldContextObject, const TArray<float>& Frequencies, TArray<float>& Phases, USoundSubmix* SubmixToAnalyze = nullptr);
341
343 UFUNCTION(BlueprintCallable, Category = "Audio|Effects", meta = (WorldContext = "WorldContextObject"))
344 static AUDIOMIXER_API void AddSourceEffectToPresetChain(const UObject* WorldContextObject, USoundEffectSourcePresetChain* PresetChain, FSourceEffectChainEntry Entry);
345
347 UFUNCTION(BlueprintCallable, Category = "Audio|Effects", meta = (WorldContext = "WorldContextObject"))
348 static AUDIOMIXER_API void RemoveSourceEffectFromPresetChain(const UObject* WorldContextObject, USoundEffectSourcePresetChain* PresetChain, int32 EntryIndex);
349
351 UFUNCTION(BlueprintCallable, Category = "Audio|Effects", meta = (WorldContext = "WorldContextObject"))
352 static AUDIOMIXER_API void SetBypassSourceEffectChainEntry(const UObject* WorldContextObject, USoundEffectSourcePresetChain* PresetChain, int32 EntryIndex, bool bBypassed);
353
355 UFUNCTION(BlueprintCallable, Category = "Audio|Effects", meta = (WorldContext = "WorldContextObject"))
356 static AUDIOMIXER_API int32 GetNumberOfEntriesInSourceEffectChain(const UObject* WorldContextObject, USoundEffectSourcePresetChain* PresetChain);
357
359 UFUNCTION(BlueprintCallable, Category = "Audio|Cache")
360 static AUDIOMIXER_API void PrimeSoundForPlayback(USoundWave* SoundWave, const FOnSoundLoadComplete OnLoadCompletion);
361
363 UFUNCTION(BlueprintCallable, Category = "Audio|Cache")
364 static AUDIOMIXER_API void PrimeSoundCueForPlayback(USoundCue* SoundCue);
365
367 UFUNCTION(BlueprintCallable, Category = "Audio|Cache")
368 static AUDIOMIXER_API float TrimAudioCache(float InMegabytesToFree);
369
371 UFUNCTION(BlueprintCallable, Category = "Audio|Bus", meta = (WorldContext = "WorldContextObject"))
372 static AUDIOMIXER_API void StartAudioBus(const UObject* WorldContextObject, UAudioBus* AudioBus);
373
375 UFUNCTION(BlueprintCallable, Category = "Audio|Bus", meta = (WorldContext = "WorldContextObject"))
376 static AUDIOMIXER_API void StopAudioBus(const UObject* WorldContextObject, UAudioBus* AudioBus);
377
379 UFUNCTION(BlueprintCallable, Category = "Audio|Bus", meta = (WorldContext = "WorldContextObject"))
380 static AUDIOMIXER_API bool IsAudioBusActive(const UObject* WorldContextObject, UAudioBus* AudioBus);
381
383 UFUNCTION(BlueprintCallable, Category = "Audio|Bus", meta = (WorldContext = "WorldContextObject"))
384 static AUDIOMIXER_API void RegisterAudioBusToSubmix(const UObject* WorldContextObject, USoundSubmix* SoundSubmix, UAudioBus* AudioBus);
385
387 UFUNCTION(BlueprintCallable, Category = "Audio|Bus", meta = (WorldContext = "WorldContextObject"))
388 static AUDIOMIXER_API void UnregisterAudioBusFromSubmix(const UObject* WorldContextObject, USoundSubmix* SoundSubmix, UAudioBus* AudioBus);
389
394 UFUNCTION(BlueprintCallable, Category = "Audio", meta = (WorldContext = "WorldContextObject"))
395 static AUDIOMIXER_API void GetAvailableAudioOutputDevices(const UObject* WorldContextObject, const FOnAudioOutputDevicesObtained& OnObtainDevicesEvent);
396
401 UFUNCTION(BlueprintCallable, Category = "Audio", meta = (WorldContext = "WorldContextObject"))
402 static AUDIOMIXER_API void GetCurrentAudioOutputDeviceName(const UObject* WorldContextObject, const FOnMainAudioOutputDeviceObtained& OnObtainCurrentDeviceEvent);
403
409 UFUNCTION(BlueprintCallable, Category = "Audio", meta = (WorldContext = "WorldContextObject"))
410 static AUDIOMIXER_API void SwapAudioOutputDevice(const UObject* WorldContextObject, const FString& NewDeviceId, const FOnCompletedDeviceSwap& OnCompletedDeviceSwap);
411};
412
EAudioMixerStreamDataFormatType
Definition AudioMixerBlueprintLibrary.h:47
EMusicalNoteName
Definition AudioMixerBlueprintLibrary.h:29
FString DataFormatAsString(EAudioMixerStreamDataFormatType type)
Definition AudioMixerBlueprintLibrary.cpp:60
ESwapAudioOutputDeviceResultState
Definition AudioMixerBlueprintLibrary.h:115
EAudioMixerChannelType
Definition AudioMixerBlueprintLibrary.h:59
#define UE_DEPRECATED(Version, Message)
Definition CoreMiscDefines.h:302
#define TEXT(x)
Definition Platform.h:1272
FPlatformTypes::TCHAR TCHAR
Either ANSICHAR or WIDECHAR, depending on whether the platform supports wide characters or the requir...
Definition Platform.h:1135
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
#define DECLARE_DYNAMIC_DELEGATE_OneParam(DelegateName, Param1Type, Param1Name)
Definition DelegateCombinations.h:52
#define DECLARE_DYNAMIC_DELEGATE_TwoParams(DelegateName, Param1Type, Param1Name, Param2Type, Param2Name)
Definition DelegateCombinations.h:61
return true
Definition ExternalRpcRegistry.cpp:601
#define UPROPERTY(...)
UObject definition macros.
Definition ObjectMacros.h:744
#define GENERATED_BODY(...)
Definition ObjectMacros.h:765
#define UFUNCTION(...)
Definition ObjectMacros.h:745
#define UCLASS(...)
Definition ObjectMacros.h:776
#define UENUM(...)
Definition ObjectMacros.h:749
#define USTRUCT(...)
Definition ObjectMacros.h:746
#define GENERATED_USTRUCT_BODY(...)
Definition ObjectMacros.h:767
EAudioSpectrumBandPresetType
Definition SoundSubmixSend.h:18
EAudioRecordingExportType
Definition SoundSubmixSend.h:60
EFFTWindowType
Definition SoundSubmix.h:80
EFFTSize
Definition SoundSubmix.h:46
EAudioSpectrumType
Definition SoundSubmix.h:96
EFFTPeakInterpolationMethod
Definition SoundSubmix.h:71
uint8_t uint8
Definition binka_ue_file_header.h:8
Definition Array.h:670
Definition AudioBus.h:76
Definition AudioMixerBlueprintLibrary.h:214
Definition BlueprintFunctionLibrary.h:16
Definition Object.h:95
Definition SoundCue.h:91
Definition SoundEffectSource.h:49
Definition SoundEffectSubmix.h:26
Definition SoundSubmix.h:334
ENGINE_API void StartRecordingOutput(const UObject *WorldContextObject, float ExpectedDuration)
Definition SoundSubmix.cpp:105
ENGINE_API void StopRecordingOutput(const UObject *WorldContextObject, EAudioRecordingExportType ExportType, const FString &Name, FString Path, USoundWave *ExistingSoundWaveToOverwrite=nullptr)
Definition SoundSubmix.cpp:121
Definition SoundWave.h:417
NO_LOGGING.
Definition AudioMixerPlatformAndroid.cpp:53
@ false
Definition radaudio_common.h:23
Definition AudioMixer.h:152
Definition AudioMixerBlueprintLibrary.h:149
Definition SoundEffectSource.h:31
Definition AudioMixerBlueprintLibrary.h:126