Version
menu_open
link
Wwise SDK 2022.1.4
AkTypes.h
Go to the documentation of this file.
1 /*******************************************************************************
2 The content of this file includes portions of the AUDIOKINETIC Wwise Technology
3 released in source code form as part of the SDK installer package.
4 
5 Commercial License Usage
6 
7 Licensees holding valid commercial licenses to the AUDIOKINETIC Wwise Technology
8 may use this file in accordance with the end user license agreement provided
9 with the software or, alternatively, in accordance with the terms contained in a
10 written agreement between you and Audiokinetic Inc.
11 
12 Apache License Usage
13 
14 Alternatively, this file may be used under the Apache License, Version 2.0 (the
15 "Apache License"); you may not use this file except in compliance with the
16 Apache License. You may obtain a copy of the Apache License at
17 http://www.apache.org/licenses/LICENSE-2.0.
18 
19 Unless required by applicable law or agreed to in writing, software distributed
20 under the Apache License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES
21 OR CONDITIONS OF ANY KIND, either express or implied. See the Apache License for
22 the specific language governing permissions and limitations under the License.
23 
24  Copyright (c) 2023 Audiokinetic Inc.
25 *******************************************************************************/
26 
27 // AkTypes.h
28 
29 /// \file
30 /// Data type definitions.
31 
32 #ifndef _AK_DATA_TYPES_H_
33 #define _AK_DATA_TYPES_H_
34 
35 // Platform-specific section.
36 //----------------------------------------------------------------------------------------------------
37 #include <AK/AkPlatforms.h>
38 
39 
40 //----------------------------------------------------------------------------------------------------
41 
43 
44 #ifndef NULL
45  #ifdef __cplusplus
46  #define NULL 0
47  #else
48  #define NULL ((void *)0)
49  #endif
50 #endif
51 
52 
53 #ifndef AK_ALIGN
54 #if defined(SWIG)
55 #define AK_ALIGN( _declaration_, _alignment_ ) _declaration_
56 #else
57 #if defined(_MSC_VER)
58 #define AK_ALIGN( _declaration_, _alignment_ ) __declspec( align( _alignment_ ) ) _declaration_
59 #else
60 #define AK_ALIGN( _declaration_, _alignment_ ) _declaration_ __attribute__( ( aligned( _alignment_ ) ) )
61 #endif // _MSC_VER
62 #endif // SWIG
63 #endif // AK_ALIGN
64 
65 #if !defined(AK_ENDIANNESS_LITTLE) && !defined(AK_ENDIANNESS_BIG)
66 #define AK_ENDIANNESS_LITTLE
67 #endif
68 
69 ///< AK_UNALIGNED refers to the __unaligned compilation flag available on some platforms. Note that so far, on the tested platform this should always be placed before the pointer symbol *.
70 #ifndef AK_UNALIGNED
71 #if defined(__GNUC__)
72 #define AK_UNALIGNED __attribute__((aligned(1)))
73 #elif defined(_MSC_VER) && !defined(AK_CPU_X86) // __unaligned not supported on 32-bit x86
74 #define AK_UNALIGNED __unaligned
75 #else
76 #define AK_UNALIGNED
77 #endif
78 #endif // AK_UNALIGNED
79 
80 #if (defined(__cplusplus) && __cplusplus >= 201103L) || (defined(_MSVC_LANG) && _MSVC_LANG >= 201103L)
81 #define AK_CPP11
82 #endif
83 
84 #if (defined(__cplusplus) && __cplusplus >= 201402L) || (defined(_MSVC_LANG) && _MSVC_LANG >= 201402L)
85 #define AK_CPP14
86 #endif
87 
88 #if (defined(__cplusplus) && __cplusplus >= 201703L) || (defined(_MSVC_LANG) && _MSVC_LANG >= 201703L)
89 #define AK_CPP17
90 #endif
91 
92 #if defined(AK_CPP11)
93 #define AK_FINAL final ///< Refers to the C++11 final keyword
94 #else
95 #define AK_FINAL
96 #endif
97 
98 #if defined(AK_CPP17)
99 #define AK_NODISCARD [[nodiscard]] ///< Refers to the C++17 [[nodiscard]] keyword
100 #else
101 #define AK_NODISCARD
102 #endif
103 
104 
105 #if defined(AK_CPU_X86_64) || defined(AK_CPU_ARM_64)
106 #define AK_POINTER_64
107 #endif // #if defined(AK_CPU_X86_64) || defined(AK_CPU_ARM_64)
108 
109 #if !defined(AK_UNUSEDVAR)
110 // use to mark variables as unused to avoid warnings
111 #define AK_UNUSEDVAR(x) ((void)(x))
112 #endif
113 
114 typedef AkUInt32 AkUniqueID; ///< Unique 32-bit ID
115 typedef AkUInt32 AkStateID; ///< State ID
116 typedef AkUInt32 AkStateGroupID; ///< State group ID
117 typedef AkUInt32 AkPlayingID; ///< Playing ID
118 typedef AkInt32 AkTimeMs; ///< Time in ms
119 typedef AkUInt16 AkPortNumber; ///< Port number
120 typedef AkReal32 AkPitchValue; ///< Pitch value
121 typedef AkReal32 AkVolumeValue; ///< Volume value( also apply to LFE )
122 typedef AkUInt64 AkGameObjectID; ///< Game object ID
123 typedef AkReal32 AkLPFType; ///< Low-pass filter type
124 typedef AkInt32 AkMemPoolId; ///< Memory pool ID
125 typedef AkUInt32 AkPluginID; ///< Source or effect plug-in ID
126 typedef AkUInt32 AkCodecID; ///< Codec plug-in ID
127 typedef AkUInt32 AkAuxBusID; ///< Auxilliary bus ID
128 typedef AkInt16 AkPluginParamID; ///< Source or effect plug-in parameter ID
129 typedef AkInt8 AkPriority; ///< Priority
130 typedef AkUInt16 AkDataCompID; ///< Data compression format ID
131 typedef AkUInt16 AkDataTypeID; ///< Data sample type ID
132 typedef AkUInt8 AkDataInterleaveID; ///< Data interleaved state ID
133 typedef AkUInt32 AkSwitchGroupID; ///< Switch group ID
134 typedef AkUInt32 AkSwitchStateID; ///< Switch ID
135 typedef AkUInt32 AkRtpcID; ///< Real time parameter control ID
136 typedef AkReal32 AkRtpcValue; ///< Real time parameter control value
137 typedef AkUInt32 AkBankID; ///< Run time bank ID
138 typedef AkUInt32 AkBankType; ///< Run time bank type
139 typedef AkUInt32 AkFileID; ///< Integer-type file identifier
140 typedef AkUInt32 AkDeviceID; ///< I/O device ID
141 typedef AkUInt32 AkTriggerID; ///< Trigger ID
142 typedef AkUInt32 AkArgumentValueID; ///< Argument value ID
143 typedef AkUInt32 AkChannelMask; ///< Channel mask (similar to WAVE_FORMAT_EXTENSIBLE). Bit values are defined in AkSpeakerConfig.h.
144 typedef AkUInt32 AkModulatorID; ///< Modulator ID
145 typedef AkUInt32 AkAcousticTextureID; ///< Acoustic Texture ID
146 typedef AkUInt32 AkImageSourceID; ///< Image Source ID
147 typedef AkUInt64 AkOutputDeviceID; ///< Audio Output device ID
148 typedef AkUInt32 AkPipelineID; ///< Unique node (bus, voice) identifier for profiling.
149 typedef AkUInt32 AkRayID; ///< Unique (per emitter) identifier for an emitter-listener ray.
150 typedef AkUInt64 AkAudioObjectID; ///< Audio Object ID
151 typedef AkUInt32 AkJobType; ///< Job type identifier
152 
153 // Constants.
154 static const AkPluginID AK_INVALID_PLUGINID = (AkPluginID)-1; ///< Invalid FX ID
155 static const AkPluginID AK_INVALID_SHARE_SET_ID = (AkPluginID)-1; ///< Invalid Share Set ID
156 static const AkGameObjectID AK_INVALID_GAME_OBJECT = (AkGameObjectID)-1; ///< Invalid game object (may also mean all game objects)
157 static const AkUniqueID AK_INVALID_UNIQUE_ID = 0; ///< Invalid unique 32-bit ID
158 static const AkRtpcID AK_INVALID_RTPC_ID = AK_INVALID_UNIQUE_ID;///< Invalid RTPC ID
159 static const AkPlayingID AK_INVALID_PLAYING_ID = AK_INVALID_UNIQUE_ID;///< Invalid playing ID
160 static const AkUInt32 AK_DEFAULT_SWITCH_STATE = 0; ///< Switch selected if no switch has been set yet
161 static const AkMemPoolId AK_INVALID_POOL_ID = -1; ///< Invalid pool ID
162 static const AkMemPoolId AK_DEFAULT_POOL_ID = -1; ///< Default pool ID, same as AK_INVALID_POOL_ID
163 static const AkAuxBusID AK_INVALID_AUX_ID = AK_INVALID_UNIQUE_ID;///< Invalid auxiliary bus ID (or no Aux bus ID)
164 static const AkFileID AK_INVALID_FILE_ID = (AkFileID)-1; ///< Invalid file ID
165 static const AkDeviceID AK_INVALID_DEVICE_ID = (AkDeviceID)-1; ///< Invalid streaming device ID
166 static const AkBankID AK_INVALID_BANK_ID = AK_INVALID_UNIQUE_ID;///< Invalid bank ID
167 static const AkArgumentValueID AK_FALLBACK_ARGUMENTVALUE_ID = 0; ///< Fallback argument value ID
168 static const AkChannelMask AK_INVALID_CHANNELMASK = 0; ///< Invalid channel mask
169 static const AkUInt32 AK_INVALID_OUTPUT_DEVICE_ID = AK_INVALID_UNIQUE_ID;///< Invalid Device ID
170 static const AkPipelineID AK_INVALID_PIPELINE_ID = AK_INVALID_UNIQUE_ID;///< Invalid pipeline ID (for profiling)
171 static const AkAudioObjectID AK_INVALID_AUDIO_OBJECT_ID = (AkAudioObjectID)-1; ///< Invalid audio object ID
172 
173 // Priority.
174 static const AkPriority AK_DEFAULT_PRIORITY = 50; ///< Default sound / I/O priority
175 static const AkPriority AK_MIN_PRIORITY = 0; ///< Minimal priority value [0,100]
176 static const AkPriority AK_MAX_PRIORITY = 100; ///< Maximal priority value [0,100]
177 
178 // Default bank I/O settings.
179 static const AkPriority AK_DEFAULT_BANK_IO_PRIORITY = AK_DEFAULT_PRIORITY; ///< Default bank load I/O priority
180 static const AkReal32 AK_DEFAULT_BANK_THROUGHPUT = 1*1024*1024/1000.f; ///< Default bank load throughput (1 Mb/ms)
181 
182 // Bank version
183 static const AkUInt32 AK_SOUNDBANK_VERSION = 145; ///< Version of the soundbank reader
184 
185 // Job types
186 static const AkJobType AkJobType_Generic = 0; ///< Job type for general-purpose work
187 static const AkJobType AkJobType_AudioProcessing = 1; ///< Job type for DSP work
188 static const AkJobType AkJobType_SpatialAudio = 2; ///< Job type for Spatial Audio computations
189 static const AkUInt32 AK_NUM_JOB_TYPES = 3; ///< Number of possible job types recognized by the Sound Engine
190 
191 /// Standard function call result.
192 enum AKRESULT
193 {
194  AK_NotImplemented = 0, ///< This feature is not implemented.
195  AK_Success = 1, ///< The operation was successful.
196  AK_Fail = 2, ///< The operation failed.
197  AK_PartialSuccess = 3, ///< The operation succeeded partially.
198  AK_NotCompatible = 4, ///< Incompatible formats
199  AK_AlreadyConnected = 5, ///< The stream is already connected to another node.
200  AK_InvalidFile = 7, ///< The provided file is the wrong format or unexpected values causes the file to be invalid.
201  AK_AudioFileHeaderTooLarge = 8, ///< The file header is too large.
202  AK_MaxReached = 9, ///< The maximum was reached.
203  AK_InvalidID = 14, ///< The ID is invalid.
204  AK_IDNotFound = 15, ///< The ID was not found.
205  AK_InvalidInstanceID = 16, ///< The InstanceID is invalid.
206  AK_NoMoreData = 17, ///< No more data is available from the source.
207  AK_InvalidStateGroup = 20, ///< The StateGroup is not a valid channel.
208  AK_ChildAlreadyHasAParent = 21, ///< The child already has a parent.
209  AK_InvalidLanguage = 22, ///< The language is invalid (applies to the Low-Level I/O).
210  AK_CannotAddItseflAsAChild = 23, ///< It is not possible to add itself as its own child.
211  AK_InvalidParameter = 31, ///< Something is not within bounds, check the documentation of the function returning this code.
212  AK_ElementAlreadyInList = 35, ///< The item could not be added because it was already in the list.
213  AK_PathNotFound = 36, ///< This path is not known.
214  AK_PathNoVertices = 37, ///< Stuff in vertices before trying to start it
215  AK_PathNotRunning = 38, ///< Only a running path can be paused.
216  AK_PathNotPaused = 39, ///< Only a paused path can be resumed.
217  AK_PathNodeAlreadyInList = 40, ///< This path is already there.
218  AK_PathNodeNotInList = 41, ///< This path is not there.
219  AK_DataNeeded = 43, ///< The consumer needs more.
220  AK_NoDataNeeded = 44, ///< The consumer does not need more.
221  AK_DataReady = 45, ///< The provider has available data.
222  AK_NoDataReady = 46, ///< The provider does not have available data.
223  AK_InsufficientMemory = 52, ///< Memory error.
224  AK_Cancelled = 53, ///< The requested action was cancelled (not an error).
225  AK_UnknownBankID = 54, ///< Trying to load a bank using an ID which is not defined.
226  AK_BankReadError = 56, ///< Error while reading a bank.
227  AK_InvalidSwitchType = 57, ///< Invalid switch type (used with the switch container)
228  AK_FormatNotReady = 63, ///< Source format not known yet.
229  AK_WrongBankVersion = 64, ///< The bank version is not compatible with the current bank reader.
230  AK_FileNotFound = 66, ///< File not found.
231  AK_DeviceNotReady = 67, ///< Specified ID doesn't match a valid hardware device: either the device doesn't exist or is disabled.
232  AK_BankAlreadyLoaded = 69, ///< The bank load failed because the bank is already loaded.
233  AK_RenderedFX = 71, ///< The effect on the node is rendered.
234  AK_ProcessNeeded = 72, ///< A routine needs to be executed on some CPU.
235  AK_ProcessDone = 73, ///< The executed routine has finished its execution.
236  AK_MemManagerNotInitialized = 74, ///< The memory manager should have been initialized at this point.
237  AK_StreamMgrNotInitialized = 75, ///< The stream manager should have been initialized at this point.
238  AK_SSEInstructionsNotSupported = 76,///< The machine does not support SSE instructions (required on PC).
239  AK_Busy = 77, ///< The system is busy and could not process the request.
240  AK_UnsupportedChannelConfig = 78, ///< Channel configuration is not supported in the current execution context.
241  AK_PluginMediaNotAvailable = 79, ///< Plugin media is not available for effect.
242  AK_MustBeVirtualized = 80, ///< Sound was Not Allowed to play.
243  AK_CommandTooLarge = 81, ///< SDK command is too large to fit in the command queue.
244  AK_RejectedByFilter = 82, ///< A play request was rejected due to the MIDI filter parameters.
245  AK_InvalidCustomPlatformName= 83, ///< Detecting incompatibility between Custom platform of banks and custom platform of connected application
246  AK_DLLCannotLoad = 84, ///< Plugin DLL could not be loaded, either because it is not found or one dependency is missing.
247  AK_DLLPathNotFound = 85, ///< Plugin DLL search path could not be found.
248  AK_NoJavaVM = 86, ///< No Java VM provided in AkInitSettings.
249  AK_OpenSLError = 87, ///< OpenSL returned an error. Check error log for more details.
250  AK_PluginNotRegistered = 88, ///< Plugin is not registered. Make sure to implement a AK::PluginRegistration class for it and use AK_STATIC_LINK_PLUGIN in the game binary.
251  AK_DataAlignmentError = 89, ///< A pointer to audio data was not aligned to the platform's required alignment (check AkTypes.h in the platform-specific folder)
252  AK_DeviceNotCompatible = 90, ///< Incompatible Audio device.
253  AK_DuplicateUniqueID = 91, ///< Two Wwise objects share the same ID.
254  AK_InitBankNotLoaded = 92, ///< The Init bank was not loaded yet, the sound engine isn't completely ready yet.
255  AK_DeviceNotFound = 93, ///< The specified device ID does not match with any of the output devices that the sound engine is currently using.
256  AK_PlayingIDNotFound = 94, ///< Calling a function with a playing ID that is not known.
257  AK_InvalidFloatValue = 95, ///< One parameter has a invalid float value such as NaN, INF or FLT_MAX.
258  AK_FileFormatMismatch = 96, ///< Media file format unexpected
259  AK_NoDistinctListener = 97, ///< No distinct listener provided for AddOutput
260  AK_ACP_Error = 98, ///< Generic XMA decoder error.
261  AK_ResourceInUse = 99, ///< Resource is in use and cannot be released.
262  AK_InvalidBankType = 100, ///< Invalid bank type. The bank type was either supplied through a function call (e.g. LoadBank) or obtained from a bank loaded from memory.
263  AK_AlreadyInitialized = 101, ///< Init() was called but that element was already initialized.
264  AK_NotInitialized = 102, ///< The component being used is not initialized. Most likely AK::SoundEngine::Init() was not called yet, or AK::SoundEngine::Term was called too early.
265  AK_FilePermissionError = 103, ///< The file access permissions prevent opening a file.
266  AK_UnknownFileError = 104, ///< Rare file error occured, as opposed to AK_FileNotFound or AK_FilePermissionError. This lumps all unrecognized OS file system errors.
267 };
268 
269 /// Game sync group type
271 {
272  // should stay set as Switch = 0 and State = 1
273  AkGroupType_Switch = 0, ///< Type switch
274  AkGroupType_State = 1 ///< Type state
275 };
276 
277 /// Configured audio settings
279 {
280  AkUInt32 uNumSamplesPerFrame; ///< Number of samples per audio frame (256, 512, 1024 or 2048).
281  AkUInt32 uNumSamplesPerSecond; ///< Number of samples per second.
282 };
283 
285 {
286  AkDeviceState_Unknown = 0, ///< The audio device state is unknown or invalid.
287  AkDeviceState_Active = 1 << 0, ///< The audio device is active That is, the audio adapter that connects to the endpoint device is present and enabled.
288  AkDeviceState_Disabled = 1 << 1, ///< The audio device is disabled.
289  AkDeviceState_NotPresent = 1 << 2, ///< The audio device is not present because the audio adapter that connects to the endpoint device has been removed from the system.
290  AkDeviceState_Unplugged = 1 << 3, ///< The audio device is unplugged.
292 };
293 
295 {
296  AkUInt32 idDevice; ///< Device ID for Wwise. This is the same as what is returned from AK::GetDeviceID and AK::GetDeviceIDFromName. Use it to specify the main device in AkPlatformInitSettings.idAudioDevice or in AK::SoundEngine::AddSecondaryOutput.
297  AkOSChar deviceName[AK_MAX_PATH]; ///< The user-friendly name for the device.
298  AkAudioDeviceState deviceStateMask = AkDeviceState_Unknown; ///< Bitmask used to filter the device based on their state.
299  bool isDefaultDevice = false; ///< Identify default device. Always false when not supported.
300 };
301 
302 /// This structure allows the game to provide audio files to fill the external sources. See \ref AK::SoundEngine::PostEvent
303 /// You can specify a streaming file or a file in-memory, regardless of the "Stream" option in the Wwise project.
304 /// The only file format accepted is a fully formed WEM file, as converted by Wwise.
305 /// \akwarning
306 /// Make sure that only one of szFile, pInMemory or idFile is non-null. if both idFile and szFile are set, idFile is passed to low-level IO and szFile is used as stream name (for profiling purposes).
307 /// \endakwarning
308 /// \akwarning
309 /// When using the in-memory file (pInMemory & uiMemorySize), it is the responsibility of the game to ensure the memory stays valid for the entire duration of the playback.
310 /// You can achieve this by using the AK_EndOfEvent callback to track when the Event ends.
311 /// \endakwarning
312 /// \sa
313 /// - AK::SoundEngine::PostEvent
315 {
316  AkUInt32 iExternalSrcCookie; ///< Cookie identifying the source, given by hashing the name of the source given in the project. See \ref AK::SoundEngine::GetIDFromString. \aknote If an event triggers the playback of more than one external source, they must be named uniquely in the project therefore have a unique cookie) in order to tell them apart when filling the AkExternalSourceInfo structures. \endaknote
317  AkCodecID idCodec; ///< Codec ID for the file. One of the audio formats defined in AkTypes.h (AKCODECID_XXX)
318  AkOSChar * szFile; ///< File path for the source. If not NULL, the source will be streaming from disk. Set pInMemory to NULL. If idFile is set, this field is used as stream name (for profiling purposes). /// The only file format accepted is a fully formed WEM file, as converted by Wwise.
319  void* pInMemory; ///< Pointer to the in-memory file. If not NULL, the source will be read from memory. Set szFile and idFile to NULL. The only file format accepted is a fully formed WEM file, as converted by Wwise.
320  AkUInt32 uiMemorySize; ///< Size of the data pointed by pInMemory
321  AkFileID idFile; ///< File ID. If not zero, the source will be streaming from disk. This ID can be anything. Note that you must override the low-level IO to resolve this ID to a real file. See \ref streamingmanager_lowlevel for more information on overriding the Low Level IO.
322 
323  /// Default constructor.
325  : iExternalSrcCookie( 0 )
326  , idCodec( 0 )
327  , szFile( 0 )
328  , pInMemory( 0 )
329  , uiMemorySize( 0 )
330  , idFile( 0 ) {}
331 
332  /// Constructor: specify source by memory.
334  void* in_pInMemory, ///< Pointer to the in-memory file.
335  AkUInt32 in_uiMemorySize, ///< Size of data.
336  AkUInt32 in_iExternalSrcCookie, ///< Cookie.
337  AkCodecID in_idCodec ///< Codec ID.
338  )
339  : iExternalSrcCookie( in_iExternalSrcCookie )
340  , idCodec( in_idCodec )
341  , szFile( 0 )
342  , pInMemory( in_pInMemory )
343  , uiMemorySize( in_uiMemorySize )
344  , idFile( 0 ) {}
345 
346  /// Constructor: specify source by streaming file name.
348  AkOSChar * in_pszFileName, ///< File name.
349  AkUInt32 in_iExternalSrcCookie, ///< Cookie.
350  AkCodecID in_idCodec ///< Codec ID.
351  )
352  : iExternalSrcCookie( in_iExternalSrcCookie )
353  , idCodec( in_idCodec )
354  , szFile( in_pszFileName )
355  , pInMemory( 0 )
356  , uiMemorySize( 0 )
357  , idFile( 0 ) {}
358 
359  /// Constructor: specify source by streaming file ID.
361  AkFileID in_idFile, ///< File ID.
362  AkUInt32 in_iExternalSrcCookie, ///< Cookie.
363  AkCodecID in_idCodec ///< Codec ID.
364  )
365  : iExternalSrcCookie( in_iExternalSrcCookie )
366  , idCodec( in_idCodec )
367  , szFile( 0 )
368  , pInMemory( 0 )
369  , uiMemorySize( 0 )
370  , idFile( in_idFile ) {}
371 };
372 
373 /// Nature of the connection binding an input to a bus.
375 {
376  ConnectionType_Direct = 0x0, ///< Direct (main, dry) connection.
377  ConnectionType_GameDefSend = 0x1, ///< Connection by a game-defined send.
378  ConnectionType_UserDefSend = 0x2, ///< Connection by a user-defined send.
379  ConnectionType_ReflectionsSend = 0x3, ///< Connection by a early reflections send.
380 };
381 
382 /// 3D 64-bit vector. Intended as storage for world positions of sounds and objects, benefiting from 64-bit precision range
383 struct AkVector64
384 {
385  inline AkVector64 operator+(const AkVector64& b) const
386  {
387  AkVector64 v;
388 
389  v.X = X + b.X;
390  v.Y = Y + b.Y;
391  v.Z = Z + b.Z;
392 
393  return v;
394  }
395 
396  inline AkVector64 operator-(const AkVector64& b) const
397  {
398  AkVector64 v;
399 
400  v.X = X - b.X;
401  v.Y = Y - b.Y;
402  v.Z = Z - b.Z;
403 
404  return v;
405  }
406 
407  inline void Zero()
408  {
409  X = 0; Y = 0; Z = 0;
410  }
411 
412  AkReal64 X; ///< X Position
413  AkReal64 Y; ///< Y Position
414  AkReal64 Z; ///< Z Position
415 };
416 
417 /// 3D vector for some operations in 3D space. Typically intended only for localized calculations due to 32-bit precision
418 struct AkVector
419 {
420  inline AkVector operator+(const AkVector& b) const
421  {
422  AkVector v;
423 
424  v.X = X + b.X;
425  v.Y = Y + b.Y;
426  v.Z = Z + b.Z;
427 
428  return v;
429  }
430 
431  inline AkVector operator-(const AkVector& b) const
432  {
433  AkVector v;
434 
435  v.X = X - b.X;
436  v.Y = Y - b.Y;
437  v.Z = Z - b.Z;
438 
439  return v;
440  }
441 
442  inline AkVector operator*(const AkReal32 f) const
443  {
444  AkVector v;
445 
446  v.X = X * f;
447  v.Y = Y * f;
448  v.Z = Z * f;
449 
450  return v;
451  }
452 
453  inline void Zero()
454  {
455  X = 0; Y = 0; Z = 0;
456  }
457 
458  // Helper for implicit conversion to AkVector64. ConvertAkVectorToAkVector64 is still preferable to make it more obvious where upconversion occurs.
459  inline operator</span> AkVector64() const { return AkVector64{ X, Y, Z }; }
460 
461  AkReal32 X; ///< X Position
462  AkReal32 Y; ///< Y Position
463  AkReal32 Z; ///< Z Position
464 };
465 
466 /// Position and orientation of game objects in the world (i.e. supports 64-bit-precision position)
468 {
469 public:
470  //
471  // Getters.
472  //
473 
474  /// Get position vector.
475  inline const AkVector64 & Position() const
476  {
477  return position;
478  }
479 
480  /// Get orientation front vector.
481  inline const AkVector & OrientationFront() const
482  {
483  return orientationFront;
484  }
485 
486  /// Get orientation top vector.
487  inline const AkVector & OrientationTop() const
488  {
489  return orientationTop;
490  }
491 
492  //
493  // Setters.
494  //
495 
496  /// Set position and orientation. Orientation front and top should be orthogonal and normalized.
497  inline void Set(
498  const AkVector64 & in_position, ///< Position vector.
499  const AkVector & in_orientationFront, ///< Orientation front
500  const AkVector & in_orientationTop ///< Orientation top
501  )
502  {
503  position = in_position;
504  orientationFront = in_orientationFront;
505  orientationTop = in_orientationTop;
506  }
507 
508  /// Set position and orientation. Orientation front and top should be orthogonal and normalized.
509  inline void Set(
510  AkReal64 in_positionX, ///< Position x
511  AkReal64 in_positionY, ///< Position y
512  AkReal64 in_positionZ, ///< Position z
513  AkReal32 in_orientFrontX, ///< Orientation front x
514  AkReal32 in_orientFrontY, ///< Orientation front y
515  AkReal32 in_orientFrontZ, ///< Orientation front z
516  AkReal32 in_orientTopX, ///< Orientation top x
517  AkReal32 in_orientTopY, ///< Orientation top y
518  AkReal32 in_orientTopZ ///< Orientation top z
519  )
520  {
521  position.X = in_positionX;
522  position.Y = in_positionY;
523  position.Z = in_positionZ;
524  orientationFront.X = in_orientFrontX;
525  orientationFront.Y = in_orientFrontY;
526  orientationFront.Z = in_orientFrontZ;
527  orientationTop.X = in_orientTopX;
528  orientationTop.Y = in_orientTopY;
529  orientationTop.Z = in_orientTopZ;
530  }
531 
532  /// Set position.
533  inline void SetPosition(
534  const AkVector64 & in_position ///< Position vector.
535  )
536  {
537  position = in_position;
538  }
539 
540  /// Set position.
541  inline void SetPosition(
542  AkReal64 in_x, ///< x
543  AkReal64 in_y, ///< y
544  AkReal64 in_z ///< z
545  )
546  {
547  position.X = in_x;
548  position.Y = in_y;
549  position.Z = in_z;
550  }
551 
552  /// Set orientation. Orientation front and top should be orthogonal and normalized.
553  inline void SetOrientation(
554  const AkVector & in_orientationFront, ///< Orientation front
555  const AkVector & in_orientationTop ///< Orientation top
556  )
557  {
558  orientationFront = in_orientationFront;
559  orientationTop = in_orientationTop;
560  }
561 
562  /// Set orientation. Orientation front and top should be orthogonal and normalized.
563  inline void SetOrientation(
564  AkReal32 in_orientFrontX, ///< Orientation front x
565  AkReal32 in_orientFrontY, ///< Orientation front y
566  AkReal32 in_orientFrontZ, ///< Orientation front z
567  AkReal32 in_orientTopX, ///< Orientation top x
568  AkReal32 in_orientTopY, ///< Orientation top y
569  AkReal32 in_orientTopZ ///< Orientation top z
570  )
571  {
572  orientationFront.X = in_orientFrontX;
573  orientationFront.Y = in_orientFrontY;
574  orientationFront.Z = in_orientFrontZ;
575  orientationTop.X = in_orientTopX;
576  orientationTop.Y = in_orientTopY;
577  orientationTop.Z = in_orientTopZ;
578  }
579 
580 private:
581  AkVector orientationFront; ///< Orientation of the listener
582  AkVector orientationTop; ///< Top orientation of the listener
583  AkVector64 position; ///< Position of the listener
584 };
585 
586 /// Position and orientation of objects in a "local" space
588 {
589 public:
590  //
591  // Getters.
592  //
593 
594  /// Get position vector.
595  inline const AkVector& Position() const
596  {
597  return position;
598  }
599 
600  /// Get orientation front vector.
601  inline const AkVector& OrientationFront() const
602  {
603  return orientationFront;
604  }
605 
606  /// Get orientation top vector.
607  inline const AkVector& OrientationTop() const
608  {
609  return orientationTop;
610  }
611 
612  //
613  // Setters.
614  //
615 
616  /// Set position and orientation. Orientation front and top should be orthogonal and normalized.
617  inline void Set(
618  const AkVector& in_position, ///< Position vector.
619  const AkVector& in_orientationFront, ///< Orientation front
620  const AkVector& in_orientationTop ///< Orientation top
621  )
622  {
623  position = in_position;
624  orientationFront = in_orientationFront;
625  orientationTop = in_orientationTop;
626  }
627 
628  /// Set position and orientation. Orientation front and top should be orthogonal and normalized.
629  inline void Set(
630  AkReal32 in_positionX, ///< Position x
631  AkReal32 in_positionY, ///< Position y
632  AkReal32 in_positionZ, ///< Position z
633  AkReal32 in_orientFrontX, ///< Orientation front x
634  AkReal32 in_orientFrontY, ///< Orientation front y
635  AkReal32 in_orientFrontZ, ///< Orientation front z
636  AkReal32 in_orientTopX, ///< Orientation top x
637  AkReal32 in_orientTopY, ///< Orientation top y
638  AkReal32 in_orientTopZ ///< Orientation top z
639  )
640  {
641  position.X = in_positionX;
642  position.Y = in_positionY;
643  position.Z = in_positionZ;
644  orientationFront.X = in_orientFrontX;
645  orientationFront.Y = in_orientFrontY;
646  orientationFront.Z = in_orientFrontZ;
647  orientationTop.X = in_orientTopX;
648  orientationTop.Y = in_orientTopY;
649  orientationTop.Z = in_orientTopZ;
650  }
651 
652  /// Set position.
653  inline void SetPosition(
654  const AkVector& in_position ///< Position vector.
655  )
656  {
657  position = in_position;
658  }
659 
660  /// Set position.
661  inline void SetPosition(
662  AkReal32 in_x, ///< x
663  AkReal32 in_y, ///< y
664  AkReal32 in_z ///< z
665  )
666  {
667  position.X = in_x;
668  position.Y = in_y;
669  position.Z = in_z;
670  }
671 
672  /// Set orientation. Orientation front and top should be orthogonal and normalized.
673  inline void SetOrientation(
674  const AkVector& in_orientationFront, ///< Orientation front
675  const AkVector& in_orientationTop ///< Orientation top
676  )
677  {
678  orientationFront = in_orientationFront;
679  orientationTop = in_orientationTop;
680  }
681 
682  /// Set orientation. Orientation front and top should be orthogonal and normalized.
683  inline void SetOrientation(
684  AkReal32 in_orientFrontX, ///< Orientation front x
685  AkReal32 in_orientFrontY, ///< Orientation front y
686  AkReal32 in_orientFrontZ, ///< Orientation front z
687  AkReal32 in_orientTopX, ///< Orientation top x
688  AkReal32 in_orientTopY, ///< Orientation top y
689  AkReal32 in_orientTopZ ///< Orientation top z
690  )
691  {
692  orientationFront.X = in_orientFrontX;
693  orientationFront.Y = in_orientFrontY;
694  orientationFront.Z = in_orientFrontZ;
695  orientationTop.X = in_orientTopX;
696  orientationTop.Y = in_orientTopY;
697  orientationTop.Z = in_orientTopZ;
698  }
699 
700  // Helper for implicit conversion to AkWorldTransform. ConvertAkTransformToAkWorldTransform is still preferable to make it more obvious where upconversion occurs.
701  inline operator</span> AkWorldTransform() const {
702  AkWorldTransform ret;
703  ret.Set(position, orientationFront, orientationTop);
704  return ret;
705  }
706 
707 private:
708  AkVector orientationFront; ///< Orientation of the listener
709  AkVector orientationTop; ///< Top orientation of the listener
710  AkVector position; ///< Position of the listener
711 };
712 
713 
714 namespace AK
715 {
716  // Helper functions to make transitions between 64b and 32b conversion easier
717 
718  // Warning: this conversion incurs a loss of precision and range
720  {
721  AkVector out;
722  out.X = (AkReal32)in.X;
723  out.Y = (AkReal32)in.Y;
724  out.Z = (AkReal32)in.Z;
725  return out;
726  }
727 
728  // Warning: this conversion incurs a loss of precision and range in position data
730  {
731  AkTransform out;
733  out.Set(pos, in.OrientationFront(), in.OrientationTop());
734  return out;
735  }
736 
738  {
739  AkVector64 out;
740  out.X = (AkReal64)in.X;
741  out.Y = (AkReal64)in.Y;
742  out.Z = (AkReal64)in.Z;
743  return out;
744  }
745 
747  {
748  AkWorldTransform out;
750  out.Set(pos, in.OrientationFront(), in.OrientationTop());
751  return out;
752  }
753 }
754 
755 /// Positioning information for a sound.
757 
758 /// Positioning information for a listener.
760 
761 /// Obstruction/occlusion pair for a position
763 {
764  AkReal32 occlusion; ///< OcclusionLevel: [0.0f..1.0f]
765  AkReal32 obstruction; ///< ObstructionLevel: [0.0f..1.0f]
766 };
767 
768 /// Positioning information for a sound, with specified subset of its channels.
770 {
771  AkWorldTransform position; ///< Emitter position.
772  AkChannelMask uInputChannels; ///< Channels to which the above position applies.
773  char padding[4]; ///< In order to preserve consistent struct size across archs, we need some padding
774 };
775 
776 /// Polar coordinates.
778 {
779  AkReal32 r; ///< Norm/distance
780  AkReal32 theta; ///< Azimuth
781 };
782 
783 /// Spherical coordinates.
785 {
786  AkReal32 phi; ///< Elevation
787 };
788 
789 /// Emitter-listener pair: Positioning data pertaining to a single pair of emitter and listener.
791 {
792 public:
793  /// Constructor.
795  : fDistance(0.f)
796  , fEmitterAngle(0.f)
797  , fListenerAngle(0.f)
798  , fDryMixGain(1.f)
799  , fGameDefAuxMixGain(1.f)
800  , fUserDefAuxMixGain(1.f)
801  , fOcclusion(0.f)
802  , fObstruction(0.f)
803  , fDiffraction(0.f)
804  , fTransmissionLoss(0.f)
805  , fSpread(0.f)
806  , fAperture(100.f)
807  , fScalingFactor(1.f)
808  , uEmitterChannelMask(0xFFFFFFFF)
809  , id(0)
810  , m_uListenerID(0)
811  {
812  }
813  /// Destructor.
815 
816  /// Get distance.
817  inline AkReal32 Distance() const { return fDistance; }
818 
819  /// Get the absolute angle, in radians between 0 and pi, of the emitter's orientation relative to
820  /// the line that joins the emitter and the listener.
821  inline AkReal32 EmitterAngle() const { return fEmitterAngle; }
822 
823  /// Get the absolute angle, in radians between 0 and pi, of the listener's orientation relative to
824  /// the line that joins the emitter and the listener
825  inline AkReal32 ListenerAngle() const { return fListenerAngle; }
826 
827  /// Get the occlusion factor for this emitter-listener pair
828  inline AkReal32 Occlusion() const { return fOcclusion; }
829 
830  /// Get the obstruction factor for this emitter-listener pair
831  inline AkReal32 Obstruction() const { return fObstruction; }
832 
833  /// Get the diffraction factor for this emitter-listener pair
834  inline AkReal32 Diffraction() const { return fDiffraction; }
835 
836  /// Get the transmission loss factor for this emitter-listener pair
837  inline AkReal32 TransmissionLoss() const { return fTransmissionLoss; }
838 
839  /// Get the emitter-listener-pair-specific gain (due to distance and cone attenuation), linear [0,1], for a given connection type.
841  {
842  if (in_eType == ConnectionType_Direct)
843  return fDryMixGain;
844  else if (in_eType == ConnectionType_GameDefSend)
845  return fGameDefAuxMixGain;
846  else if (in_eType == ConnectionType_UserDefSend)
847  return fUserDefAuxMixGain;
848  else
849  return 1.0f;
850  }
851 
852  /// Get the emitter-listener pair's ID.
853  inline AkRayID ID() const { return id; }
854 
855  /// Get listener ID associated with the emitter-listener pair.
856  inline AkGameObjectID ListenerID() const { return m_uListenerID; }
857 
858  AkWorldTransform emitter; ///< Emitter position.
859  AkReal32 fDistance; ///< Distance between emitter and listener.
860  AkReal32 fEmitterAngle; ///< Angle between position vector and emitter orientation.
861  AkReal32 fListenerAngle; ///< Angle between position vector and listener orientation.
862  AkReal32 fDryMixGain; ///< Emitter-listener-pair-specific gain (due to distance and cone attenuation) for direct connections.
863  AkReal32 fGameDefAuxMixGain; ///< Emitter-listener-pair-specific gain (due to distance and cone attenuation) for game-defined send connections.
864  AkReal32 fUserDefAuxMixGain; ///< Emitter-listener-pair-specific gain (due to distance and cone attenuation) for user-defined send connections.
865  AkReal32 fOcclusion; ///< Emitter-listener-pair-specific occlusion factor
866  AkReal32 fObstruction; ///< Emitter-listener-pair-specific obstruction factor
867  AkReal32 fDiffraction; ///< Emitter-listener-pair-specific diffraction coefficient
868  AkReal32 fTransmissionLoss; ///< Emitter-listener-pair-specific transmission occlusion.
869  AkReal32 fSpread; ///< Emitter-listener-pair-specific spread
870  AkReal32 fAperture; ///< Emitter-listener-pair-specific aperture
871  AkReal32 fScalingFactor; ///< Combined scaling factor due to both emitter and listener.
872  AkChannelMask uEmitterChannelMask; ///< Channels of the emitter that apply to this ray.
873 protected:
874  AkRayID id; ///< ID of this emitter-listener pair, unique for a given emitter.
875  AkGameObjectID m_uListenerID; ///< Listener game object ID.
876 };
877 
878 /// Listener information.
879 struct AkListener
880 {
882  : fScalingFactor( 1.0f )
883  , bSpatialized( true )
884  {}
885  AkListenerPosition position; /// Listener position (see AK::SoundEngine::SetPosition()).
886  AkReal32 fScalingFactor; /// Listener scaling factor (see AK::SoundEngine::SetListenerScalingFactor()).
887  bool bSpatialized; /// Whether listener is spatialized or not (see AK::SoundEngine::SetListenerSpatialization()).
888 };
889 
890 // If you modify AkCurveInterpolation, don't forget to modify WAAPI validation schema accordingly.
891 
892 /// Curve interpolation types
894 {
895 //DONT GO BEYOND 15! (see below for details)
896 //Curves from 0 to LastFadeCurve NEED TO BE A MIRROR IMAGE AROUND LINEAR (eg. Log3 is the inverse of Exp3)
900  AkCurveInterpolation_InvSCurve = 3, ///< Inversed S Curve
901  AkCurveInterpolation_Linear = 4, ///< Linear (Default)
902  AkCurveInterpolation_SCurve = 5, ///< S Curve
904  AkCurveInterpolation_SineRecip = 7, ///< Reciprocal of sine curve
906  AkCurveInterpolation_LastFadeCurve = 8, ///< Update this value to reflect last curve available for fades
907  AkCurveInterpolation_Constant = 9 ///< Constant ( not valid for fading values )
908 //DONT GO BEYOND 15! The value is stored on 5 bits,
909 //but we can use only 4 bits for the actual values, keeping
910 //the 5th bit at 0 to void problems when the value is
911 //expanded to 32 bits.
912 };
913 #define AKCURVEINTERPOLATION_NUM_STORAGE_BIT 5 ///< Internal storage restriction, for internal use only.
914 
915 /// Auxiliary bus sends information per game object per given auxiliary bus.
917 {
918  AkGameObjectID listenerID; ///< Game object ID of the listener associated with this send. Use AK_INVALID_GAME_OBJECT as a wildcard to set the auxiliary send to all connected listeners (see AK::SoundEngine::SetListeners).
919  AkAuxBusID auxBusID; ///< Auxiliary bus ID.
920  AkReal32 fControlValue; ///< A value in the range [0.0f:16.0f] ( -∞ dB to +24 dB).
921  ///< Represents the attenuation or amplification factor applied to the volume of the sound going through the auxiliary bus.
922  ///< A value greater than 1.0f will amplify the sound.
923 };
924 
925 /// Volume ramp specified by end points "previous" and "next".
926 struct AkRamp
927 {
928  AkRamp() : fPrev( 1.f ), fNext( 1.f ) {}
929  AkRamp( AkReal32 in_fPrev, AkReal32 in_fNext ) : fPrev( in_fPrev ), fNext( in_fNext ) {}
930  AkRamp & operator*=(const AkRamp& in_rRhs) { fPrev *= in_rRhs.fPrev; fNext *= in_rRhs.fNext; return *this; }
931 
934 };
935 inline AkRamp operator*(const AkRamp& in_rLhs, const AkRamp& in_rRhs)
936 {
937  AkRamp result(in_rLhs);
938  result *= in_rRhs;
939  return result;
940 }
941 
942 /// Type for a point in an RTPC or Attenuation curve.
943 template< class VALUE_TYPE >
945 {
946  AkGraphPointBase() = default;
947 
948  AkGraphPointBase(AkReal32 in_from, VALUE_TYPE in_to, AkCurveInterpolation in_interp)
949  : From(in_from)
950  , To(in_to)
951  , Interp(in_interp)
952  {}
953 
954  AkReal32 From; ///< Represents the value on the X axis.
955  VALUE_TYPE To; ///< Represents the value on the Y axis.
956  AkCurveInterpolation Interp; ///< The shape of the interpolation curve between this point and the next.
957 
958  bool operator==(const AkGraphPointBase& other) const
959  {
960  return From == other.From && To == other.To && Interp == other.Interp;
961  }
962 };
963 
964 // Every point of a conversion graph
966 
967 /// Curve types of the Attenuation Editor.
969 {
970  AttenuationCurveID_VolumeDry = 0, ///< The distance-driven dry volume curve.
971  AttenuationCurveID_VolumeAuxGameDef, ///< The distance-driven game-defined auxiliary send curve.
972  AttenuationCurveID_VolumeAuxUserDef, ///< The distance-driven user-defined auxiliary send curve.
973  AttenuationCurveID_LowPassFilter, ///< The distance-driven low-pass filter (pre send) curve.
974  AttenuationCurveID_HighPassFilter, ///< The distance-driven high-pass filter (pre send) curve.
975  AttenuationCurveID_Spread, ///< The distance-driven Spread curve.
976  AttenuationCurveID_Focus, ///< The distance-driven Focus curve.
977  AttenuationCurveID_ObstructionVolume, ///< The obstruction-driven volume curve.
978  AttenuationCurveID_ObstructionLPF, ///< The obstruction-driven low-pass filter curve.
979  AttenuationCurveID_ObstructionHPF, ///< The obstruction-driven high-pass filter curve.
980  AttenuationCurveID_OcclusionVolume, ///< The occlusion-driven volume curve.
981  AttenuationCurveID_OcclusionLPF, ///< The occlusion-driven low-pass filter curve.
982  AttenuationCurveID_OcclusionHPF, ///< The occlusion-driven high-pass filter curve.
983  AttenuationCurveID_DiffractionVolume, ///< The diffraction-driven volume curve.
984  AttenuationCurveID_DiffractionLPF, ///< The diffraction-driven low-pass filter curve.
985  AttenuationCurveID_DiffractionHPF, ///< The diffraction-driven high-pass filter curve.
986  AttenuationCurveID_TransmissionVolume, ///< The transmission-driven volume curve.
987  AttenuationCurveID_TransmissionLPF, ///< The transmission-driven low-pass filter curve.
988  AttenuationCurveID_TransmissionHPF, ///< The transmission-driven high-pass filter curve.
989 
990  AttenuationCurveID_MaxCount, ///< The maximum number of curve types.
991 
992  AttenuationCurveID_Project = 254, ///< Symbol for "Use Project".
993  AttenuationCurveID_None = 255 ///< Symbol for "None".
994 };
995 
996 // ---------------------------------------------------------------
997 // Languages
998 // ---------------------------------------------------------------
999 #define AK_MAX_LANGUAGE_NAME_SIZE (32)
1000 
1001 // ---------------------------------------------------------------
1002 // File Type ID Definitions
1003 // ---------------------------------------------------------------
1004 
1005 // These correspond to IDs specified in the conversion plug-ins' XML
1006 // files. Audio sources persist them to "remember" their format.
1007 // DO NOT CHANGE THEM without talking to someone in charge of persistence!
1008 
1009 // Company ID for plugin development.
1010 #define AKCOMPANYID_PLUGINDEV_MIN (64)
1011 #define AKCOMPANYID_PLUGINDEV_MAX (255)
1012 
1013 // Vendor ID.
1014 #define AKCOMPANYID_AUDIOKINETIC (0) ///< Audiokinetic inc.
1015 #define AKCOMPANYID_AUDIOKINETIC_EXTERNAL (1) ///< Audiokinetic inc.
1016 #define AKCOMPANYID_MCDSP (256) ///< McDSP
1017 #define AKCOMPANYID_WAVEARTS (257) ///< WaveArts
1018 #define AKCOMPANYID_PHONETICARTS (258) ///< Phonetic Arts
1019 #define AKCOMPANYID_IZOTOPE (259) ///< iZotope
1020 #define AKCOMPANYID_CRANKCASEAUDIO (261) ///< Crankcase Audio
1021 #define AKCOMPANYID_IOSONO (262) ///< IOSONO
1022 #define AKCOMPANYID_AUROTECHNOLOGIES (263) ///< Auro Technologies
1023 #define AKCOMPANYID_DOLBY (264) ///< Dolby
1024 #define AKCOMPANYID_TWOBIGEARS (265) ///< Two Big Ears
1025 #define AKCOMPANYID_OCULUS (266) ///< Oculus
1026 #define AKCOMPANYID_BLUERIPPLESOUND (267) ///< Blue Ripple Sound
1027 #define AKCOMPANYID_ENZIEN (268) ///< Enzien Audio
1028 #define AKCOMPANYID_KROTOS (269) ///< Krotos (Dehumanizer)
1029 #define AKCOMPANYID_NURULIZE (270) ///< Nurulize
1030 #define AKCOMPANYID_SUPERPOWERED (271) ///< Super Powered
1031 #define AKCOMPANYID_GOOGLE (272) ///< Google
1032 //#define AKCOMPANYID_NVIDIA (273) ///< NVIDIA // Commented out to avoid redefinition, provider is already defining it.
1033 //#define AKCOMPANYID_RESERVED (274) ///< Reserved // Commented out to avoid redefinition, provider is already defining it.
1034 //#define AKCOMPANYID_MICROSOFT (275) ///< Microsoft // Commented out to avoid redefinition, provider is already defining it.
1035 //#define AKCOMPANYID_YAMAHA (276) ///< YAMAHA // Commented out to avoid redefinition, provider is already defining it.
1036 #define AKCOMPANYID_VISISONICS (277) ///< Visisonics
1037 
1038 // File/encoding types of Audiokinetic.
1039 #define AKCODECID_BANK (0) ///< Bank encoding
1040 #define AKCODECID_PCM (1) ///< PCM encoding
1041 #define AKCODECID_ADPCM (2) ///< ADPCM encoding
1042 #define AKCODECID_XMA (3) ///< XMA encoding
1043 #define AKCODECID_VORBIS (4) ///< Vorbis encoding
1044 #define AKCODECID_WIIADPCM (5) ///< ADPCM encoding on the Wii
1045 #define AKCODECID_PCMEX (7) ///< Standard PCM WAV file parser for Wwise Authoring
1046 #define AKCODECID_EXTERNAL_SOURCE (8) ///< External Source (unknown encoding)
1047 #define AKCODECID_XWMA (9) ///< xWMA encoding
1048 #define AKCODECID_FILE_PACKAGE (11) ///< File package files generated by the File Packager utility.
1049 #define AKCODECID_ATRAC9 (12) ///< ATRAC-9 encoding
1050 #define AKCODECID_VAG (13) ///< VAG/HE-VAG encoding
1051 #define AKCODECID_PROFILERCAPTURE (14) ///< Profiler capture file (.prof) as written through AK::SoundEngine::StartProfilerCapture
1052 #define AKCODECID_ANALYSISFILE (15) ///< Analysis file
1053 #define AKCODECID_MIDI (16) ///< MIDI file
1054 #define AKCODECID_OPUSNX (17) ///< OpusNX encoding
1055 #define AKCODECID_CAF (18) ///< CAF file
1056 #define AKCODECID_AKOPUS (19) ///< Opus encoding, 2018.1 to 2019.2
1057 #define AKCODECID_AKOPUS_WEM (20) ///< Opus encoding, wrapped in WEM
1058 #define AKCODECID_MEMORYMGR_DUMP (21) ///< Memory stats file as written through AK::MemoryMgr::DumpToFile();
1059 #define AKCODECID_SONY360 (22) ///< Sony 360 encoding
1060 
1061 #define AKCODECID_BANK_EVENT (30) ///< Bank encoding for event banks. These banks are contained in the /event sub-folder.
1062 #define AKCODECID_BANK_BUS (31) ///< Bank encoding for bus banks. These banks are contained in the /bus sub-folder.
1063 
1064 #define AKPLUGINID_METER (129) ///< Meter Plugin
1065 #define AKPLUGINID_RECORDER (132) ///< Recorder Plugin
1066 #define AKPLUGINID_IMPACTER (184)
1067 #define AKPLUGINID_SYSTEM_OUTPUT_META (900) ///< System output metadata
1068 #define AKPLUGINID_AUDIO_OBJECT_ATTENUATION_META (901) ///< Attenuation curve metadata
1069 #define AKPLUGINID_AUDIO_OBJECT_PRIORITY_META (902) ///< Audio object priority metadata
1070 
1071 #define AKEXTENSIONID_SPATIALAUDIO (800) ///< Spatial Audio
1072 #define AKEXTENSIONID_INTERACTIVEMUSIC (801) ///< Interactive Music
1073 #define AKEXTENSIONID_MIDIDEVICEMGR (802) ///< MIDI Device Manager (Authoring)
1074 
1075 //The following are internally defined
1076 #define AK_WAVE_FORMAT_VAG 0xFFFB
1077 #define AK_WAVE_FORMAT_AT9 0xFFFC
1078 #define AK_WAVE_FORMAT_VORBIS 0xFFFF
1079 #define AK_WAVE_FORMAT_OPUSNX 0x3039
1080 #define AK_WAVE_FORMAT_OPUS 0x3040
1081 #define AK_WAVE_FORMAT_OPUS_WEM 0x3041
1082 #define WAVE_FORMAT_XMA2 0x166
1083 
1084 //-----------------------------------------------------------------------------
1085 // Codecs
1086 //-----------------------------------------------------------------------------
1087 
1088 class IAkSoftwareCodec;
1089 class IAkFileCodec;
1090 class IAkGrainCodec;
1091 /// Registered file source creation function prototype.
1092 AK_CALLBACK( IAkSoftwareCodec*, AkCreateFileSourceCallback )( void* in_pCtx );
1093 /// Registered bank source node creation function prototype.
1094 AK_CALLBACK( IAkSoftwareCodec*, AkCreateBankSourceCallback )( void* in_pCtx );
1095 /// Registered FileCodec creation function prototype.
1097 /// Registered IAkGrainCodec creation function prototype.
1099 
1101 {
1106 };
1107 
1108 //-----------------------------------------------------------------------------
1109 // Banks
1110 //-----------------------------------------------------------------------------
1111 
1112 /// Bank types
1114 {
1115  AkBankType_User = AKCODECID_BANK, ///< User-defined bank.
1116  AkBankType_Event = AKCODECID_BANK_EVENT, ///< Bank generated for one event.
1117  AkBankType_Bus = AKCODECID_BANK_BUS, ///< Bank generated for one bus or aux bus.
1118 };
1119 
1120 //-----------------------------------------------------------------------------
1121 // Positioning
1122 //-----------------------------------------------------------------------------
1123 
1124 namespace AK
1125 {
1126  namespace SoundEngine
1127  {
1128  // If you modify MultiPositionType, don't forget to modify WAAPI validation schema accordingly.
1129 
1130  /// MultiPositionType.
1131  /// \sa
1132  /// - AK::SoundEngine::SetMultiplePosition()
1133  /// - \ref soundengine_3dpositions_multiplepos
1135  {
1136  MultiPositionType_SingleSource, ///< Used for normal sounds, not expected to pass to AK::SoundEngine::SetMultiplePosition() (if done, only the first position will be used).
1137  MultiPositionType_MultiSources, ///< Simulate multiple sources in one sound playing, adding volumes. For instance, all the torches on your level emitting using only one sound.
1138  MultiPositionType_MultiDirections ///< Simulate one sound coming from multiple directions. Useful for repositionning sounds based on wall openings or to simulate areas like forest or rivers ( in combination with spreading in the attenuation of the sounds ).
1139  };
1140  }
1141 }
1142 
1143 #define AK_PANNER_NUM_STORAGE_BITS 3
1144 /// Speaker panning type: type of panning logic when object is not 3D spatialized (i.e. when Ak3DSpatializationMode is AK_SpatializationMode_None).
1146 {
1147  AK_DirectSpeakerAssignment = 0, ///< No panning: route to matching channels between input and output.
1148  AK_BalanceFadeHeight = 1, ///< Balance-Fade-Height: Traditional "box" or "car"-like panner.
1149  AK_SteeringPanner = 2 ///< Steering panner.
1150 };
1151 
1152 #define AK_POSSOURCE_NUM_STORAGE_BITS 3
1153 /// 3D position type: defines what acts as the emitter position for computing spatialization against the listener. Used when Ak3DSpatializationMode is AK_SpatializationMode_PositionOnly or AK_SpatializationMode_PositionAndOrientation.
1155 {
1156  AK_3DPositionType_Emitter = 0, ///< 3D spatialization is computed directly from the emitter game object position.
1157  AK_3DPositionType_EmitterWithAutomation = 1, ///< 3D spatialization is computed from the emitter game object position, translated by user-defined automation.
1158  AK_3DPositionType_ListenerWithAutomation = 2 ///< 3D spatialization is computed from the listener game object position, translated by user-defined automation.
1159 };
1160 
1161 /// Flags to independently set the position of the emitter or listener component on a game object.
1163 {
1164  AkSetPositionFlags_Emitter = 1 << 0, // Only set the emitter component position.
1165  AkSetPositionFlags_Listener = 1 << 1, // Only set the listener component position.
1166 
1167  AkSetPositionFlags_Default = (AkSetPositionFlags_Emitter | AkSetPositionFlags_Listener) // Default: set both emitter and listener component positions.
1168 };
1169 
1170 /// Headphone / speakers panning rules
1172 {
1173  AkPanningRule_Speakers = 0, ///< Left and right positioned 60 degrees apart (by default - see AK::SoundEngine::GetSpeakerAngles()).
1174  AkPanningRule_Headphones = 1 ///< Left and right positioned 180 degrees apart.
1175 };
1176 
1177 #define AK_SPAT_NUM_STORAGE_BITS 3
1178 /// 3D spatialization mode.
1180 {
1181  AK_SpatializationMode_None = 0, ///< No spatialization
1182  AK_SpatializationMode_PositionOnly = 1, ///< Spatialization based on emitter position only.
1183  AK_SpatializationMode_PositionAndOrientation = 2 ///< Spatialization based on both emitter position and emitter orientation.
1184 };
1185 
1186 /// Bus type bit field.
1188 {
1189  AkBusHierarchy_Primary = 1 << 0, ///< Flag is set to indicate the primary bus hierarchy.
1190  AkBusHierarchy_Secondary = 1 << 1, ///< Flag is set to indicate the secondary bus hierarchy.
1191  AkBusHierarchy_IsMaster = 1 << 7 ///< Flag is set to indicate a master bus (may be used in combination with other flags).
1192 };
1193 
1194 #define AK_MAX_BITS_METERING_FLAGS (5) // Keep in sync with AkMeteringFlags.
1195 
1196 /// Metering flags. Used for specifying bus metering, through AK::SoundEngine::RegisterBusVolumeCallback() or AK::IAkMixerPluginContext::SetMeteringFlags().
1198 {
1199  AK_NoMetering = 0, ///< No metering.
1200  AK_EnableBusMeter_Peak = 1 << 0, ///< Enable computation of peak metering.
1201  AK_EnableBusMeter_TruePeak = 1 << 1, ///< Enable computation of true peak metering (most CPU and memory intensive).
1202  AK_EnableBusMeter_RMS = 1 << 2, ///< Enable computation of RMS metering.
1203  // 1 << 3 is reserved.
1204  AK_EnableBusMeter_KPower = 1 << 4, ///< Enable computation of K-weighted power metering (used as a basis for computing loudness, as defined by ITU-R BS.1770).
1205  AK_EnableBusMeter_3DMeter = 1 << 5
1206 };
1207 
1208 /// Plug-in type.
1209 /// \sa
1210 /// - AkPluginInfo
1212 {
1213  AkPluginTypeNone = 0, ///< Unknown/invalid plug-in type.
1214  AkPluginTypeCodec = 1, ///< Compressor/decompressor plug-in (allows support for custom audio file types).
1215  AkPluginTypeSource = 2, ///< Source plug-in: creates sound by synthesis method (no input, just output).
1216  AkPluginTypeEffect = 3, ///< Effect plug-in: applies processing to audio data.
1217  //AkPluginTypeMotionDevice = 4, ///< Motion Device plug-in: feeds movement data to devices. Deprecated by Motion refactor.
1218  //AkPluginTypeMotionSource = 5, ///< Motion Device source plug-in: feeds movement data to device busses. Deprecated by Motion refactor.
1219  AkPluginTypeMixer = 6, ///< Mixer plug-in: mix voices at the bus level.
1220  AkPluginTypeSink = 7, ///< Sink plug-in: implement custom sound engine end point.
1221  AkPluginTypeGlobalExtension = 8, ///< Global Extension plug-in: (e.g. Spatial Audio, Interactive Music)
1222  AkPluginTypeMetadata = 9, ///< Metadata plug-in: applies object-based processing to audio data
1223  AkPluginTypeMask = 0xf ///< Plug-in type mask is 4 bits.
1224 };
1225 
1226 ////////////////////////////////////////////////////////////////////////////////
1227 // Wwise ID system
1228 ////////////////////////////////////////////////////////////////////////////////
1230 {
1233 };
1234 
1236 {
1237 public:
1238 
1239  bool operator == ( const WwiseObjectIDext& in_rOther ) const
1240  {
1241  return in_rOther.id == id && in_rOther.bIsBus == bIsBus;
1242  }
1243 
1245  {
1247  }
1248 
1250  bool bIsBus;
1251 };
1252 
1254 {
1256  {
1257  id = AK_INVALID_UNIQUE_ID;
1258  bIsBus = false;
1259  }
1260 
1262  {
1263  id = in_ID;
1264  bIsBus = false;
1265  }
1266 
1267  WwiseObjectID( AkUniqueID in_ID, bool in_bIsBus )
1268  {
1269  id = in_ID;
1270  bIsBus = in_bIsBus;
1271  }
1272 
1273  WwiseObjectID( AkUniqueID in_ID, AkNodeType in_eNodeType )
1274  {
1275  id = in_ID;
1276  bIsBus = in_eNodeType == AkNodeType_Bus;
1277  }
1278 };
1279 
1280 /// Public data structures for converted file format.
1281 namespace AkFileParser
1282 {
1283 #pragma pack(push, 1)
1284  /// Analyzed envelope point.
1286  {
1287  AkUInt32 uPosition; /// Position of this point in samples at the source rate.
1288  AkUInt16 uAttenuation; /// Approximate _attenuation_ at this location relative to this source's maximum, in dB (absolute value).
1289  };
1290 #pragma pack(pop)
1291 }
1292 
1293 #ifndef AK_ASYNC_OPEN_DEFAULT
1294 #define AK_ASYNC_OPEN_DEFAULT (false) ///< Refers to asynchronous file opening in default low-level IO.
1295 #endif
1296 
1297 #ifndef AK_COMM_DEFAULT_DISCOVERY_PORT
1298 #define AK_COMM_DEFAULT_DISCOVERY_PORT 24024 ///< Default discovery port for most platforms using IP sockets for communication.
1299 #endif
1300 
1301 #ifdef AK_CAPTURE_TYPE_FLOAT
1302 typedef AkReal32 AkCaptureType;
1303 #else
1304 typedef AkInt16 AkCaptureType; ///< Default value: capture type is short.
1305 #endif
1306 
1307 #define AkRegister
1308 
1309 #endif //_AK_DATA_TYPES_H_
@ AkNodeType_Bus
Definition: AkTypes.h:1232
@ AK_PathNodeNotInList
This path is not there.
Definition: AkTypes.h:218
AkEmitterListenerPair()
Constructor.
Definition: AkTypes.h:794
AkAudioDeviceState deviceStateMask
Bitmask used to filter the device based on their state.
Definition: AkTypes.h:298
AkGameObjectID m_uListenerID
Listener game object ID.
Definition: AkTypes.h:875
@ AK_EnableBusMeter_Peak
Enable computation of peak metering.
Definition: AkTypes.h:1200
@ AttenuationCurveID_Focus
The distance-driven Focus curve.
Definition: AkTypes.h:976
AkUInt32 AkStateGroupID
State group ID.
Definition: AkTypes.h:116
AkUniqueID id
Definition: AkTypes.h:1249
@ AkBankType_Bus
Bank generated for one bus or aux bus.
Definition: AkTypes.h:1117
AkNodeType GetType()
Definition: AkTypes.h:1244
AkReal32 fControlValue
Definition: AkTypes.h:920
void SetPosition(AkReal32 in_x, AkReal32 in_y, AkReal32 in_z)
Set position.
Definition: AkTypes.h:661
static const AkPriority AK_DEFAULT_BANK_IO_PRIORITY
Default bank load I/O priority.
Definition: AkTypes.h:179
AkUInt8 AkDataInterleaveID
Data interleaved state ID.
Definition: AkTypes.h:132
@ AK_UnsupportedChannelConfig
Channel configuration is not supported in the current execution context.
Definition: AkTypes.h:240
@ AK_NoMetering
No metering.
Definition: AkTypes.h:1199
static const AkJobType AkJobType_AudioProcessing
Job type for DSP work.
Definition: AkTypes.h:187
@ AK_DirectSpeakerAssignment
No panning: route to matching channels between input and output.
Definition: AkTypes.h:1147
@ AK_InvalidCustomPlatformName
Detecting incompatibility between Custom platform of banks and custom platform of connected applicati...
Definition: AkTypes.h:245
AkExternalSourceInfo(AkFileID in_idFile, AkUInt32 in_iExternalSrcCookie, AkCodecID in_idCodec)
Constructor: specify source by streaming file ID.
Definition: AkTypes.h:360
@ AK_InvalidSwitchType
Invalid switch type (used with the switch container)
Definition: AkTypes.h:227
AkRamp & operator*=(const AkRamp &in_rRhs)
Definition: AkTypes.h:930
AkReal32 Occlusion() const
Get the occlusion factor for this emitter-listener pair.
Definition: AkTypes.h:828
@ AK_FileNotFound
File not found.
Definition: AkTypes.h:230
uint16_t AkUInt16
Unsigned 16-bit integer.
Definition: AkNumeralTypes.h:37
AkGraphPointBase< AkReal32 > AkRTPCGraphPoint
Definition: AkTypes.h:965
void Zero()
Definition: AkTypes.h:453
@ AttenuationCurveID_LowPassFilter
The distance-driven low-pass filter (pre send) curve.
Definition: AkTypes.h:973
AkVector64 ConvertAkVectorToAkVector64(AkVector in)
Definition: AkTypes.h:737
void SetOrientation(AkReal32 in_orientFrontX, AkReal32 in_orientFrontY, AkReal32 in_orientFrontZ, AkReal32 in_orientTopX, AkReal32 in_orientTopY, AkReal32 in_orientTopZ)
Set orientation. Orientation front and top should be orthogonal and normalized.
Definition: AkTypes.h:563
@ AK_EnableBusMeter_RMS
Enable computation of RMS metering.
Definition: AkTypes.h:1202
Audiokinetic namespace.
AkInt32 AkTimeMs
Time in ms.
Definition: AkTypes.h:118
Auxiliary bus sends information per game object per given auxiliary bus.
Definition: AkTypes.h:917
@ AK_Fail
The operation failed.
Definition: AkTypes.h:196
AkReal32 fEmitterAngle
Angle between position vector and emitter orientation.
Definition: AkTypes.h:860
@ AttenuationCurveID_DiffractionHPF
The diffraction-driven high-pass filter curve.
Definition: AkTypes.h:985
@ AttenuationCurveID_VolumeDry
The distance-driven dry volume curve.
Definition: AkTypes.h:970
Obstruction/occlusion pair for a position.
Definition: AkTypes.h:763
void * pInMemory
Pointer to the in-memory file. If not NULL, the source will be read from memory. Set szFile and idFil...
Definition: AkTypes.h:319
MultiPositionType
Definition: AkTypes.h:1135
void Set(const AkVector64 &in_position, const AkVector &in_orientationFront, const AkVector &in_orientationTop)
Set position and orientation. Orientation front and top should be orthogonal and normalized.
Definition: AkTypes.h:497
AkReal32 Diffraction() const
Get the diffraction factor for this emitter-listener pair.
Definition: AkTypes.h:834
@ AK_DataAlignmentError
A pointer to audio data was not aligned to the platform's required alignment (check AkTypes....
Definition: AkTypes.h:251
AkCodecID idCodec
Codec ID for the file. One of the audio formats defined in AkTypes.h (AKCODECID_XXX)
Definition: AkTypes.h:317
@ AttenuationCurveID_DiffractionVolume
The diffraction-driven volume curve.
Definition: AkTypes.h:983
AkUInt32 AkModulatorID
Modulator ID.
Definition: AkTypes.h:144
AkReal32 fPrev
Definition: AkTypes.h:932
@ AK_DataReady
The provider has available data.
Definition: AkTypes.h:221
AkWorldTransform AkListenerPosition
Positioning information for a listener.
Definition: AkTypes.h:759
@ AK_NotCompatible
Incompatible formats.
Definition: AkTypes.h:198
AkReal32 phi
Elevation.
Definition: AkTypes.h:786
#define AK_MAX_PATH
Maximum path length.
Definition: AkTypes.h:82
@ AkGroupType_Switch
Type switch.
Definition: AkTypes.h:273
IAkSoftwareCodec *(* AkCreateFileSourceCallback)(void *in_pCtx)
Registered file source creation function prototype.
Definition: AkTypes.h:1092
@ AkSetPositionFlags_Default
Definition: AkTypes.h:1167
@ AttenuationCurveID_VolumeAuxGameDef
The distance-driven game-defined auxiliary send curve.
Definition: AkTypes.h:971
AkUInt32 AkRtpcID
Real time parameter control ID.
Definition: AkTypes.h:135
AkUInt64 AkAudioObjectID
Audio Object ID.
Definition: AkTypes.h:150
@ AK_SpatializationMode_PositionOnly
Spatialization based on emitter position only.
Definition: AkTypes.h:1182
@ AK_InvalidID
The ID is invalid.
Definition: AkTypes.h:203
@ AkCurveInterpolation_SCurve
S Curve.
Definition: AkTypes.h:902
void Zero()
Definition: AkTypes.h:407
@ AttenuationCurveID_Project
Symbol for "Use Project".
Definition: AkTypes.h:992
@ AkCurveInterpolation_SineRecip
Reciprocal of sine curve.
Definition: AkTypes.h:904
@ AK_EnableBusMeter_KPower
Enable computation of K-weighted power metering (used as a basis for computing loudness,...
Definition: AkTypes.h:1204
@ AK_3DPositionType_EmitterWithAutomation
3D spatialization is computed from the emitter game object position, translated by user-defined autom...
Definition: AkTypes.h:1157
@ ConnectionType_Direct
Direct (main, dry) connection.
Definition: AkTypes.h:376
@ AK_InvalidFile
The provided file is the wrong format or unexpected values causes the file to be invalid.
Definition: AkTypes.h:200
@ AK_SSEInstructionsNotSupported
The machine does not support SSE instructions (required on PC).
Definition: AkTypes.h:238
AkReal32 Distance() const
Get distance.
Definition: AkTypes.h:817
AkUInt32 AkPipelineID
Unique node (bus, voice) identifier for profiling.
Definition: AkTypes.h:148
@ AK_NoDistinctListener
No distinct listener provided for AddOutput.
Definition: AkTypes.h:259
bool operator==(const WwiseObjectIDext &in_rOther) const
Definition: AkTypes.h:1239
@ AkSetPositionFlags_Listener
Definition: AkTypes.h:1165
bool isDefaultDevice
Identify default device. Always false when not supported.
Definition: AkTypes.h:299
@ AK_DLLPathNotFound
Plugin DLL search path could not be found.
Definition: AkTypes.h:247
@ AK_CommandTooLarge
SDK command is too large to fit in the command queue.
Definition: AkTypes.h:243
@ AK_MaxReached
The maximum was reached.
Definition: AkTypes.h:202
static const AkJobType AkJobType_Generic
Job type for general-purpose work.
Definition: AkTypes.h:186
AkUInt64 AkGameObjectID
Game object ID.
Definition: AkTypes.h:122
@ AkPluginTypeMixer
Mixer plug-in: mix voices at the bus level.
Definition: AkTypes.h:1219
AkNodeType
Definition: AkTypes.h:1230
const AkVector & Position() const
Get position vector.
Definition: AkTypes.h:595
AkUInt32 AkBankID
Run time bank ID.
Definition: AkTypes.h:137
AkOSChar * szFile
File path for the source. If not NULL, the source will be streaming from disk. Set pInMemory to NULL....
Definition: AkTypes.h:318
const AkVector & OrientationFront() const
Get orientation front vector.
Definition: AkTypes.h:601
AkReal32 fSpread
Emitter-listener-pair-specific spread.
Definition: AkTypes.h:869
void Set(AkReal32 in_positionX, AkReal32 in_positionY, AkReal32 in_positionZ, AkReal32 in_orientFrontX, AkReal32 in_orientFrontY, AkReal32 in_orientFrontZ, AkReal32 in_orientTopX, AkReal32 in_orientTopY, AkReal32 in_orientTopZ)
Set position and orientation. Orientation front and top should be orthogonal and normalized.
Definition: AkTypes.h:629
VALUE_TYPE To
Represents the value on the Y axis.
Definition: AkTypes.h:955
@ AkNodeType_Default
Definition: AkTypes.h:1231
const AkVector & OrientationTop() const
Get orientation top vector.
Definition: AkTypes.h:607
AKRESULT
Standard function call result.
Definition: AkTypes.h:193
static const AkDeviceID AK_INVALID_DEVICE_ID
Invalid streaming device ID.
Definition: AkTypes.h:165
AkRamp()
Definition: AkTypes.h:928
@ AK_NoDataReady
The provider does not have available data.
Definition: AkTypes.h:222
@ AkGroupType_State
Type state.
Definition: AkTypes.h:274
static const AkPriority AK_MIN_PRIORITY
Minimal priority value [0,100].
Definition: AkTypes.h:175
AkMeteringFlags
Metering flags. Used for specifying bus metering, through AK::SoundEngine::RegisterBusVolumeCallback(...
Definition: AkTypes.h:1198
@ AK_ResourceInUse
Resource is in use and cannot be released.
Definition: AkTypes.h:261
@ AK_DeviceNotFound
The specified device ID does not match with any of the output devices that the sound engine is curren...
Definition: AkTypes.h:255
AkUInt32 AkDeviceID
I/O device ID.
Definition: AkTypes.h:140
@ AK_NotInitialized
The component being used is not initialized. Most likely AK::SoundEngine::Init() was not called yet,...
Definition: AkTypes.h:264
AkReal32 r
Norm/distance.
Definition: AkTypes.h:779
static const AkPluginID AK_INVALID_PLUGINID
Invalid FX ID.
Definition: AkTypes.h:154
@ AK_NoMoreData
No more data is available from the source.
Definition: AkTypes.h:206
WwiseObjectID(AkUniqueID in_ID, bool in_bIsBus)
Definition: AkTypes.h:1267
@ AkCurveInterpolation_Sine
Sine.
Definition: AkTypes.h:898
AkUInt32 AkImageSourceID
Image Source ID.
Definition: AkTypes.h:146
@ AkPluginTypeEffect
Effect plug-in: applies processing to audio data.
Definition: AkTypes.h:1216
AkInt32 AkMemPoolId
Memory pool ID.
Definition: AkTypes.h:124
AkUInt32 AkArgumentValueID
Argument value ID.
Definition: AkTypes.h:142
AkVector64 operator-(const AkVector64 &b) const
Definition: AkTypes.h:396
@ AK_NoJavaVM
No Java VM provided in AkInitSettings.
Definition: AkTypes.h:248
static const AkUInt32 AK_SOUNDBANK_VERSION
Version of the soundbank reader.
Definition: AkTypes.h:183
AkReal32 fDistance
Distance between emitter and listener.
Definition: AkTypes.h:859
@ AK_FileFormatMismatch
Media file format unexpected.
Definition: AkTypes.h:258
static const AkBankID AK_INVALID_BANK_ID
Invalid bank ID.
Definition: AkTypes.h:166
@ AttenuationCurveID_OcclusionHPF
The occlusion-driven high-pass filter curve.
Definition: AkTypes.h:982
void Set(const AkVector &in_position, const AkVector &in_orientationFront, const AkVector &in_orientationTop)
Set position and orientation. Orientation front and top should be orthogonal and normalized.
Definition: AkTypes.h:617
@ AK_RenderedFX
The effect on the node is rendered.
Definition: AkTypes.h:233
static const AkAudioObjectID AK_INVALID_AUDIO_OBJECT_ID
Invalid audio object ID.
Definition: AkTypes.h:171
@ AkDeviceState_All
Includes audio devices in all states.
Definition: AkTypes.h:291
AkGraphPointBase(AkReal32 in_from, VALUE_TYPE in_to, AkCurveInterpolation in_interp)
Definition: AkTypes.h:948
AkUInt32 AkChannelMask
Channel mask (similar to WAVE_FORMAT_EXTENSIBLE). Bit values are defined in AkSpeakerConfig....
Definition: AkTypes.h:143
AkReal32 AkLPFType
Low-pass filter type.
Definition: AkTypes.h:123
char AkOSChar
Generic character string.
Definition: AkTypes.h:60
uint8_t AkUInt8
Unsigned 8-bit integer.
Definition: AkNumeralTypes.h:36
const AkVector64 & Position() const
Get position vector.
Definition: AkTypes.h:475
@ AK_BankReadError
Error while reading a bank.
Definition: AkTypes.h:226
@ AK_InvalidStateGroup
The StateGroup is not a valid channel.
Definition: AkTypes.h:207
static const AkUInt32 AK_DEFAULT_SWITCH_STATE
Switch selected if no switch has been set yet.
Definition: AkTypes.h:160
void SetPosition(const AkVector64 &in_position)
Set position.
Definition: AkTypes.h:533
AkExternalSourceInfo(AkOSChar *in_pszFileName, AkUInt32 in_iExternalSrcCookie, AkCodecID in_idCodec)
Constructor: specify source by streaming file name.
Definition: AkTypes.h:347
@ AK_IDNotFound
The ID was not found.
Definition: AkTypes.h:204
@ AkPluginTypeMask
Plug-in type mask is 4 bits.
Definition: AkTypes.h:1223
char padding[4]
In order to preserve consistent struct size across archs, we need some padding.
Definition: AkTypes.h:773
AkWorldTransform emitter
Emitter position.
Definition: AkTypes.h:858
@ AK_BankAlreadyLoaded
The bank load failed because the bank is already loaded.
Definition: AkTypes.h:232
@ MultiPositionType_SingleSource
Used for normal sounds, not expected to pass to AK::SoundEngine::SetMultiplePosition() (if done,...
Definition: AkTypes.h:1136
AkReal32 AkVolumeValue
Volume value( also apply to LFE )
Definition: AkTypes.h:121
@ AkCurveInterpolation_Exp1
Exp1.
Definition: AkTypes.h:903
@ AttenuationCurveID_TransmissionLPF
The transmission-driven low-pass filter curve.
Definition: AkTypes.h:987
@ AK_DLLCannotLoad
Plugin DLL could not be loaded, either because it is not found or one dependency is missing.
Definition: AkTypes.h:246
@ AK_3DPositionType_Emitter
3D spatialization is computed directly from the emitter game object position.
Definition: AkTypes.h:1156
bool operator==(const AkGraphPointBase &other) const
Definition: AkTypes.h:958
@ AK_ProcessDone
The executed routine has finished its execution.
Definition: AkTypes.h:235
float AkReal32
32-bit floating point
Definition: AkNumeralTypes.h:46
@ AK_Success
The operation was successful.
Definition: AkTypes.h:195
AkReal32 fObstruction
Emitter-listener-pair-specific obstruction factor.
Definition: AkTypes.h:866
int32_t AkInt32
Signed 32-bit integer.
Definition: AkNumeralTypes.h:43
@ AkDeviceState_Active
The audio device is active That is, the audio adapter that connects to the endpoint device is present...
Definition: AkTypes.h:287
Position and orientation of game objects in the world (i.e. supports 64-bit-precision position)
Definition: AkTypes.h:468
Emitter-listener pair: Positioning data pertaining to a single pair of emitter and listener.
Definition: AkTypes.h:791
AkReal32 From
Represents the value on the X axis.
Definition: AkTypes.h:954
@ AK_PathNodeAlreadyInList
This path is already there.
Definition: AkTypes.h:217
AkSetPositionFlags
Flags to independently set the position of the emitter or listener component on a game object.
Definition: AkTypes.h:1163
AkReal32 fGameDefAuxMixGain
Emitter-listener-pair-specific gain (due to distance and cone attenuation) for game-defined send conn...
Definition: AkTypes.h:863
@ AkCurveInterpolation_Exp3
Exp3.
Definition: AkTypes.h:905
AkUInt32 AkFileID
Integer-type file identifier.
Definition: AkTypes.h:139
static const AkPriority AK_DEFAULT_PRIORITY
Default sound / I/O priority.
Definition: AkTypes.h:174
@ AK_MemManagerNotInitialized
The memory manager should have been initialized at this point.
Definition: AkTypes.h:236
@ AK_BalanceFadeHeight
Balance-Fade-Height: Traditional "box" or "car"-like panner.
Definition: AkTypes.h:1148
IAkFileCodec *(* AkCreateFileCodecCallback)()
Registered FileCodec creation function prototype.
Definition: AkTypes.h:1096
@ AK_ProcessNeeded
A routine needs to be executed on some CPU.
Definition: AkTypes.h:234
@ MultiPositionType_MultiDirections
Simulate one sound coming from multiple directions. Useful for repositionning sounds based on wall op...
Definition: AkTypes.h:1138
WwiseObjectID(AkUniqueID in_ID, AkNodeType in_eNodeType)
Definition: AkTypes.h:1273
@ AK_CannotAddItseflAsAChild
It is not possible to add itself as its own child.
Definition: AkTypes.h:210
AkUInt32 iExternalSrcCookie
Cookie identifying the source, given by hashing the name of the source given in the project....
Definition: AkTypes.h:316
@ AK_DeviceNotCompatible
Incompatible Audio device.
Definition: AkTypes.h:252
void SetOrientation(const AkVector &in_orientationFront, const AkVector &in_orientationTop)
Set orientation. Orientation front and top should be orthogonal and normalized.
Definition: AkTypes.h:553
AkReal32 fNext
Definition: AkTypes.h:933
AkReal32 EmitterAngle() const
Definition: AkTypes.h:821
@ AK_EnableBusMeter_3DMeter
Definition: AkTypes.h:1205
@ AK_InvalidParameter
Something is not within bounds, check the documentation of the function returning this code.
Definition: AkTypes.h:211
@ AK_PluginNotRegistered
Plugin is not registered. Make sure to implement a AK::PluginRegistration class for it and use AK_STA...
Definition: AkTypes.h:250
@ AttenuationCurveID_MaxCount
The maximum number of curve types.
Definition: AkTypes.h:990
AkReal32 Y
Y Position.
Definition: AkTypes.h:462
AkWorldTransform ConvertAkTransformToAkWorldTransform(AkTransform in)
Definition: AkTypes.h:746
AkUInt32 AkUniqueID
Unique 32-bit ID.
Definition: AkTypes.h:114
void SetPosition(AkReal64 in_x, AkReal64 in_y, AkReal64 in_z)
Set position.
Definition: AkTypes.h:541
AkListenerPosition position
Definition: AkTypes.h:885
Configured audio settings.
Definition: AkTypes.h:279
AkGraphPointBase()=default
Ak3DSpatializationMode
3D spatialization mode.
Definition: AkTypes.h:1180
@ AkDeviceState_NotPresent
The audio device is not present because the audio adapter that connects to the endpoint device has be...
Definition: AkTypes.h:289
AkUInt32 AkPluginID
Source or effect plug-in ID.
Definition: AkTypes.h:125
AkVector operator+(const AkVector &b) const
Definition: AkTypes.h:420
@ AK_InvalidFloatValue
One parameter has a invalid float value such as NaN, INF or FLT_MAX.
Definition: AkTypes.h:257
AkGameObjectID ListenerID() const
Get listener ID associated with the emitter-listener pair.
Definition: AkTypes.h:856
@ AK_AudioFileHeaderTooLarge
The file header is too large.
Definition: AkTypes.h:201
AkReal32 X
X Position.
Definition: AkTypes.h:461
@ AkCurveInterpolation_InvSCurve
Inversed S Curve.
Definition: AkTypes.h:900
@ AkCurveInterpolation_Log3
Log3.
Definition: AkTypes.h:897
AkUInt16 AkDataTypeID
Data sample type ID.
Definition: AkTypes.h:131
@ AK_EnableBusMeter_TruePeak
Enable computation of true peak metering (most CPU and memory intensive).
Definition: AkTypes.h:1201
@ AttenuationCurveID_None
Symbol for "None".
Definition: AkTypes.h:993
@ AkCurveInterpolation_Log1
Log1.
Definition: AkTypes.h:899
@ AttenuationCurveID_ObstructionHPF
The obstruction-driven high-pass filter curve.
Definition: AkTypes.h:979
@ AK_UnknownFileError
Rare file error occured, as opposed to AK_FileNotFound or AK_FilePermissionError. This lumps all unre...
Definition: AkTypes.h:266
@ AttenuationCurveID_OcclusionVolume
The occlusion-driven volume curve.
Definition: AkTypes.h:980
AkUInt32 AkAcousticTextureID
Acoustic Texture ID.
Definition: AkTypes.h:145
@ AkDeviceState_Unknown
The audio device state is unknown or invalid.
Definition: AkTypes.h:286
@ AK_DeviceNotReady
Specified ID doesn't match a valid hardware device: either the device doesn't exist or is disabled.
Definition: AkTypes.h:231
AkInt16 AkCaptureType
Default value: capture type is short.
Definition: AkTypes.h:1304
@ AK_PlayingIDNotFound
Calling a function with a playing ID that is not known.
Definition: AkTypes.h:256
Spherical coordinates.
Definition: AkTypes.h:785
@ AK_Busy
The system is busy and could not process the request.
Definition: AkTypes.h:239
AkReal32 fDiffraction
Emitter-listener-pair-specific diffraction coefficient.
Definition: AkTypes.h:867
#define AKCODECID_BANK_BUS
Bank encoding for bus banks. These banks are contained in the /bus sub-folder.
Definition: AkTypes.h:1062
@ AK_AlreadyConnected
The stream is already connected to another node.
Definition: AkTypes.h:199
@ AK_PathNotFound
This path is not known.
Definition: AkTypes.h:213
AkAttenuationCurveType
Curve types of the Attenuation Editor.
Definition: AkTypes.h:969
static const AkPipelineID AK_INVALID_PIPELINE_ID
Invalid pipeline ID (for profiling)
Definition: AkTypes.h:170
@ AK_InitBankNotLoaded
The Init bank was not loaded yet, the sound engine isn't completely ready yet.
Definition: AkTypes.h:254
AkUInt32 AkCodecID
Codec plug-in ID.
Definition: AkTypes.h:126
AkReal32 Obstruction() const
Get the obstruction factor for this emitter-listener pair.
Definition: AkTypes.h:831
AkUInt16 AkDataCompID
Data compression format ID.
Definition: AkTypes.h:130
Positioning information for a sound, with specified subset of its channels.
Definition: AkTypes.h:770
Volume ramp specified by end points "previous" and "next".
Definition: AkTypes.h:927
AkBankTypeEnum
Bank types.
Definition: AkTypes.h:1114
@ AK_PluginMediaNotAvailable
Plugin media is not available for effect.
Definition: AkTypes.h:241
AkInt8 AkPriority
Priority.
Definition: AkTypes.h:129
AkReal32 Z
Z Position.
Definition: AkTypes.h:463
AkGroupType
Game sync group type.
Definition: AkTypes.h:271
AkRamp operator*(const AkRamp &in_rLhs, const AkRamp &in_rRhs)
Definition: AkTypes.h:935
int16_t AkInt16
Signed 16-bit integer.
Definition: AkNumeralTypes.h:42
AkReal32 obstruction
ObstructionLevel: [0.0f..1.0f].
Definition: AkTypes.h:765
static const AkUInt32 AK_NUM_JOB_TYPES
Number of possible job types recognized by the Sound Engine.
Definition: AkTypes.h:189
WwiseObjectID(AkUniqueID in_ID)
Definition: AkTypes.h:1261
@ AkBusHierarchy_IsMaster
Flag is set to indicate a master bus (may be used in combination with other flags).
Definition: AkTypes.h:1191
@ AkCurveInterpolation_Constant
Constant ( not valid for fading values )
Definition: AkTypes.h:907
AkExternalSourceInfo(void *in_pInMemory, AkUInt32 in_uiMemorySize, AkUInt32 in_iExternalSrcCookie, AkCodecID in_idCodec)
Constructor: specify source by memory.
Definition: AkTypes.h:333
@ AK_InvalidLanguage
The language is invalid (applies to the Low-Level I/O).
Definition: AkTypes.h:209
void SetOrientation(const AkVector &in_orientationFront, const AkVector &in_orientationTop)
Set orientation. Orientation front and top should be orthogonal and normalized.
Definition: AkTypes.h:673
AkRamp(AkReal32 in_fPrev, AkReal32 in_fNext)
Definition: AkTypes.h:929
AkWorldTransform AkSoundPosition
Positioning information for a sound.
Definition: AkTypes.h:756
static const AkMemPoolId AK_INVALID_POOL_ID
Invalid pool ID.
Definition: AkTypes.h:161
Polar coordinates.
Definition: AkTypes.h:778
@ AkDeviceState_Unplugged
The audio device is unplugged.
Definition: AkTypes.h:290
AkVector operator-(const AkVector &b) const
Definition: AkTypes.h:431
@ AkBusHierarchy_Secondary
Flag is set to indicate the secondary bus hierarchy.
Definition: AkTypes.h:1190
@ AK_NoDataNeeded
The consumer does not need more.
Definition: AkTypes.h:220
AkOSChar deviceName[AK_MAX_PATH]
The user-friendly name for the device.
Definition: AkTypes.h:297
AkReal32 GetGainForConnectionType(AkConnectionType in_eType) const
Get the emitter-listener-pair-specific gain (due to distance and cone attenuation),...
Definition: AkTypes.h:840
@ AkPluginTypeSink
Sink plug-in: implement custom sound engine end point.
Definition: AkTypes.h:1220
static const AkUInt32 AK_INVALID_OUTPUT_DEVICE_ID
Invalid Device ID.
Definition: AkTypes.h:169
@ AK_PartialSuccess
The operation succeeded partially.
Definition: AkTypes.h:197
AkTransform ConvertAkWorldTransformToAkTransform(AkWorldTransform in)
Definition: AkTypes.h:729
@ AK_SteeringPanner
Steering panner.
Definition: AkTypes.h:1149
@ ConnectionType_ReflectionsSend
Connection by a early reflections send.
Definition: AkTypes.h:379
@ AK_ACP_Error
Generic XMA decoder error.
Definition: AkTypes.h:260
AkCurveInterpolation
Curve interpolation types.
Definition: AkTypes.h:894
#define AK_CALLBACK(_type, _name)
@ AttenuationCurveID_VolumeAuxUserDef
The distance-driven user-defined auxiliary send curve.
Definition: AkTypes.h:972
static const AkPluginID AK_INVALID_SHARE_SET_ID
Invalid Share Set ID.
Definition: AkTypes.h:155
AkPanningRule
Headphone / speakers panning rules.
Definition: AkTypes.h:1172
@ AkSetPositionFlags_Emitter
Definition: AkTypes.h:1164
AkUInt32 uNumSamplesPerFrame
Number of samples per audio frame (256, 512, 1024 or 2048).
Definition: AkTypes.h:280
@ AttenuationCurveID_TransmissionVolume
The transmission-driven volume curve.
Definition: AkTypes.h:986
@ AK_InvalidInstanceID
The InstanceID is invalid.
Definition: AkTypes.h:205
@ AK_NotImplemented
This feature is not implemented.
Definition: AkTypes.h:194
double AkReal64
64-bit floating point
Definition: AkNumeralTypes.h:47
AkVector operator*(const AkReal32 f) const
Definition: AkTypes.h:442
IAkGrainCodec *(* AkCreateGrainCodecCallback)()
Registered IAkGrainCodec creation function prototype.
Definition: AkTypes.h:1098
static const AkUniqueID AK_INVALID_UNIQUE_ID
Invalid unique 32-bit ID.
Definition: AkTypes.h:157
void SetOrientation(AkReal32 in_orientFrontX, AkReal32 in_orientFrontY, AkReal32 in_orientFrontZ, AkReal32 in_orientTopX, AkReal32 in_orientTopY, AkReal32 in_orientTopZ)
Set orientation. Orientation front and top should be orthogonal and normalized.
Definition: AkTypes.h:683
AkWorldTransform position
Emitter position.
Definition: AkTypes.h:771
AkUInt32 AkStateID
State ID.
Definition: AkTypes.h:115
AkPluginType
Definition: AkTypes.h:1212
@ AkPanningRule_Speakers
Left and right positioned 60 degrees apart (by default - see AK::SoundEngine::GetSpeakerAngles()).
Definition: AkTypes.h:1173
@ AttenuationCurveID_Spread
The distance-driven Spread curve.
Definition: AkTypes.h:975
@ AkCurveInterpolation_Linear
Linear (Default)
Definition: AkTypes.h:901
bool bSpatialized
Listener scaling factor (see AK::SoundEngine::SetListenerScalingFactor()).
Definition: AkTypes.h:887
@ MultiPositionType_MultiSources
Simulate multiple sources in one sound playing, adding volumes. For instance, all the torches on your...
Definition: AkTypes.h:1137
bool bIsBus
Definition: AkTypes.h:1250
AkReal32 AkPitchValue
Pitch value.
Definition: AkTypes.h:120
static const AkPlayingID AK_INVALID_PLAYING_ID
Invalid playing ID.
Definition: AkTypes.h:159
@ AK_DataNeeded
The consumer needs more.
Definition: AkTypes.h:219
void SetPosition(const AkVector &in_position)
Set position.
Definition: AkTypes.h:653
AkVector ConvertAkVector64ToAkVector(AkVector64 in)
Definition: AkTypes.h:719
AkReal32 fScalingFactor
Combined scaling factor due to both emitter and listener.
Definition: AkTypes.h:871
@ AkDeviceState_Disabled
The audio device is disabled.
Definition: AkTypes.h:288
#define AKCODECID_BANK_EVENT
Bank encoding for event banks. These banks are contained in the /event sub-folder.
Definition: AkTypes.h:1061
uint64_t AkUInt64
Unsigned 64-bit integer.
Definition: AkNumeralTypes.h:39
AkUInt32 AkSwitchStateID
Switch ID.
Definition: AkTypes.h:134
AkReal32 fDryMixGain
Emitter-listener-pair-specific gain (due to distance and cone attenuation) for direct connections.
Definition: AkTypes.h:862
AkReal32 fOcclusion
Emitter-listener-pair-specific occlusion factor.
Definition: AkTypes.h:865
AkReal64 Y
Y Position.
Definition: AkTypes.h:413
@ AkPanningRule_Headphones
Left and right positioned 180 degrees apart.
Definition: AkTypes.h:1174
AkExternalSourceInfo()
Default constructor.
Definition: AkTypes.h:324
AkReal32 fListenerAngle
Angle between position vector and listener orientation.
Definition: AkTypes.h:861
AkUInt16 AkPortNumber
Port number.
Definition: AkTypes.h:119
AkFileID idFile
File ID. If not zero, the source will be streaming from disk. This ID can be anything....
Definition: AkTypes.h:321
AkChannelMask uEmitterChannelMask
Channels of the emitter that apply to this ray.
Definition: AkTypes.h:872
AkReal32 fTransmissionLoss
Emitter-listener-pair-specific transmission occlusion.
Definition: AkTypes.h:868
#define AKCODECID_BANK
Bank encoding.
Definition: AkTypes.h:1039
@ AK_PathNoVertices
Stuff in vertices before trying to start it.
Definition: AkTypes.h:214
AkReal32 theta
Azimuth.
Definition: AkTypes.h:780
static const AkArgumentValueID AK_FALLBACK_ARGUMENTVALUE_ID
Fallback argument value ID.
Definition: AkTypes.h:167
@ AK_PathNotPaused
Only a paused path can be resumed.
Definition: AkTypes.h:216
AkAudioDeviceState
Definition: AkTypes.h:285
@ AK_SpatializationMode_None
No spatialization.
Definition: AkTypes.h:1181
static const AkGameObjectID AK_INVALID_GAME_OBJECT
Invalid game object (may also mean all game objects)
Definition: AkTypes.h:156
AkListener()
Definition: AkTypes.h:881
AkRayID ID() const
Get the emitter-listener pair's ID.
Definition: AkTypes.h:853
@ AkBusHierarchy_Primary
Flag is set to indicate the primary bus hierarchy.
Definition: AkTypes.h:1189
@ AttenuationCurveID_ObstructionLPF
The obstruction-driven low-pass filter curve.
Definition: AkTypes.h:978
@ AttenuationCurveID_TransmissionHPF
The transmission-driven high-pass filter curve.
Definition: AkTypes.h:988
3D 64-bit vector. Intended as storage for world positions of sounds and objects, benefiting from 64-b...
Definition: AkTypes.h:384
@ AkPluginTypeSource
Source plug-in: creates sound by synthesis method (no input, just output).
Definition: AkTypes.h:1215
@ AK_ChildAlreadyHasAParent
The child already has a parent.
Definition: AkTypes.h:208
AkRayID id
ID of this emitter-listener pair, unique for a given emitter.
Definition: AkTypes.h:874
@ AK_UnknownBankID
Trying to load a bank using an ID which is not defined.
Definition: AkTypes.h:225
Public data structures for converted file format.
Definition: AkTypes.h:1282
@ AttenuationCurveID_DiffractionLPF
The diffraction-driven low-pass filter curve.
Definition: AkTypes.h:984
AkUInt32 AkRayID
Unique (per emitter) identifier for an emitter-listener ray.
Definition: AkTypes.h:149
AkUInt16 uAttenuation
Position of this point in samples at the source rate.
Definition: AkTypes.h:1288
@ AK_FilePermissionError
The file access permissions prevent opening a file.
Definition: AkTypes.h:265
@ ConnectionType_UserDefSend
Connection by a user-defined send.
Definition: AkTypes.h:378
@ AK_StreamMgrNotInitialized
The stream manager should have been initialized at this point.
Definition: AkTypes.h:237
Type for a point in an RTPC or Attenuation curve.
Definition: AkTypes.h:945
uint32_t AkUInt32
Unsigned 32-bit integer.
Definition: AkNumeralTypes.h:38
AkReal32 fUserDefAuxMixGain
Emitter-listener-pair-specific gain (due to distance and cone attenuation) for user-defined send conn...
Definition: AkTypes.h:864
static const AkFileID AK_INVALID_FILE_ID
Invalid file ID.
Definition: AkTypes.h:164
AkInt16 AkPluginParamID
Source or effect plug-in parameter ID.
Definition: AkTypes.h:128
static const AkAuxBusID AK_INVALID_AUX_ID
Invalid auxiliary bus ID (or no Aux bus ID)
Definition: AkTypes.h:163
@ AK_ElementAlreadyInList
The item could not be added because it was already in the list.
Definition: AkTypes.h:212
AkSpeakerPanningType
Speaker panning type: type of panning logic when object is not 3D spatialized (i.e....
Definition: AkTypes.h:1146
@ AK_Cancelled
The requested action was cancelled (not an error).
Definition: AkTypes.h:224
~AkEmitterListenerPair()
Destructor.
Definition: AkTypes.h:814
AkGameObjectID listenerID
Game object ID of the listener associated with this send. Use AK_INVALID_GAME_OBJECT as a wildcard to...
Definition: AkTypes.h:918
@ AkPluginTypeNone
Unknown/invalid plug-in type.
Definition: AkTypes.h:1213
WwiseObjectID()
Definition: AkTypes.h:1255
AkUInt32 AkAuxBusID
Auxilliary bus ID.
Definition: AkTypes.h:127
AkUInt64 AkOutputDeviceID
Audio Output device ID.
Definition: AkTypes.h:147
AkCreateBankSourceCallback pBankSrcCreateFunc
Definition: AkTypes.h:1103
AkVector64 operator+(const AkVector64 &b) const
Definition: AkTypes.h:385
@ AK_DuplicateUniqueID
Two Wwise objects share the same ID.
Definition: AkTypes.h:253
@ AttenuationCurveID_ObstructionVolume
The obstruction-driven volume curve.
Definition: AkTypes.h:977
const AkVector & OrientationTop() const
Get orientation top vector.
Definition: AkTypes.h:487
@ AkBankType_User
User-defined bank.
Definition: AkTypes.h:1115
@ AttenuationCurveID_OcclusionLPF
The occlusion-driven low-pass filter curve.
Definition: AkTypes.h:981
@ AK_FormatNotReady
Source format not known yet.
Definition: AkTypes.h:228
3D vector for some operations in 3D space. Typically intended only for localized calculations due to ...
Definition: AkTypes.h:419
@ AK_InsufficientMemory
Memory error.
Definition: AkTypes.h:223
@ AkPluginTypeCodec
Compressor/decompressor plug-in (allows support for custom audio file types).
Definition: AkTypes.h:1214
AkCreateFileSourceCallback pFileSrcCreateFunc
Definition: AkTypes.h:1102
@ AK_3DPositionType_ListenerWithAutomation
3D spatialization is computed from the listener game object position, translated by user-defined auto...
Definition: AkTypes.h:1158
AkBusHierarchyFlags
Bus type bit field.
Definition: AkTypes.h:1188
AkCurveInterpolation Interp
The shape of the interpolation curve between this point and the next.
Definition: AkTypes.h:956
AkChannelMask uInputChannels
Channels to which the above position applies.
Definition: AkTypes.h:772
static const AkReal32 AK_DEFAULT_BANK_THROUGHPUT
Default bank load throughput (1 Mb/ms)
Definition: AkTypes.h:180
AkReal32 AkRtpcValue
Real time parameter control value.
Definition: AkTypes.h:136
static const AkJobType AkJobType_SpatialAudio
Job type for Spatial Audio computations.
Definition: AkTypes.h:188
AkReal32 fScalingFactor
Listener position (see AK::SoundEngine::SetPosition()).
Definition: AkTypes.h:886
AkReal32 ListenerAngle() const
Definition: AkTypes.h:825
@ AttenuationCurveID_HighPassFilter
The distance-driven high-pass filter (pre send) curve.
Definition: AkTypes.h:974
AkUInt32 uNumSamplesPerSecond
Number of samples per second.
Definition: AkTypes.h:281
Listener information.
Definition: AkTypes.h:880
@ AK_OpenSLError
OpenSL returned an error. Check error log for more details.
Definition: AkTypes.h:249
AkUInt32 AkSwitchGroupID
Switch group ID.
Definition: AkTypes.h:133
AkReal32 TransmissionLoss() const
Get the transmission loss factor for this emitter-listener pair.
Definition: AkTypes.h:837
AkReal32 fAperture
Emitter-listener-pair-specific aperture.
Definition: AkTypes.h:870
@ AK_PathNotRunning
Only a running path can be paused.
Definition: AkTypes.h:215
@ AK_WrongBankVersion
The bank version is not compatible with the current bank reader.
Definition: AkTypes.h:229
AkReal64 Z
Z Position.
Definition: AkTypes.h:414
static const AkMemPoolId AK_DEFAULT_POOL_ID
Default pool ID, same as AK_INVALID_POOL_ID.
Definition: AkTypes.h:162
int8_t AkInt8
Signed 8-bit integer.
Definition: AkNumeralTypes.h:41
@ AK_AlreadyInitialized
Init() was called but that element was already initialized.
Definition: AkTypes.h:263
@ AK_MustBeVirtualized
Sound was Not Allowed to play.
Definition: AkTypes.h:242
static const AkPriority AK_MAX_PRIORITY
Maximal priority value [0,100].
Definition: AkTypes.h:176
IAkSoftwareCodec *(* AkCreateBankSourceCallback)(void *in_pCtx)
Registered bank source node creation function prototype.
Definition: AkTypes.h:1094
Ak3DPositionType
3D position type: defines what acts as the emitter position for computing spatialization against the ...
Definition: AkTypes.h:1155
static const AkRtpcID AK_INVALID_RTPC_ID
Invalid RTPC ID.
Definition: AkTypes.h:158
const AkVector & OrientationFront() const
Get orientation front vector.
Definition: AkTypes.h:481
AkReal32 occlusion
OcclusionLevel: [0.0f..1.0f].
Definition: AkTypes.h:764
AkUInt32 AkBankType
Run time bank type.
Definition: AkTypes.h:138
AkConnectionType
Nature of the connection binding an input to a bus.
Definition: AkTypes.h:375
Position and orientation of objects in a "local" space.
Definition: AkTypes.h:588
@ AK_SpatializationMode_PositionAndOrientation
Spatialization based on both emitter position and emitter orientation.
Definition: AkTypes.h:1183
AkUInt32 AkJobType
Job type identifier.
Definition: AkTypes.h:151
AkUInt32 AkPlayingID
Playing ID.
Definition: AkTypes.h:117
AkCreateGrainCodecCallback pGrainCodecCreateFunc
Definition: AkTypes.h:1105
@ ConnectionType_GameDefSend
Connection by a game-defined send.
Definition: AkTypes.h:377
@ AK_RejectedByFilter
A play request was rejected due to the MIDI filter parameters.
Definition: AkTypes.h:244
AkAuxBusID auxBusID
Auxiliary bus ID.
Definition: AkTypes.h:919
AkReal64 X
X Position.
Definition: AkTypes.h:412
@ AkCurveInterpolation_LastFadeCurve
Update this value to reflect last curve available for fades.
Definition: AkTypes.h:906
@ AkPluginTypeGlobalExtension
Global Extension plug-in: (e.g. Spatial Audio, Interactive Music)
Definition: AkTypes.h:1221
void Set(AkReal64 in_positionX, AkReal64 in_positionY, AkReal64 in_positionZ, AkReal32 in_orientFrontX, AkReal32 in_orientFrontY, AkReal32 in_orientFrontZ, AkReal32 in_orientTopX, AkReal32 in_orientTopY, AkReal32 in_orientTopZ)
Set position and orientation. Orientation front and top should be orthogonal and normalized.
Definition: AkTypes.h:509
AkUInt32 uiMemorySize
Size of the data pointed by pInMemory.
Definition: AkTypes.h:320
AkCreateFileCodecCallback pFileCodecCreateFunc
Definition: AkTypes.h:1104
@ AkBankType_Event
Bank generated for one event.
Definition: AkTypes.h:1116
static const AkChannelMask AK_INVALID_CHANNELMASK
Invalid channel mask.
Definition: AkTypes.h:168
@ AkPluginTypeMetadata
Metadata plug-in: applies object-based processing to audio data.
Definition: AkTypes.h:1222
AkUInt32 idDevice
Device ID for Wwise. This is the same as what is returned from AK::GetDeviceID and AK::GetDeviceIDFro...
Definition: AkTypes.h:296
AkUInt32 AkTriggerID
Trigger ID.
Definition: AkTypes.h:141
@ AK_InvalidBankType
Invalid bank type. The bank type was either supplied through a function call (e.g....
Definition: AkTypes.h:262
Analyzed envelope point.
Definition: AkTypes.h:1286

Was this page helpful?

Need Support?

Questions? Problems? Need more info? Contact us, and we can help!

Visit our Support page

Tell us about your project. We're here to help.

Register your project and we'll help you get started with no strings attached!

Get started with Wwise