UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
SoundFile.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2#pragma once
3
4#include "CoreMinimal.h"
5
6#include "SoundFileIOEnums.h"
7
8
9namespace Audio
10{
12
39
41 {
44
47
50
53
56 {
59 Default.SampleRate = 48000;
60 Default.EncodingQuality = 1.0;
61 Default.bPerformPeakNormalization = false;
62
63 return MoveTemp(Default);
64 }
65 };
66
72 {
75
78
81
83 void* DataPtr = nullptr;
84 };
85
99
108
109 // ChunkID: 'cue '
110 // A cue chunk specifies one or more sample offsets which are often used to mark noteworthy sections of audio. For example,
111 // the beginning and end of a verse in a song may have cue points to make them easier to find. The cue chunk is optional and
112 // if included, a single cue chunk should specify all cue points for the "WAVE" chunk.
113 // No more than one cue chunk is allowed in a "WAVE" chunk.
115 {
116 uint32 ChunkID; // 'cue '
117 uint32 ChunkDataSize; // Depends on the number of cue points
118 uint32 NumCuePoints; // Number of cue points in the list
119 };
120
122 {
123 uint32 CueID; // Unique ID value for the cue point
124 uint32 Position; // Play order position
125 uint32 DataChunkID; // RIFF ID of corresponding data chunk
126 uint32 ChunkStart; // Byte offset of data chunk
127 uint32 BlockStart; // Byte offset of sample of first channel
128 uint32 SampleOffset; // Byte offset to sample byte of first channel
129 };
130
132 {
133 uint32 ChunkID; // 'smpl'
134 uint32 ChunkDataSize; // Depends on the number of sample loops
135 uint32 ManufacturerCode; // The MIDI Manufacturers Association manufacturer code
136 uint32 Product; // The Product / Model ID of the target device, specific to the manufacturer
137 uint32 SamplePeriod; // The period of one sample in nanoseconds.
138 uint32 MidiUnityNote; // The MIDI note that will play when this sample is played at its current pitch
139 uint32 MidiPitchFraction; // The fraction of a semitone up from the specified note.
140 uint32 SmpteFormat; // The SMPTE format. Possible values: 0, 24, 25, 29, 30
141 uint32 SmpteOffset; // Specifies a time offset for the sample, if the sample should start at a later time and not immediately.
142 uint32 NumSampleLoops; // Number of sample loops contained in this chunks data
143 uint32 NumSampleDataBytes; // Number of bytes of optional sampler specific data that follows the sample loops. zero if there is no such data.
144 };
145
147 {
148 uint32 LoopID; // A unique ID of the loop, which could be a cue point
149 uint32 LoopType; // The loop type. 0: Forward Looping, 1: Ping-Pong, 2: Backward, 3-31: future standard types. >=32: manufacturer specific types
150 uint32 StartFrame; // Start point of the loop in samples
151 uint32 EndFrame; // End point of the loop in samples. The end sample is also played.
152 uint32 Fraction; // The resolution at which this loop should be fine tuned.
153 uint32 NumPlayTimes; // The number of times to play the loop. A value of zero means inifity. In a Midi sampler, that may mean infinite sustain.
154 };
155
157 {
158 uint32 ChunkID; // 'list'
159 uint32 ChunkDataSize; // Depends on contained text
160 uint32 TypeID; // always 'adtl'
161 };
162
164 {
165 uint32 ChunkID; // 'labl'
166 uint32 ChunkDataSize; // depends on contained text
167 uint32 CuePointID; // Cue Point ID associated with the label
168 };
169
175 {
176 public:
181
183 {
184 if (Other.ChunkInfo.ChunkIdSize)
185 {
186 FMemory::Memcpy(ChunkInfo.ChunkId, Other.ChunkInfo.ChunkId, sizeof(ChunkInfo.ChunkId));
187 }
188 ChunkInfo.ChunkIdSize = Other.ChunkInfo.ChunkIdSize;
189 ChunkInfo.DataLength = Other.ChunkInfo.DataLength;
190 ChunkInfo.DataPtr = Other.ChunkInfo.DataPtr;
191
192 ChunkData = MoveTemp(Other.ChunkData);
193 }
194
196 {
197 if (Other.ChunkInfo.ChunkIdSize)
198 {
199 FMemory::Memcpy(ChunkInfo.ChunkId, Other.ChunkInfo.ChunkId, sizeof(ChunkInfo.ChunkId));
200 }
201 ChunkInfo.ChunkIdSize = Other.ChunkInfo.ChunkIdSize;
202 ChunkInfo.DataLength = Other.ChunkInfo.DataLength;
203 ChunkInfo.DataPtr = Other.ChunkInfo.DataPtr;
204
205 ChunkData = MoveTemp(Other.ChunkData);
206
207 return *this;
208 }
209
211 {
212 if (ChunkInfo.DataLength > 0 && ensure(ChunkInfo.DataPtr == nullptr))
213 {
214 ChunkData = MakeUnique<uint8[]>(ChunkInfo.DataLength);
215 ChunkInfo.DataPtr = ChunkData.Get();
216 }
217 }
218
220 {
221 return &ChunkInfo;
222 }
223
225 {
226 return &ChunkInfo;
227 }
228
229 private:
230 FSoundFileChunkInfo ChunkInfo;
231 TUniquePtr<uint8[]> ChunkData;
232 };
234
252
269
287} // namespace Audio
#define ensure( InExpression)
Definition AssertionMacros.h:464
FPlatformTypes::int64 int64
A 64-bit signed integer.
Definition Platform.h:1127
FPlatformTypes::int32 int32
A 32-bit signed integer.
Definition Platform.h:1125
FPlatformTypes::ANSICHAR ANSICHAR
An ANSI character. Normally a signed type.
Definition Platform.h:1131
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
UE_INTRINSIC_CAST UE_REWRITE constexpr std::remove_reference_t< T > && MoveTemp(T &&Obj) noexcept
Definition UnrealTemplate.h:520
uint32 Offset
Definition VulkanMemory.cpp:4033
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition SoundFile.h:175
FSoundFileChunkInfoWrapper & operator=(const FSoundFileChunkInfoWrapper &Other)=delete
FSoundFileChunkInfoWrapper(FSoundFileChunkInfoWrapper &&Other) noexcept
Definition SoundFile.h:182
FSoundFileChunkInfoWrapper & operator=(FSoundFileChunkInfoWrapper &&Other) noexcept
Definition SoundFile.h:195
void AllocateChunkData()
Definition SoundFile.h:210
FSoundFileChunkInfo * GetPtr()
Definition SoundFile.h:219
const FSoundFileChunkInfo * GetPtr() const
Definition SoundFile.h:224
FSoundFileChunkInfoWrapper(const FSoundFileChunkInfoWrapper &Other)=delete
Definition SoundFile.h:254
virtual ~ISoundFileReader()
Definition SoundFile.h:256
virtual ESoundFileError::Type GetOptionalChunks(FSoundFileChunkArray &OutChunkInfoArray, const TSet< uint32 > &ChunkIdsToSkip={})=0
virtual ESoundFileError::Type GetDescription(FSoundFileDescription &OutputDescription, TArray< ESoundFileChannelMap::Type > &OutChannelMap)=0
virtual ESoundFileError::Type ReadSamples(float *DataPtr, SoundFileCount NumSamples, SoundFileCount &OutNumSamplesRead)=0
virtual ESoundFileError::Type Release()=0
virtual ESoundFileError::Type ReadFrames(double *DataPtr, SoundFileCount NumFrames, SoundFileCount &OutNumFramesRead)=0
virtual ESoundFileError::Type SeekFrames(SoundFileCount Offset, ESoundFileSeekMode::Type SeekMode, SoundFileCount &OutOffset)=0
virtual ESoundFileError::Type ReadFrames(float *DataPtr, SoundFileCount NumFrames, SoundFileCount &OutNumFramesRead)=0
virtual ESoundFileError::Type ReadSamples(double *DataPtr, SoundFileCount NumSamples, SoundFileCount &OutNumSamplesRead)=0
virtual ESoundFileError::Type Init(const TArray< uint8 > *InData)=0
virtual ESoundFileError::Type Init(TSharedPtr< ISoundFile > InSoundFileData, bool bIsStreamed)=0
Definition SoundFile.h:271
virtual ESoundFileError::Type WriteOptionalChunks(const FSoundFileChunkArray &ChunkInfoArray)=0
virtual ESoundFileError::Type WriteCueCommandData(FSoundFileCues &InSoundFileData)=0
virtual ESoundFileError::Type WriteSamples(const double *DataPtr, SoundFileCount NumSamples, SoundFileCount &OutNumSampleWritten)=0
virtual ESoundFileError::Type Init(const FSoundFileDescription &FileDescription, const TArray< ESoundFileChannelMap::Type > &InChannelMap, double EncodingQuality)=0
virtual ESoundFileError::Type Release()=0
virtual ESoundFileError::Type WriteFrames(const double *Data, SoundFileCount NumFrames, SoundFileCount &OutNumFramesWritten)=0
virtual ~ISoundFileWriter()
Definition SoundFile.h:273
virtual ESoundFileError::Type SeekFrames(SoundFileCount Offset, ESoundFileSeekMode::Type SeekMode, SoundFileCount &OutOffset)=0
virtual ESoundFileError::Type WriteFrames(const float *Data, SoundFileCount NumFrames, SoundFileCount &OutNumFramesWritten)=0
virtual ESoundFileError::Type GetData(TArray< uint8 > **OutData)=0
virtual ESoundFileError::Type WriteSamples(const float *DataPtr, SoundFileCount NumSamples, SoundFileCount &OutNumSampleWritten)=0
virtual ESoundFileError::Type WriteByteArrayChunk(TArray< uint8 > &InSoundFileChunk)=0
Definition SoundFile.h:239
virtual ESoundFileError::Type IsStreamed(bool &bOutIsStreamed) const =0
virtual ESoundFileError::Type GetDescription(FSoundFileDescription &OutDescription) const =0
virtual ESoundFileError::Type GetState(ESoundFileState::Type &OutState) const =0
virtual ESoundFileError::Type GetId(uint32 &OutId) const =0
virtual ESoundFileError::Type GetPath(FName &OutPath) const =0
virtual ESoundFileError::Type GetError() const =0
virtual ~ISoundFile()
Definition SoundFile.h:241
virtual ESoundFileError::Type GetChannelMap(TArray< ESoundFileChannelMap::Type > &OutChannelMap) const =0
virtual ESoundFileError::Type GetDataSize(int32 &DataSize) const =0
virtual ESoundFileError::Type GetBulkData(TArray< uint8 > **OutData) const =0
Definition NameTypes.h:617
Definition Array.h:670
Definition SharedPointer.h:692
Definition UniquePtr.h:107
UE_FORCEINLINE_HINT T * Get() const
Definition UniquePtr.h:324
Type
Definition SoundFileIOEnums.h:12
@ PCM_SIGNED_16
Definition SoundFileIOEnums.h:87
@ WAV
Definition SoundFileIOEnums.h:80
Type
Definition SoundFileIOEnums.h:61
Type
Definition SoundFileIOEnums.h:242
NO_LOGGING.
Definition AudioMixerPlatformAndroid.cpp:53
int64 SoundFileCount
Definition SoundFile.h:11
TArray< FSoundFileChunkInfoWrapper > FSoundFileChunkArray
Definition SoundFile.h:233
Definition SoundFile.h:115
uint32 NumCuePoints
Definition SoundFile.h:118
uint32 ChunkID
Definition SoundFile.h:116
uint32 ChunkDataSize
Definition SoundFile.h:117
Definition SoundFile.h:122
uint32 Position
Definition SoundFile.h:124
uint32 ChunkStart
Definition SoundFile.h:126
uint32 SampleOffset
Definition SoundFile.h:128
uint32 DataChunkID
Definition SoundFile.h:125
uint32 CueID
Definition SoundFile.h:123
uint32 BlockStart
Definition SoundFile.h:127
Definition SoundFile.h:164
uint32 ChunkID
Definition SoundFile.h:165
uint32 ChunkDataSize
Definition SoundFile.h:166
uint32 CuePointID
Definition SoundFile.h:167
Definition SoundFile.h:157
uint32 ChunkDataSize
Definition SoundFile.h:159
uint32 ChunkID
Definition SoundFile.h:158
uint32 TypeID
Definition SoundFile.h:160
Definition SoundFile.h:132
uint32 ChunkDataSize
Definition SoundFile.h:134
uint32 MidiUnityNote
Definition SoundFile.h:138
uint32 ManufacturerCode
Definition SoundFile.h:135
uint32 SamplePeriod
Definition SoundFile.h:137
uint32 SmpteOffset
Definition SoundFile.h:141
uint32 SmpteFormat
Definition SoundFile.h:140
uint32 Product
Definition SoundFile.h:136
uint32 NumSampleDataBytes
Definition SoundFile.h:143
uint32 ChunkID
Definition SoundFile.h:133
uint32 NumSampleLoops
Definition SoundFile.h:142
uint32 MidiPitchFraction
Definition SoundFile.h:139
Definition SoundFile.h:147
uint32 NumPlayTimes
Definition SoundFile.h:153
uint32 Fraction
Definition SoundFile.h:152
uint32 EndFrame
Definition SoundFile.h:151
uint32 StartFrame
Definition SoundFile.h:150
uint32 LoopType
Definition SoundFile.h:149
uint32 LoopID
Definition SoundFile.h:148
Definition SoundFile.h:72
uint32 DataLength
Definition SoundFile.h:80
uint32 ChunkIdSize
Definition SoundFile.h:77
ANSICHAR ChunkId[64]
Definition SoundFile.h:74
void * DataPtr
Definition SoundFile.h:83
Definition SoundFile.h:41
int32 Format
Definition SoundFile.h:43
static FSoundFileConvertFormat CreateDefault()
Definition SoundFile.h:55
double EncodingQuality
Definition SoundFile.h:49
bool bPerformPeakNormalization
Definition SoundFile.h:52
uint32 SampleRate
Definition SoundFile.h:46
Definition SoundFile.h:90
uint32 SampleOffset
Definition SoundFile.h:96
int32 ChunkStart
Definition SoundFile.h:94
uint32 Position
Definition SoundFile.h:92
int32 ChunkId
Definition SoundFile.h:93
int32 CueId
Definition SoundFile.h:91
int32 BlockStart
Definition SoundFile.h:95
char Name[256]
Definition SoundFile.h:97
Definition SoundFile.h:104
uint32 CueCount
Definition SoundFile.h:105
FSoundFileCuePoint CuePoints[100]
Definition SoundFile.h:106
Definition SoundFile.h:20
int32 SampleRate
Definition SoundFile.h:25
int64 NumFrames
Definition SoundFile.h:22
int32 NumChannels
Definition SoundFile.h:28
int32 FormatFlags
Definition SoundFile.h:31
int32 bIsSeekable
Definition SoundFile.h:37
int32 NumSections
Definition SoundFile.h:34
static UE_FORCEINLINE_HINT void * Memcpy(void *Dest, const void *Src, SIZE_T Count)
Definition UnrealMemory.h:160