Version

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

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