Table of Contents

Wwise SDK 2019.1.6
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  Version: <VERSION> Build: <BUILDNUMBER>
25  Copyright (c) <COPYRIGHTYEAR> Audiokinetic Inc.
26 *******************************************************************************/
27 
28 // AkTypes.h
29 
30 /// \file
31 /// Data type definitions.
32 
33 #ifndef _AK_DATA_TYPES_H_
34 #define _AK_DATA_TYPES_H_
35 
36 // Platform-specific section.
37 //----------------------------------------------------------------------------------------------------
38 #include <AK/AkPlatforms.h>
39 
40 
41 //----------------------------------------------------------------------------------------------------
42 
44 
45 #ifndef NULL
46  #ifdef __cplusplus
47  #define NULL 0
48  #else
49  #define NULL ((void *)0)
50  #endif
51 #endif
52 
53 #if defined(AK_CPU_X86_64) || defined(AK_CPU_ARM_64)
54 #define AK_POINTER_64
55 #endif // #if defined(AK_CPU_X86_64) || defined(AK_CPU_ARM_64)
56 
57 typedef AkInt32 AkAtomic32; ///< Signed 32-bit integer - Atomic Declaration
58 typedef AkInt64 AkAtomic64; ///< Signed 64-bit integer - Atomic Declaration
59 typedef AkUInt32 AkAtomicU32; ///< Unsigned 32-bit integer - Atomic Declaration
60 typedef AkIntPtr AkAtomicPtr; ///< Signed platform sized integer - Atomic Declaration
61 
62 typedef AkUInt32 AkUniqueID; ///< Unique 32-bit ID
63 typedef AkUInt32 AkStateID; ///< State ID
64 typedef AkUInt32 AkStateGroupID; ///< State group ID
65 typedef AkUInt32 AkPlayingID; ///< Playing ID
66 typedef AkInt32 AkTimeMs; ///< Time in ms
67 typedef AkUInt16 AkPortNumber; ///< Port number
68 typedef AkReal32 AkPitchValue; ///< Pitch value
69 typedef AkReal32 AkVolumeValue; ///< Volume value( also apply to LFE )
70 typedef AkUInt64 AkGameObjectID; ///< Game object ID
71 typedef AkReal32 AkLPFType; ///< Low-pass filter type
72 typedef AkInt32 AkMemPoolId; ///< Memory pool ID
73 typedef AkUInt32 AkPluginID; ///< Source or effect plug-in ID
74 typedef AkUInt32 AkCodecID; ///< Codec plug-in ID
75 typedef AkUInt32 AkAuxBusID; ///< Auxilliary bus ID
76 typedef AkInt16 AkPluginParamID; ///< Source or effect plug-in parameter ID
77 typedef AkInt8 AkPriority; ///< Priority
78 typedef AkUInt16 AkDataCompID; ///< Data compression format ID
79 typedef AkUInt16 AkDataTypeID; ///< Data sample type ID
80 typedef AkUInt8 AkDataInterleaveID; ///< Data interleaved state ID
81 typedef AkUInt32 AkSwitchGroupID; ///< Switch group ID
82 typedef AkUInt32 AkSwitchStateID; ///< Switch ID
83 typedef AkUInt32 AkRtpcID; ///< Real time parameter control ID
84 typedef AkReal32 AkRtpcValue; ///< Real time parameter control value
85 typedef AkUInt32 AkBankID; ///< Run time bank ID
86 typedef AkUInt32 AkFileID; ///< Integer-type file identifier
87 typedef AkUInt32 AkDeviceID; ///< I/O device ID
88 typedef AkUInt32 AkTriggerID; ///< Trigger ID
89 typedef AkUInt32 AkArgumentValueID; ///< Argument value ID
90 typedef AkUInt32 AkChannelMask; ///< Channel mask (similar to WAVE_FORMAT_EXTENSIBLE). Bit values are defined in AkSpeakerConfig.h.
91 typedef AkUInt32 AkModulatorID; ///< Modulator ID
92 typedef AkUInt32 AkAcousticTextureID; ///< Acoustic Texture ID
93 typedef AkUInt32 AkImageSourceID; ///< Image Source ID
94 typedef AkUInt64 AkOutputDeviceID; ///< Audio Output device ID
95 
96 // Constants.
97 static const AkPluginID AK_INVALID_PLUGINID = (AkPluginID)-1; ///< Invalid FX ID
98 static const AkGameObjectID AK_INVALID_GAME_OBJECT = (AkGameObjectID)-1; ///< Invalid game object (may also mean all game objects)
99 static const AkUniqueID AK_INVALID_UNIQUE_ID = 0; ///< Invalid unique 32-bit ID
100 static const AkRtpcID AK_INVALID_RTPC_ID = AK_INVALID_UNIQUE_ID;///< Invalid RTPC ID
101 static const AkPlayingID AK_INVALID_PLAYING_ID = AK_INVALID_UNIQUE_ID;///< Invalid playing ID
102 static const AkUInt32 AK_DEFAULT_SWITCH_STATE = 0; ///< Switch selected if no switch has been set yet
103 static const AkMemPoolId AK_INVALID_POOL_ID = -1; ///< Invalid pool ID
104 static const AkMemPoolId AK_DEFAULT_POOL_ID = -1; ///< Default pool ID, same as AK_INVALID_POOL_ID
105 static const AkAuxBusID AK_INVALID_AUX_ID = AK_INVALID_UNIQUE_ID;///< Invalid auxiliary bus ID (or no Aux bus ID)
106 static const AkFileID AK_INVALID_FILE_ID = (AkFileID)-1; ///< Invalid file ID
107 static const AkDeviceID AK_INVALID_DEVICE_ID = (AkDeviceID)-1; ///< Invalid streaming device ID
108 static const AkBankID AK_INVALID_BANK_ID = AK_INVALID_UNIQUE_ID;///< Invalid bank ID
109 static const AkArgumentValueID AK_FALLBACK_ARGUMENTVALUE_ID = 0; ///< Fallback argument value ID
110 static const AkChannelMask AK_INVALID_CHANNELMASK = 0; ///< Invalid channel mask
111 static const AkUInt32 AK_INVALID_OUTPUT_DEVICE_ID = AK_INVALID_UNIQUE_ID;///< Invalid Device ID
112 
113 // Priority.
114 static const AkPriority AK_DEFAULT_PRIORITY = 50; ///< Default sound / I/O priority
115 static const AkPriority AK_MIN_PRIORITY = 0; ///< Minimal priority value [0,100]
116 static const AkPriority AK_MAX_PRIORITY = 100; ///< Maximal priority value [0,100]
117 
118 // Default bank I/O settings.
119 static const AkPriority AK_DEFAULT_BANK_IO_PRIORITY = AK_DEFAULT_PRIORITY; ///< Default bank load I/O priority
120 static const AkReal32 AK_DEFAULT_BANK_THROUGHPUT = 1*1024*1024/1000.f; ///< Default bank load throughput (1 Mb/ms)
121 
122 // Bank version
123 static const AkUInt32 AK_SOUNDBANK_VERSION = 134; ///< Version of the soundbank reader
124 
125 /// Standard function call result.
126 enum AKRESULT
127 {
128  AK_NotImplemented = 0, ///< This feature is not implemented.
129  AK_Success = 1, ///< The operation was successful.
130  AK_Fail = 2, ///< The operation failed.
131  AK_PartialSuccess = 3, ///< The operation succeeded partially.
132  AK_NotCompatible = 4, ///< Incompatible formats
133  AK_AlreadyConnected = 5, ///< The stream is already connected to another node.
134  AK_InvalidFile = 7, ///< An unexpected value causes the file to be invalid.
135  AK_AudioFileHeaderTooLarge = 8, ///< The file header is too large.
136  AK_MaxReached = 9, ///< The maximum was reached.
137  AK_InvalidID = 14, ///< The ID is invalid.
138  AK_IDNotFound = 15, ///< The ID was not found.
139  AK_InvalidInstanceID = 16, ///< The InstanceID is invalid.
140  AK_NoMoreData = 17, ///< No more data is available from the source.
141  AK_InvalidStateGroup = 20, ///< The StateGroup is not a valid channel.
142  AK_ChildAlreadyHasAParent = 21, ///< The child already has a parent.
143  AK_InvalidLanguage = 22, ///< The language is invalid (applies to the Low-Level I/O).
144  AK_CannotAddItseflAsAChild = 23, ///< It is not possible to add itself as its own child.
145  AK_InvalidParameter = 31, ///< Something is not within bounds.
146  AK_ElementAlreadyInList = 35, ///< The item could not be added because it was already in the list.
147  AK_PathNotFound = 36, ///< This path is not known.
148  AK_PathNoVertices = 37, ///< Stuff in vertices before trying to start it
149  AK_PathNotRunning = 38, ///< Only a running path can be paused.
150  AK_PathNotPaused = 39, ///< Only a paused path can be resumed.
151  AK_PathNodeAlreadyInList = 40, ///< This path is already there.
152  AK_PathNodeNotInList = 41, ///< This path is not there.
153  AK_DataNeeded = 43, ///< The consumer needs more.
154  AK_NoDataNeeded = 44, ///< The consumer does not need more.
155  AK_DataReady = 45, ///< The provider has available data.
156  AK_NoDataReady = 46, ///< The provider does not have available data.
157  AK_InsufficientMemory = 52, ///< Memory error.
158  AK_Cancelled = 53, ///< The requested action was cancelled (not an error).
159  AK_UnknownBankID = 54, ///< Trying to load a bank using an ID which is not defined.
160  AK_BankReadError = 56, ///< Error while reading a bank.
161  AK_InvalidSwitchType = 57, ///< Invalid switch type (used with the switch container)
162  AK_FormatNotReady = 63, ///< Source format not known yet.
163  AK_WrongBankVersion = 64, ///< The bank version is not compatible with the current bank reader.
164  AK_FileNotFound = 66, ///< File not found.
165  AK_DeviceNotReady = 67, ///< Specified ID doesn't match a valid hardware device: either the device doesn't exist or is disabled.
166  AK_BankAlreadyLoaded = 69, ///< The bank load failed because the bank is already loaded.
167  AK_RenderedFX = 71, ///< The effect on the node is rendered.
168  AK_ProcessNeeded = 72, ///< A routine needs to be executed on some CPU.
169  AK_ProcessDone = 73, ///< The executed routine has finished its execution.
170  AK_MemManagerNotInitialized = 74, ///< The memory manager should have been initialized at this point.
171  AK_StreamMgrNotInitialized = 75, ///< The stream manager should have been initialized at this point.
172  AK_SSEInstructionsNotSupported = 76,///< The machine does not support SSE instructions (required on PC).
173  AK_Busy = 77, ///< The system is busy and could not process the request.
174  AK_UnsupportedChannelConfig = 78, ///< Channel configuration is not supported in the current execution context.
175  AK_PluginMediaNotAvailable = 79, ///< Plugin media is not available for effect.
176  AK_MustBeVirtualized = 80, ///< Sound was Not Allowed to play.
177  AK_CommandTooLarge = 81, ///< SDK command is too large to fit in the command queue.
178  AK_RejectedByFilter = 82, ///< A play request was rejected due to the MIDI filter parameters.
179  AK_InvalidCustomPlatformName= 83, ///< Detecting incompatibility between Custom platform of banks and custom platform of connected application
180  AK_DLLCannotLoad = 84, ///< Plugin DLL could not be loaded, either because it is not found or one dependency is missing.
181  AK_DLLPathNotFound = 85, ///< Plugin DLL search path could not be found.
182  AK_NoJavaVM = 86, ///< No Java VM provided in AkInitSettings.
183  AK_OpenSLError = 87, ///< OpenSL returned an error. Check error log for more details.
184  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.
185  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)
186  AK_DeviceNotCompatible = 90, ///< Incompatible Audio device.
187  AK_DuplicateUniqueID = 91, ///< Two Wwise objects share the same ID.
188  AK_InitBankNotLoaded = 92, ///< The Init bank was not loaded yet, the sound engine isn't completely ready yet.
189  AK_DeviceNotFound = 93, ///< The specified device ID does not match with any of the output devices that the sound engine is currently using.
190 };
191 
192 /// Game sync group type
194 {
195  // should stay set as Switch = 0 and State = 1
196  AkGroupType_Switch = 0, ///< Type switch
197  AkGroupType_State = 1 ///< Type state
198 };
199 
200 /// Configured audio settings
202 {
203  AkUInt32 uNumSamplesPerFrame; ///< Number of samples per audio frame (256, 512, 1024 or 2048).
204  AkUInt32 uNumSamplesPerSecond; ///< Number of samples per second.
205 };
206 
207 /// This structure allows the game to provide audio files to fill the external sources. See \ref AK::SoundEngine::PostEvent
208 /// You can specify a streaming file or a file in-memory, regardless of the "Stream" option in the Wwise project.
209 /// \akwarning
210 /// 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).
211 /// \endakwarning
213 {
214  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
215  AkCodecID idCodec; ///< Codec ID for the file. One of the audio formats defined in AkTypes.h (AKCODECID_XXX)
216  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).
217  void* pInMemory; ///< Pointer to the in-memory file. If not NULL, the source will be read from memory. Set szFile and idFile to NULL.
218  AkUInt32 uiMemorySize; ///< Size of the data pointed by pInMemory
219  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.
220 
221  /// Default constructor.
223  : iExternalSrcCookie( 0 )
224  , idCodec( 0 )
225  , szFile( 0 )
226  , pInMemory( 0 )
227  , uiMemorySize( 0 )
228  , idFile( 0 ) {}
229 
230  /// Constructor: specify source by memory.
232  void* in_pInMemory, ///< Pointer to the in-memory file.
233  AkUInt32 in_uiMemorySize, ///< Size of data.
234  AkUInt32 in_iExternalSrcCookie, ///< Cookie.
235  AkCodecID in_idCodec ///< Codec ID.
236  )
237  : iExternalSrcCookie( in_iExternalSrcCookie )
238  , idCodec( in_idCodec )
239  , szFile( 0 )
240  , pInMemory( in_pInMemory )
241  , uiMemorySize( in_uiMemorySize )
242  , idFile( 0 ) {}
243 
244  /// Constructor: specify source by streaming file name.
246  AkOSChar * in_pszFileName, ///< File name.
247  AkUInt32 in_iExternalSrcCookie, ///< Cookie.
248  AkCodecID in_idCodec ///< Codec ID.
249  )
250  : iExternalSrcCookie( in_iExternalSrcCookie )
251  , idCodec( in_idCodec )
252  , szFile( in_pszFileName )
253  , pInMemory( 0 )
254  , uiMemorySize( 0 )
255  , idFile( 0 ) {}
256 
257  /// Constructor: specify source by streaming file ID.
259  AkFileID in_idFile, ///< File ID.
260  AkUInt32 in_iExternalSrcCookie, ///< Cookie.
261  AkCodecID in_idCodec ///< Codec ID.
262  )
263  : iExternalSrcCookie( in_iExternalSrcCookie )
264  , idCodec( in_idCodec )
265  , szFile( 0 )
266  , pInMemory( 0 )
267  , uiMemorySize( 0 )
268  , idFile( in_idFile ) {}
269 };
270 
271 /// Nature of the connection binding an input to a bus.
273 {
274  ConnectionType_Direct = 0x0, ///< Direct (main, dry) connection.
275  ConnectionType_GameDefSend = 0x1, ///< Connection by a game-defined send.
276  ConnectionType_UserDefSend = 0x2, ///< Connection by a user-defined send.
277 };
278 
279 /// 3D vector.
280 struct AkVector
281 {
282  inline AkVector operator+(const AkVector& b) const
283  {
284  AkVector v;
285 
286  v.X = X + b.X;
287  v.Y = Y + b.Y;
288  v.Z = Z + b.Z;
289 
290  return v;
291  }
292 
293  inline void Zero()
294  {
295  X = 0; Y = 0; Z = 0;
296  }
297 
298  AkReal32 X; ///< X Position
299  AkReal32 Y; ///< Y Position
300  AkReal32 Z; ///< Z Position
301 };
302 
303 /// Position and orientation of game objects.
305 {
306 public:
307  //
308  // Getters.
309  //
310 
311  /// Get position vector.
312  inline const AkVector & Position() const
313  {
314  return position;
315  }
316 
317  /// Get orientation front vector.
318  inline const AkVector & OrientationFront() const
319  {
320  return orientationFront;
321  }
322 
323  /// Get orientation top vector.
324  inline const AkVector & OrientationTop() const
325  {
326  return orientationTop;
327  }
328 
329  //
330  // Setters.
331  //
332 
333  /// Set position and orientation. Orientation front and top should be orthogonal and normalized.
334  inline void Set(
335  const AkVector & in_position, ///< Position vector.
336  const AkVector & in_orientationFront, ///< Orientation front
337  const AkVector & in_orientationTop ///< Orientation top
338  )
339  {
340  position = in_position;
341  orientationFront = in_orientationFront;
342  orientationTop = in_orientationTop;
343  }
344 
345  /// Set position and orientation. Orientation front and top should be orthogonal and normalized.
346  inline void Set(
347  AkReal32 in_positionX, ///< Position x
348  AkReal32 in_positionY, ///< Position y
349  AkReal32 in_positionZ, ///< Position z
350  AkReal32 in_orientFrontX, ///< Orientation front x
351  AkReal32 in_orientFrontY, ///< Orientation front y
352  AkReal32 in_orientFrontZ, ///< Orientation front z
353  AkReal32 in_orientTopX, ///< Orientation top x
354  AkReal32 in_orientTopY, ///< Orientation top y
355  AkReal32 in_orientTopZ ///< Orientation top z
356  )
357  {
358  position.X = in_positionX;
359  position.Y = in_positionY;
360  position.Z = in_positionZ;
361  orientationFront.X = in_orientFrontX;
362  orientationFront.Y = in_orientFrontY;
363  orientationFront.Z = in_orientFrontZ;
364  orientationTop.X = in_orientTopX;
365  orientationTop.Y = in_orientTopY;
366  orientationTop.Z = in_orientTopZ;
367  }
368 
369  /// Set position.
370  inline void SetPosition(
371  const AkVector & in_position ///< Position vector.
372  )
373  {
374  position = in_position;
375  }
376 
377  /// Set position.
378  inline void SetPosition(
379  AkReal32 in_x, ///< x
380  AkReal32 in_y, ///< y
381  AkReal32 in_z ///< z
382  )
383  {
384  position.X = in_x;
385  position.Y = in_y;
386  position.Z = in_z;
387  }
388 
389  /// Set orientation. Orientation front and top should be orthogonal and normalized.
390  inline void SetOrientation(
391  const AkVector & in_orientationFront, ///< Orientation front
392  const AkVector & in_orientationTop ///< Orientation top
393  )
394  {
395  orientationFront = in_orientationFront;
396  orientationTop = in_orientationTop;
397  }
398 
399  /// Set orientation. Orientation front and top should be orthogonal and normalized.
400  inline void SetOrientation(
401  AkReal32 in_orientFrontX, ///< Orientation front x
402  AkReal32 in_orientFrontY, ///< Orientation front y
403  AkReal32 in_orientFrontZ, ///< Orientation front z
404  AkReal32 in_orientTopX, ///< Orientation top x
405  AkReal32 in_orientTopY, ///< Orientation top y
406  AkReal32 in_orientTopZ ///< Orientation top z
407  )
408  {
409  orientationFront.X = in_orientFrontX;
410  orientationFront.Y = in_orientFrontY;
411  orientationFront.Z = in_orientFrontZ;
412  orientationTop.X = in_orientTopX;
413  orientationTop.Y = in_orientTopY;
414  orientationTop.Z = in_orientTopZ;
415  }
416 
417 private:
418  AkVector orientationFront; ///< Orientation of the listener
419  AkVector orientationTop; ///< Top orientation of the listener
420  AkVector position; ///< Position of the listener
421 };
422 
423 /// Positioning information for a sound.
425 
426 /// Positioning information for a listener.
428 
429 /// Obstruction/occlusion pair for a position
431 {
432  AkReal32 occlusion; ///< OcclusionLevel: [0.0f..1.0f]
433  AkReal32 obstruction; ///< ObstructionLevel: [0.0f..1.0f]
434 };
435 
436 /// Positioning information for a sound, with specified subset of its channels.
438 {
439  AkTransform position; ///< Emitter position.
440  AkChannelMask uInputChannels; ///< Channels to which the above position applies.
441 };
442 
443 /// Polar coordinates.
445 {
446  AkReal32 r; ///< Norm/distance
447  AkReal32 theta; ///< Azimuth
448 };
449 
450 /// Spherical coordinates.
452 {
453  AkReal32 phi; ///< Elevation
454 };
455 
456 /// Emitter-listener pair: Positioning data pertaining to a single pair of emitter and listener.
458 {
459 public:
460  /// Constructor.
462  : fDistance(0.f)
463  , fEmitterAngle(0.f)
464  , fListenerAngle(0.f)
465  , fDryMixGain(1.f)
466  , fGameDefAuxMixGain(1.f)
467  , fUserDefAuxMixGain(1.f)
468  , fOcclusion(0.f)
469  , fObstruction(0.f)
470  , fSpread(0.f)
471  , fFocus(0.f)
472  , uEmitterChannelMask(0xFFFFFFFF)
473  , m_uListenerID(0)
474  {
475  }
476  /// Destructor.
478 
479  /// Get distance.
480  inline AkReal32 Distance() const { return fDistance; }
481 
482  /// Get the absolute angle, in radians between 0 and pi, of the emitter's orientation relative to
483  /// the line that joins the emitter and the listener.
484  inline AkReal32 EmitterAngle() const { return fEmitterAngle; }
485 
486  /// Get the absolute angle, in radians between 0 and pi, of the listener's orientation relative to
487  /// the line that joins the emitter and the listener
488  inline AkReal32 ListenerAngle() const { return fListenerAngle; }
489 
490  /// Get the occlusion factor for this emitter-listener pair
491  inline AkReal32 Occlusion() const { return fOcclusion; }
492 
493  /// Get the obstruction factor for this emitter-listener pair
494  inline AkReal32 Obstruction() const { return fObstruction; }
495 
496  /// Get the emitter-listener-pair-specific gain (due to distance and cone attenuation), linear [0,1], for a given connection type.
498  {
499  if (in_eType == ConnectionType_Direct)
500  return fDryMixGain;
501  else if (in_eType == ConnectionType_GameDefSend)
502  return fGameDefAuxMixGain;
503  else
504  return fUserDefAuxMixGain;
505  }
506 
507  /// Get listener ID associated with the emitter-listener pair.
508  inline AkGameObjectID ListenerID() const { return m_uListenerID; }
509 
510  AkTransform emitter; /// Emitter position.
511  AkReal32 fDistance; /// Distance between emitter and listener.
512  AkReal32 fEmitterAngle; /// Angle between position vector and emitter orientation.
513  AkReal32 fListenerAngle; /// Angle between position vector and listener orientation.
514  AkReal32 fDryMixGain; /// Emitter-listener-pair-specific gain (due to distance and cone attenuation) for direct connections.
515  AkReal32 fGameDefAuxMixGain; /// Emitter-listener-pair-specific gain (due to distance and cone attenuation) for game-defined send connections.
516  AkReal32 fUserDefAuxMixGain; /// Emitter-listener-pair-specific gain (due to distance and cone attenuation) for user-defined send connections.
517  AkReal32 fOcclusion; /// Emitter-listener-pair-specific occlusion factor
518  AkReal32 fObstruction; /// Emitter-listener-pair-specific obstruction factor
519  AkReal32 fSpread; /// Emitter-listener-pair-specific spread
520  AkReal32 fFocus; /// Emitter-listener-pair-specific focus
521  AkChannelMask uEmitterChannelMask; /// Channels of the emitter that apply to this ray.
522 protected:
523  AkGameObjectID m_uListenerID; /// Listener game object ID.
524 };
525 
526 /// Listener information.
527 struct AkListener
528 {
530  : fScalingFactor( 1.0f )
531  , bSpatialized( true )
532  {}
533  AkListenerPosition position; /// Listener position (see AK::SoundEngine::SetPosition()).
534  AkReal32 fScalingFactor; /// Listener scaling factor (see AK::SoundEngine::SetListenerScalingFactor()).
535  bool bSpatialized; /// Whether listener is spatialized or not (see AK::SoundEngine::SetListenerSpatialization()).
536 };
537 
538 // If you modify AkCurveInterpolation, don't forget to modify WAAPI validation schema accordingly.
539 
540 /// Curve interpolation types
542 {
543 //DONT GO BEYOND 15! (see below for details)
544 //Curves from 0 to LastFadeCurve NEED TO BE A MIRROR IMAGE AROUND LINEAR (eg. Log3 is the inverse of Exp3)
548  AkCurveInterpolation_InvSCurve = 3, ///< Inversed S Curve
549  AkCurveInterpolation_Linear = 4, ///< Linear (Default)
550  AkCurveInterpolation_SCurve = 5, ///< S Curve
552  AkCurveInterpolation_SineRecip = 7, ///< Reciprocal of sine curve
554  AkCurveInterpolation_LastFadeCurve = 8, ///< Update this value to reflect last curve available for fades
555  AkCurveInterpolation_Constant = 9 ///< Constant ( not valid for fading values )
556 //DONT GO BEYOND 15! The value is stored on 5 bits,
557 //but we can use only 4 bits for the actual values, keeping
558 //the 5th bit at 0 to void problems when the value is
559 //expanded to 32 bits.
560 };
561 #define AKCURVEINTERPOLATION_NUM_STORAGE_BIT 5 ///< Internal storage restriction, for internal use only.
562 
563 /// Auxiliary bus sends information per game object per given auxiliary bus.
565 {
566  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).
567  AkAuxBusID auxBusID; ///< Auxiliary bus ID.
568  AkReal32 fControlValue; ///< Value in the range [0.0f:1.0f], send level to auxiliary bus.
569 };
570 
571 /// Volume ramp specified by end points "previous" and "next".
572 struct AkRamp
573 {
574  AkRamp() : fPrev( 1.f ), fNext( 1.f ) {}
575  AkRamp( AkReal32 in_fPrev, AkReal32 in_fNext ) : fPrev( in_fPrev ), fNext( in_fNext ) {}
576  AkRamp & operator*=(const AkRamp& in_rRhs) { fPrev *= in_rRhs.fPrev; fNext *= in_rRhs.fNext; return *this; }
577 
580 };
581 inline AkRamp operator*(const AkRamp& in_rLhs, const AkRamp& in_rRhs)
582 {
583  AkRamp result(in_rLhs);
584  result *= in_rRhs;
585  return result;
586 }
587 
588 #ifndef AK_MEMPOOLATTRIBUTES
589 
590  /// Memory pool attributes.
591  /// Block allocation type determines the method used to allocate
592  /// a memory pool. Block management type determines the
593  /// method used to manage memory blocks. Note that
594  /// the list of values in this enum is platform-dependent.
595  /// \sa
596  /// - AkMemoryMgr::CreatePool()
597  /// - AK::Comm::DEFAULT_MEMORY_POOL_ATTRIBUTES
599  {
600  AkNoAlloc = 0, ///< CreatePool will not allocate memory. You need to allocate the buffer yourself.
601  AkMalloc = 1, ///< CreatePool will use AK::AllocHook() to allocate the memory block.
602  AkAllocMask = AkNoAlloc | AkMalloc, ///< Block allocation type mask.
603 
604  AkFixedSizeBlocksMode = 1<<3, ///< Block management type: Fixed-size blocks. Get blocks through GetBlock/ReleaseBlock API. If not specified, use AkAlloc/AkFree.
605  AkBlockMgmtMask = AkFixedSizeBlocksMode ///< Block management type mask.
606  };
607  #define AK_MEMPOOLATTRIBUTES
608 
609 #endif
610 
611 namespace AK
612 {
613  /// External allocation hook for the Memory Manager. Called by the Audiokinetic
614  /// implementation of the Memory Manager when creating a pool of type AkMalloc.
615  /// \aknote This needs to be defined by the client. \endaknote
616  /// \return A pointer to the start of the allocated memory (NULL if the system is out of memory)
617  /// \sa
618  /// - \ref memorymanager
619  /// - AK::FreeHook()
620  AK_EXTERNFUNC( void *, AllocHook )(
621  size_t in_size ///< Number of bytes to allocate
622  );
623 
624  /// External deallocation hook for the Memory Manager. Called by the Audiokinetic
625  /// implementation of the Memory Manager when destroying a pool of type AkMalloc.
626  /// \aknote This needs to be defined by the client. \endaknote
627  /// \sa
628  /// - \ref memorymanager
629  /// - AK::AllocHook()
630  AK_EXTERNFUNC( void, FreeHook )(
631  void * in_pMemAddress ///< Pointer to the start of memory allocated with AllocHook
632  );
633 }
634 
635 // ---------------------------------------------------------------
636 // Languages
637 // ---------------------------------------------------------------
638 #define AK_MAX_LANGUAGE_NAME_SIZE (32)
639 
640 // ---------------------------------------------------------------
641 // File Type ID Definitions
642 // ---------------------------------------------------------------
643 
644 // These correspond to IDs specified in the conversion plug-ins' XML
645 // files. Audio sources persist them to "remember" their format.
646 // DO NOT CHANGE THEM without talking to someone in charge of persistence!
647 
648 // Company ID for plugin development.
649 #define AKCOMPANYID_PLUGINDEV_MIN (64)
650 #define AKCOMPANYID_PLUGINDEV_MAX (255)
651 
652 // Vendor ID.
653 #define AKCOMPANYID_AUDIOKINETIC (0) ///< Audiokinetic inc.
654 #define AKCOMPANYID_AUDIOKINETIC_EXTERNAL (1) ///< Audiokinetic inc.
655 #define AKCOMPANYID_MCDSP (256) ///< McDSP
656 #define AKCOMPANYID_WAVEARTS (257) ///< WaveArts
657 #define AKCOMPANYID_PHONETICARTS (258) ///< Phonetic Arts
658 #define AKCOMPANYID_IZOTOPE (259) ///< iZotope
659 #define AKCOMPANYID_CRANKCASEAUDIO (261) ///< Crankcase Audio
660 #define AKCOMPANYID_IOSONO (262) ///< IOSONO
661 #define AKCOMPANYID_AUROTECHNOLOGIES (263) ///< Auro Technologies
662 #define AKCOMPANYID_DOLBY (264) ///< Dolby
663 #define AKCOMPANYID_TWOBIGEARS (265) ///< Two Big Ears
664 #define AKCOMPANYID_OCULUS (266) ///< Oculus
665 #define AKCOMPANYID_BLUERIPPLESOUND (267) ///< Blue Ripple Sound
666 #define AKCOMPANYID_ENZIEN (268) ///< Enzien Audio
667 #define AKCOMPANYID_KROTOS (269) ///< Krotos (Dehumanizer)
668 #define AKCOMPANYID_NURULIZE (270) ///< Nurulize
669 #define AKCOMPANYID_SUPERPOWERED (271) ///< Super Powered
670 #define AKCOMPANYID_GOOGLE (272) ///< Google
671 //#define AKCOMPANYID_NVIDIA (273) ///< NVIDIA // Commented out to avoid redefinition, provider is already defining it.
672 //#define AKCOMPANYID_RESERVED (274) ///< Reserved // Commented out to avoid redefinition, provider is already defining it.
673 //#define AKCOMPANYID_MICROSOFT (275) ///< Microsoft // Commented out to avoid redefinition, provider is already defining it.
674 //#define AKCOMPANYID_YAMAHA (276) ///< YAMAHA // Commented out to avoid redefinition, provider is already defining it.
675 #define AKCOMPANYID_VISISONICS (277) ///< Visisonics
676 
677 // File/encoding types of Audiokinetic.
678 #define AKCODECID_BANK (0) ///< Bank encoding
679 #define AKCODECID_PCM (1) ///< PCM encoding
680 #define AKCODECID_ADPCM (2) ///< ADPCM encoding
681 #define AKCODECID_XMA (3) ///< XMA encoding
682 #define AKCODECID_VORBIS (4) ///< Vorbis encoding
683 #define AKCODECID_WIIADPCM (5) ///< ADPCM encoding on the Wii
684 #define AKCODECID_PCMEX (7) ///< Standard PCM WAV file parser for Wwise Authoring
685 #define AKCODECID_EXTERNAL_SOURCE (8) ///< External Source (unknown encoding)
686 #define AKCODECID_XWMA (9) ///< xWMA encoding
687 #define AKCODECID_AAC (10) ///< AAC encoding (only available on Apple devices) -- see AkAACFactory.h
688 #define AKCODECID_FILE_PACKAGE (11) ///< File package files generated by the File Packager utility.
689 #define AKCODECID_ATRAC9 (12) ///< ATRAC-9 encoding
690 #define AKCODECID_VAG (13) ///< VAG/HE-VAG encoding
691 #define AKCODECID_PROFILERCAPTURE (14) ///< Profiler capture file (.prof) as written through AK::SoundEngine::StartProfilerCapture
692 #define AKCODECID_ANALYSISFILE (15) ///< Analysis file
693 #define AKCODECID_MIDI (16) ///< MIDI file
694 #define AKCODECID_OPUSNX (17) ///< OpusNX encoding
695 #define AKCODECID_CAF (18) ///< CAF file
696 #define AKCODECID_AKOPUS (19) ///< Opus encoding
697 
698 #define AKPLUGINID_METER (129) ///< Meter Plugin
699 #define AKPLUGINID_RECORDER (132) ///< Recorder Plugin
700 
701 #define AKEXTENSIONID_SPATIALAUDIO (800) ///< Spatial Audio
702 #define AKEXTENSIONID_INTERACTIVEMUSIC (801) ///< Interactive Music
703 #define AKEXTENSIONID_EVENTMGRTHREAD (900) ///< Profiling: Event Manager
704 
705 //The following are internally defined
706 #define AK_WAVE_FORMAT_VAG 0xFFFB
707 #define AK_WAVE_FORMAT_AT9 0xFFFC
708 #define AK_WAVE_FORMAT_VORBIS 0xFFFF
709 #define AK_WAVE_FORMAT_AAC 0xAAC0
710 #define AK_WAVE_FORMAT_OPUSNX 0x3039
711 #define AK_WAVE_FORMAT_OPUS 0x3040
712 #define WAVE_FORMAT_XMA2 0x166
713 
714 class IAkSoftwareCodec;
715 /// Registered file source creation function prototype.
716 AK_CALLBACK( IAkSoftwareCodec*, AkCreateFileSourceCallback )( void* in_pCtx );
717 /// Registered bank source node creation function prototype.
718 AK_CALLBACK( IAkSoftwareCodec*, AkCreateBankSourceCallback )( void* in_pCtx );
719 
720 //-----------------------------------------------------------------------------
721 // Positioning
722 //-----------------------------------------------------------------------------
723 
724 namespace AK
725 {
726  namespace SoundEngine
727  {
728  // If you modify MultiPositionType, don't forget to modify WAAPI validation schema accordingly.
729 
730  /// MultiPositionType.
731  /// \sa
732  /// - AK::SoundEngine::SetMultiplePosition()
733  /// - \ref soundengine_3dpositions_multiplepos
735  {
736  MultiPositionType_SingleSource, ///< Used for normal sounds, not expected to pass to AK::SoundEngine::SetMultiplePosition() (if done, only the first position will be used).
737  MultiPositionType_MultiSources, ///< Simulate multiple sources in one sound playing, adding volumes. For instance, all the torches on your level emitting using only one sound.
738  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 ).
739  };
740  }
741 }
742 
743 #define AK_PANNER_NUM_STORAGE_BITS 3
744 /// Speaker panning type: type of panning logic when object is not 3D spatialized (i.e. when Ak3DSpatializationMode is AK_SpatializationMode_None).
746 {
747  AK_DirectSpeakerAssignment = 0, ///< No panning: route to matching channels between input and output.
748  AK_BalanceFadeHeight = 1 ///< Balance-Fade-Height: Traditional "box" or "car"-like panner.
749 };
750 
751 #define AK_POSSOURCE_NUM_STORAGE_BITS 3
752 /// 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.
754 {
755  AK_3DPositionType_Emitter = 0, ///< 3D spatialization is computed directly from the emitter game object position.
756  AK_3DPositionType_EmitterWithAutomation = 1, ///< 3D spatialization is computed from the emitter game object position, translated by user-defined automation.
757  AK_3DPositionType_ListenerWithAutomation = 2 ///< 3D spatialization is computed from the listener game object position, translated by user-defined automation.
758 };
759 
760 /// Headphone / speakers panning rules
762 {
763  AkPanningRule_Speakers = 0, ///< Left and right positioned 60 degrees apart (by default - see AK::SoundEngine::GetSpeakerAngles()).
764  AkPanningRule_Headphones = 1 ///< Left and right positioned 180 degrees apart.
765 };
766 
767 #define AK_SPAT_NUM_STORAGE_BITS 3
768 /// 3D spatialization mode.
770 {
771  AK_SpatializationMode_None = 0, ///< No spatialization
772  AK_SpatializationMode_PositionOnly = 1, ///< Spatialization based on emitter position only.
773  AK_SpatializationMode_PositionAndOrientation = 2 ///< Spatialization based on both emitter position and emitter orientation.
774 };
775 
776 /// Bus type bit field.
778 {
779  AkBusHierarchy_Primary = 1 << 0, ///< Flag is set to indicate the primary bus hierarchy.
780  AkBusHierarchy_Secondary = 1 << 1, ///< Flag is set to indicate the secondary bus hierarchy.
781  AkBusHierarchy_IsMaster = 1 << 7 ///< Flag is set to indicate a master bus (may be used in combination with other flags).
782 };
783 
784 #define AK_MAX_BITS_METERING_FLAGS (5) // Keep in sync with AkMeteringFlags.
785 
786 /// Metering flags. Used for specifying bus metering, through AK::SoundEngine::RegisterBusVolumeCallback() or AK::IAkMixerPluginContext::SetMeteringFlags().
788 {
789  AK_NoMetering = 0, ///< No metering.
790  AK_EnableBusMeter_Peak = 1 << 0, ///< Enable computation of peak metering.
791  AK_EnableBusMeter_TruePeak = 1 << 1, ///< Enable computation of true peak metering (most CPU and memory intensive).
792  AK_EnableBusMeter_RMS = 1 << 2, ///< Enable computation of RMS metering.
793  // 1 << 3 is reserved.
794  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).
796 };
797 
798 /// Plug-in type.
799 /// \sa
800 /// - AkPluginInfo
802 {
803  AkPluginTypeNone = 0, ///< Unknown/invalid plug-in type.
804  AkPluginTypeCodec = 1, ///< Compressor/decompressor plug-in (allows support for custom audio file types).
805  AkPluginTypeSource = 2, ///< Source plug-in: creates sound by synthesis method (no input, just output).
806  AkPluginTypeEffect = 3, ///< Effect plug-in: applies processing to audio data.
807  //AkPluginTypeMotionDevice = 4, ///< Motion Device plug-in: feeds movement data to devices. Deprecated by Motion refactor.
808  //AkPluginTypeMotionSource = 5, ///< Motion Device source plug-in: feeds movement data to device busses. Deprecated by Motion refactor.
809  AkPluginTypeMixer = 6, ///< Mixer plug-in: mix voices at the bus level.
810  AkPluginTypeSink = 7, ///< Sink plug-in: implement custom sound engine end point.
811  AkPluginTypeGlobalExtension = 8, ///< Global Extension plug-in: (e.g. Spatial Audio, Interactive Music)
812  AkPluginTypeMask = 0xf ///< Plug-in type mask is 4 bits.
813 };
814 
815 ////////////////////////////////////////////////////////////////////////////////
816 // Wwise ID system
817 ////////////////////////////////////////////////////////////////////////////////
819 {
822 };
823 
825 {
826 public:
827 
828  bool operator == ( const WwiseObjectIDext& in_rOther ) const
829  {
830  return in_rOther.id == id && in_rOther.bIsBus == bIsBus;
831  }
832 
834  {
836  }
837 
839  bool bIsBus;
840 };
841 
843 {
845  {
847  bIsBus = false;
848  }
849 
851  {
852  id = in_ID;
853  bIsBus = false;
854  }
855 
856  WwiseObjectID( AkUniqueID in_ID, bool in_bIsBus )
857  {
858  id = in_ID;
859  bIsBus = in_bIsBus;
860  }
861 
862  WwiseObjectID( AkUniqueID in_ID, AkNodeType in_eNodeType )
863  {
864  id = in_ID;
865  bIsBus = in_eNodeType == AkNodeType_Bus;
866  }
867 };
868 
869 /// Public data structures for converted file format.
870 namespace AkFileParser
871 {
872 #pragma pack(push, 1)
873  /// Analyzed envelope point.
875  {
876  AkUInt32 uPosition; /// Position of this point in samples at the source rate.
877  AkUInt16 uAttenuation; /// Approximate _attenuation_ at this location relative to this source's maximum, in dB (absolute value).
878  };
879 #pragma pack(pop)
880 }
881 
882 #ifndef AK_OS_STRUCT_ALIGN
883 #define AK_OS_STRUCT_ALIGN 4 ///< OS Structures need to be aligned at 4 bytes.
884 #endif
885 
886 #ifndef AK_64B_OS_STRUCT_ALIGN
887 #define AK_64B_OS_STRUCT_ALIGN 8 ///< OS Structures need to be aligned at 8 bytes.
888 #endif
889 
890 #ifndef AK_ALIGN
891 #define AK_ALIGN(__declaration__, uAlignmentSize) __declaration__ ///< Default definition for declaration that might need to be aligned on some platforms. By default, no alignment will be done.
892 #endif
893 
894 #if !defined(AK_ENDIANNESS_LITTLE) && !defined(AK_ENDIANNESS_BIG)
895 #define AK_ENDIANNESS_LITTLE
896 #endif
897 
898 #ifndef AK_UNALIGNED
899 #define AK_UNALIGNED ///< Refers to the __unaligned compilation flag available on some platforms. Note that so far, on the tested platform this should always be placed before the pointer symbol *.
900 #endif
901 
902 #if __cplusplus <= 199711L
903 #define AK_FINAL
904 #else
905 #define AK_FINAL final ///< Refers to the C++11 final keyword
906 #endif
907 
908 #ifndef AK_ASYNC_OPEN_DEFAULT
909 #define AK_ASYNC_OPEN_DEFAULT (false) ///< Refers to asynchronous file opening in default low-level IO.
910 #endif
911 
912 #ifndef AK_COMM_DEFAULT_DISCOVERY_PORT
913 #define AK_COMM_DEFAULT_DISCOVERY_PORT 24024 ///< Default discovery port for most platforms using IP sockets for communication.
914 #endif
915 
916 #ifndef AK_CAPTURE_TYPE_FLOAT
917 typedef AkInt16 AkCaptureType; ///< Default value: capture type is short.
918 #endif
919 
920 #define AkRegister
921 
922 #endif //_AK_DATA_TYPES_H_
Sink plug-in: implement custom sound engine end point.
Definition: AkTypes.h:810
static const AkMemPoolId AK_DEFAULT_POOL_ID
Default pool ID, same as AK_INVALID_POOL_ID.
Definition: AkTypes.h:104
AkConnectionType
Nature of the connection binding an input to a bus.
Definition: AkTypes.h:272
Connection by a game-defined send.
Definition: AkTypes.h:275
#define AK_EXTERNFUNC(__TYPE__, __NAME__)
Incompatible formats.
Definition: AkTypes.h:132
AkBusHierarchyFlags
Bus type bit field.
Definition: AkTypes.h:777
The effect on the node is rendered.
Definition: AkTypes.h:167
AkReal32 Distance() const
Get distance.
Definition: AkTypes.h:480
AkChannelMask uInputChannels
Channels to which the above position applies.
Definition: AkTypes.h:440
bool operator==(const WwiseObjectIDext &in_rOther) const
Definition: AkTypes.h:828
No spatialization.
Definition: AkTypes.h:771
AkMemPoolAttributes
Definition: AkTypes.h:598
Compressor/decompressor plug-in (allows support for custom audio file types).
Definition: AkTypes.h:804
AkCurveInterpolation
Curve interpolation types.
Definition: AkTypes.h:541
#define AK_CALLBACK(__TYPE__, __NAME__)
AkNodeType GetType()
Definition: AkTypes.h:833
AkUInt32 AkStateID
State ID.
Definition: AkTypes.h:63
AkInt16 AkPluginParamID
Source or effect plug-in parameter ID.
Definition: AkTypes.h:76
static const AkPriority AK_MAX_PRIORITY
Maximal priority value [0,100].
Definition: AkTypes.h:116
A routine needs to be executed on some CPU.
Definition: AkTypes.h:168
Type switch.
Definition: AkTypes.h:196
AkReal32 theta
Azimuth.
Definition: AkTypes.h:447
Public data structures for converted file format.
Definition: AkTypes.h:870
Source plug-in: creates sound by synthesis method (no input, just output).
Definition: AkTypes.h:805
AkUInt32 AkAuxBusID
Auxilliary bus ID.
Definition: AkTypes.h:75
AkGameObjectID m_uListenerID
Channels of the emitter that apply to this ray.
Definition: AkTypes.h:523
Left and right positioned 60 degrees apart (by default - see AK::SoundEngine::GetSpeakerAngles()).
Definition: AkTypes.h:763
uint16_t AkUInt16
Unsigned 16-bit integer.
Definition: AkTypes.h:77
AkReal32 occlusion
OcclusionLevel: [0.0f..1.0f].
Definition: AkTypes.h:432
int8_t AkInt8
Signed 8-bit integer.
Definition: AkTypes.h:89
Invalid switch type (used with the switch container)
Definition: AkTypes.h:161
WwiseObjectID(AkUniqueID in_ID, bool in_bIsBus)
Definition: AkTypes.h:856
int64_t AkIntPtr
Definition: AkTypes.h:82
An unexpected value causes the file to be invalid.
Definition: AkTypes.h:134
AkRamp()
Definition: AkTypes.h:574
static const AkFileID AK_INVALID_FILE_ID
Invalid file ID.
Definition: AkTypes.h:106
WwiseObjectID(AkUniqueID in_ID)
Definition: AkTypes.h:850
AkPluginType
Definition: AkTypes.h:801
static const AkChannelMask AK_INVALID_CHANNELMASK
Invalid channel mask.
Definition: AkTypes.h:110
Left and right positioned 180 degrees apart.
Definition: AkTypes.h:764
AkReal32 Occlusion() const
Get the occlusion factor for this emitter-listener pair.
Definition: AkTypes.h:491
AkReal32 fDistance
Emitter position.
Definition: AkTypes.h:511
The operation was successful.
Definition: AkTypes.h:129
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:346
AkAuxBusID auxBusID
Auxiliary bus ID.
Definition: AkTypes.h:567
Enable computation of peak metering.
Definition: AkTypes.h:790
Direct (main, dry) connection.
Definition: AkTypes.h:274
The memory manager should have been initialized at this point.
Definition: AkTypes.h:170
Only a running path can be paused.
Definition: AkTypes.h:149
The consumer does not need more.
Definition: AkTypes.h:154
AkUInt32 AkImageSourceID
Image Source ID.
Definition: AkTypes.h:93
Two Wwise objects share the same ID.
Definition: AkTypes.h:187
Something is not within bounds.
Definition: AkTypes.h:145
static const AkAuxBusID AK_INVALID_AUX_ID
Invalid auxiliary bus ID (or no Aux bus ID)
Definition: AkTypes.h:105
int16_t AkInt16
Signed 16-bit integer.
Definition: AkTypes.h:90
AkReal32 fSpread
Emitter-listener-pair-specific obstruction factor.
Definition: AkTypes.h:519
This path is not there.
Definition: AkTypes.h:152
A pointer to audio data was not aligned to the platform's required alignment (check AkTypes....
Definition: AkTypes.h:185
The StateGroup is not a valid channel.
Definition: AkTypes.h:141
Positioning information for a sound, with specified subset of its channels.
Definition: AkTypes.h:437
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:217
Channel configuration is not supported in the current execution context.
Definition: AkTypes.h:174
AkUInt32 AkStateGroupID
State group ID.
Definition: AkTypes.h:64
AkReal32 fControlValue
Value in the range [0.0f:1.0f], send level to auxiliary bus.
Definition: AkTypes.h:568
AkReal32 fPrev
Definition: AkTypes.h:578
Only a paused path can be resumed.
Definition: AkTypes.h:150
AKRESULT
Standard function call result.
Definition: AkTypes.h:126
The provider does not have available data.
Definition: AkTypes.h:156
static const AkPriority AK_MIN_PRIORITY
Minimal priority value [0,100].
Definition: AkTypes.h:115
AkReal32 r
Norm/distance.
Definition: AkTypes.h:446
uint8_t AkUInt8
Unsigned 8-bit integer.
Definition: AkTypes.h:76
static const AkDeviceID AK_INVALID_DEVICE_ID
Invalid streaming device ID.
Definition: AkTypes.h:107
AkUInt32 AkRtpcID
Real time parameter control ID.
Definition: AkTypes.h:83
SDK command is too large to fit in the command queue.
Definition: AkTypes.h:177
Plugin is not registered. Make sure to implement a AK::PluginRegistration class for it and use AK_STA...
Definition: AkTypes.h:184
AkInt16 AkCaptureType
Default value: capture type is short.
Definition: AkTypes.h:917
uint64_t AkUInt64
Unsigned 64-bit integer.
Definition: AkTypes.h:79
Reciprocal of sine curve.
Definition: AkTypes.h:552
AkReal32 fEmitterAngle
Distance between emitter and listener.
Definition: AkTypes.h:512
AkExternalSourceInfo(AkOSChar *in_pszFileName, AkUInt32 in_iExternalSrcCookie, AkCodecID in_idCodec)
Constructor: specify source by streaming file name.
Definition: AkTypes.h:245
AkUInt32 AkBankID
Run time bank ID.
Definition: AkTypes.h:85
Audiokinetic namespace.
The bank load failed because the bank is already loaded.
Definition: AkTypes.h:166
AkUInt8 AkDataInterleaveID
Data interleaved state ID.
Definition: AkTypes.h:80
AkOSChar * szFile
File path for the source. If not NULL, the source will be streaming from disk. Set pInMemory to NULL....
Definition: AkTypes.h:216
static const AkUInt32 AK_SOUNDBANK_VERSION
Version of the soundbank reader.
Definition: AkTypes.h:123
Detecting incompatibility between Custom platform of banks and custom platform of connected applicati...
Definition: AkTypes.h:179
AkListenerPosition position
Definition: AkTypes.h:533
AkIntPtr AkAtomicPtr
Signed platform sized integer - Atomic Declaration.
Definition: AkTypes.h:60
Effect plug-in: applies processing to audio data.
Definition: AkTypes.h:806
AkReal32 X
X Position.
Definition: AkTypes.h:298
The operation failed.
Definition: AkTypes.h:130
AkUInt32 AkChannelMask
Channel mask (similar to WAVE_FORMAT_EXTENSIBLE). Bit values are defined in AkSpeakerConfig....
Definition: AkTypes.h:90
Spatialization based on emitter position only.
Definition: AkTypes.h:772
AkUInt32 AkDeviceID
I/O device ID.
Definition: AkTypes.h:87
Listener information.
Definition: AkTypes.h:527
AkReal32 fGameDefAuxMixGain
Emitter-listener-pair-specific gain (due to distance and cone attenuation) for direct connections.
Definition: AkTypes.h:515
CreatePool will use AK::AllocHook() to allocate the memory block.
Definition: AkTypes.h:601
Block management type: Fixed-size blocks. Get blocks through GetBlock/ReleaseBlock API....
Definition: AkTypes.h:604
Analyzed envelope point.
Definition: AkTypes.h:874
Configured audio settings.
Definition: AkTypes.h:201
AkUInt32 AkCodecID
Codec plug-in ID.
Definition: AkTypes.h:74
The ID was not found.
Definition: AkTypes.h:138
MultiPositionType
Definition: AkTypes.h:734
AkUInt32 AkAcousticTextureID
Acoustic Texture ID.
Definition: AkTypes.h:92
Global Extension plug-in: (e.g. Spatial Audio, Interactive Music)
Definition: AkTypes.h:811
AkReal32 AkRtpcValue
Real time parameter control value.
Definition: AkTypes.h:84
AkVector operator+(const AkVector &b) const
Definition: AkTypes.h:282
Auxiliary bus sends information per game object per given auxiliary bus.
Definition: AkTypes.h:564
Volume ramp specified by end points "previous" and "next".
Definition: AkTypes.h:572
Source format not known yet.
Definition: AkTypes.h:162
The stream is already connected to another node.
Definition: AkTypes.h:133
AkMeteringFlags
Metering flags. Used for specifying bus metering, through AK::SoundEngine::RegisterBusVolumeCallback(...
Definition: AkTypes.h:787
Stuff in vertices before trying to start it.
Definition: AkTypes.h:148
The executed routine has finished its execution.
Definition: AkTypes.h:169
AkUInt32 AkUniqueID
Unique 32-bit ID.
Definition: AkTypes.h:62
AkRamp(AkReal32 in_fPrev, AkReal32 in_fNext)
Definition: AkTypes.h:575
The requested action was cancelled (not an error).
Definition: AkTypes.h:158
const AkVector & OrientationTop() const
Get orientation top vector.
Definition: AkTypes.h:324
AkUniqueID id
Definition: AkTypes.h:838
AkExternalSourceInfo(void *in_pInMemory, AkUInt32 in_uiMemorySize, AkUInt32 in_iExternalSrcCookie, AkCodecID in_idCodec)
Constructor: specify source by memory.
Definition: AkTypes.h:231
The language is invalid (applies to the Low-Level I/O).
Definition: AkTypes.h:143
This path is already there.
Definition: AkTypes.h:151
Mixer plug-in: mix voices at the bus level.
Definition: AkTypes.h:809
IAkSoftwareCodec *(* AkCreateFileSourceCallback)(void *in_pCtx)
Registered file source creation function prototype.
Definition: AkTypes.h:716
const AkVector & OrientationFront() const
Get orientation front vector.
Definition: AkTypes.h:318
3D spatialization is computed from the emitter game object position, translated by user-defined autom...
Definition: AkTypes.h:756
int32_t AkInt32
Signed 32-bit integer.
Definition: AkTypes.h:91
AkUInt16 uAttenuation
Position of this point in samples at the source rate.
Definition: AkTypes.h:877
Emitter-listener pair: Positioning data pertaining to a single pair of emitter and listener.
Definition: AkTypes.h:457
AkReal32 EmitterAngle() const
Definition: AkTypes.h:484
AkInt8 AkPriority
Priority.
Definition: AkTypes.h:77
AkUInt32 AkAtomicU32
Unsigned 32-bit integer - Atomic Declaration.
Definition: AkTypes.h:59
The specified device ID does not match with any of the output devices that the sound engine is curren...
Definition: AkTypes.h:189
AkUInt32 iExternalSrcCookie
Cookie identifying the source, given by hashing the name of the source given in the project....
Definition: AkTypes.h:214
void SetOrientation(const AkVector &in_orientationFront, const AkVector &in_orientationTop)
Set orientation. Orientation front and top should be orthogonal and normalized.
Definition: AkTypes.h:390
AkUInt16 AkDataTypeID
Data sample type ID.
Definition: AkTypes.h:79
Simulate multiple sources in one sound playing, adding volumes. For instance, all the torches on your...
Definition: AkTypes.h:737
static const AkPriority AK_DEFAULT_PRIORITY
Default sound / I/O priority.
Definition: AkTypes.h:114
Constant ( not valid for fading values )
Definition: AkTypes.h:555
AkReal32 fObstruction
Emitter-listener-pair-specific occlusion factor.
Definition: AkTypes.h:518
Specified ID doesn't match a valid hardware device: either the device doesn't exist or is disabled.
Definition: AkTypes.h:165
AkRamp & operator *=(const AkRamp &in_rRhs)
Definition: AkTypes.h:576
Block management type mask.
Definition: AkTypes.h:605
AkReal32 AkVolumeValue
Volume value( also apply to LFE )
Definition: AkTypes.h:69
AkUInt64 AkGameObjectID
Game object ID.
Definition: AkTypes.h:70
AkGameObjectID ListenerID() const
Get listener ID associated with the emitter-listener pair.
Definition: AkTypes.h:508
Enable computation of K-weighted power metering (used as a basis for computing loudness,...
Definition: AkTypes.h:794
Inversed S Curve.
Definition: AkTypes.h:548
File not found.
Definition: AkTypes.h:164
Error while reading a bank.
Definition: AkTypes.h:160
AkReal32 phi
Elevation.
Definition: AkTypes.h:453
AkReal32 fDryMixGain
Angle between position vector and listener orientation.
Definition: AkTypes.h:514
The consumer needs more.
Definition: AkTypes.h:153
void __cdecl FreeHook(void *in_pMemAddress)
AkReal32 Obstruction() const
Get the obstruction factor for this emitter-listener pair.
Definition: AkTypes.h:494
This feature is not implemented.
Definition: AkTypes.h:128
AkFileID idFile
File ID. If not zero, the source will be streaming from disk. This ID can be anything....
Definition: AkTypes.h:219
AkReal32 AkLPFType
Low-pass filter type.
Definition: AkTypes.h:71
Flag is set to indicate a master bus (may be used in combination with other flags).
Definition: AkTypes.h:781
CreatePool will not allocate memory. You need to allocate the buffer yourself.
Definition: AkTypes.h:600
Block allocation type mask.
Definition: AkTypes.h:602
AkUInt32 AkArgumentValueID
Argument value ID.
Definition: AkTypes.h:89
AkReal32 fNext
Definition: AkTypes.h:579
Linear (Default)
Definition: AkTypes.h:549
AkInt32 AkAtomic32
Signed 32-bit integer - Atomic Declaration.
Definition: AkTypes.h:57
The item could not be added because it was already in the list.
Definition: AkTypes.h:146
The InstanceID is invalid.
Definition: AkTypes.h:139
It is not possible to add itself as its own child.
Definition: AkTypes.h:144
Incompatible Audio device.
Definition: AkTypes.h:186
The file header is too large.
Definition: AkTypes.h:135
AkRamp operator *(const AkRamp &in_rLhs, const AkRamp &in_rRhs)
Definition: AkTypes.h:581
IAkSoftwareCodec *(* AkCreateBankSourceCallback)(void *in_pCtx)
Registered bank source node creation function prototype.
Definition: AkTypes.h:718
Used for normal sounds, not expected to pass to AK::SoundEngine::SetMultiplePosition() (if done,...
Definition: AkTypes.h:736
Unknown/invalid plug-in type.
Definition: AkTypes.h:803
AkReal32 fOcclusion
Emitter-listener-pair-specific gain (due to distance and cone attenuation) for user-defined send conn...
Definition: AkTypes.h:517
AkUInt64 AkOutputDeviceID
Audio Output device ID.
Definition: AkTypes.h:94
Spatialization based on both emitter position and emitter orientation.
Definition: AkTypes.h:773
Enable computation of true peak metering (most CPU and memory intensive).
Definition: AkTypes.h:791
Obstruction/occlusion pair for a position.
Definition: AkTypes.h:430
int64_t AkInt64
Signed 64-bit integer.
Definition: AkTypes.h:92
static const AkBankID AK_INVALID_BANK_ID
Invalid bank ID.
Definition: AkTypes.h:108
No more data is available from the source.
Definition: AkTypes.h:140
static const AkPlayingID AK_INVALID_PLAYING_ID
Invalid playing ID.
Definition: AkTypes.h:101
AkUInt32 AkModulatorID
Modulator ID.
Definition: AkTypes.h:91
AkChannelMask uEmitterChannelMask
Emitter-listener-pair-specific focus.
Definition: AkTypes.h:521
The maximum was reached.
Definition: AkTypes.h:136
const AkVector & Position() const
Get position vector.
Definition: AkTypes.h:312
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:334
Ak3DPositionType
3D position type: defines what acts as the emitter position for computing spatialization against the ...
Definition: AkTypes.h:753
AkUInt32 AkPlayingID
Playing ID.
Definition: AkTypes.h:65
The bank version is not compatible with the current bank reader.
Definition: AkTypes.h:163
AkUInt32 AkSwitchStateID
Switch ID.
Definition: AkTypes.h:82
AkUInt32 uNumSamplesPerFrame
Number of samples per audio frame (256, 512, 1024 or 2048).
Definition: AkTypes.h:203
AkReal32 obstruction
ObstructionLevel: [0.0f..1.0f].
Definition: AkTypes.h:433
AkReal32 ListenerAngle() const
Definition: AkTypes.h:488
static const AkUInt32 AK_DEFAULT_SWITCH_STATE
Switch selected if no switch has been set yet.
Definition: AkTypes.h:102
3D spatialization is computed from the listener game object position, translated by user-defined auto...
Definition: AkTypes.h:757
void *__cdecl AllocHook(size_t in_size)
Balance-Fade-Height: Traditional "box" or "car"-like panner.
Definition: AkTypes.h:748
AkTransform AkSoundPosition
Positioning information for a sound.
Definition: AkTypes.h:424
AkUInt32 AkPluginID
Source or effect plug-in ID.
Definition: AkTypes.h:73
AkUInt32 AkFileID
Integer-type file identifier.
Definition: AkTypes.h:86
Sound was Not Allowed to play.
Definition: AkTypes.h:176
No panning: route to matching channels between input and output.
Definition: AkTypes.h:747
static const AkMemPoolId AK_INVALID_POOL_ID
Invalid pool ID.
Definition: AkTypes.h:103
Position and orientation of game objects.
Definition: AkTypes.h:304
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:400
AkReal32 GetGainForConnectionType(AkConnectionType in_eType) const
Get the emitter-listener-pair-specific gain (due to distance and cone attenuation),...
Definition: AkTypes.h:497
WwiseObjectID()
Definition: AkTypes.h:844
static const AkRtpcID AK_INVALID_RTPC_ID
Invalid RTPC ID.
Definition: AkTypes.h:100
The stream manager should have been initialized at this point.
Definition: AkTypes.h:171
Spherical coordinates.
Definition: AkTypes.h:451
AkReal32 fFocus
Emitter-listener-pair-specific spread.
Definition: AkTypes.h:520
This path is not known.
Definition: AkTypes.h:147
static const AkUInt32 AK_INVALID_OUTPUT_DEVICE_ID
Invalid Device ID.
Definition: AkTypes.h:111
static const AkArgumentValueID AK_FALLBACK_ARGUMENTVALUE_ID
Fallback argument value ID.
Definition: AkTypes.h:109
static const AkGameObjectID AK_INVALID_GAME_OBJECT
Invalid game object (may also mean all game objects)
Definition: AkTypes.h:98
AkReal32 Z
Z Position.
Definition: AkTypes.h:300
AkUInt32 uPosition
Definition: AkTypes.h:876
3D vector.
Definition: AkTypes.h:280
Flag is set to indicate the secondary bus hierarchy.
Definition: AkTypes.h:780
Polar coordinates.
Definition: AkTypes.h:444
bool bIsBus
Definition: AkTypes.h:839
AkTransform position
Emitter position.
Definition: AkTypes.h:439
3D spatialization is computed directly from the emitter game object position.
Definition: AkTypes.h:755
Memory error.
Definition: AkTypes.h:157
bool bSpatialized
Listener scaling factor (see AK::SoundEngine::SetListenerScalingFactor()).
Definition: AkTypes.h:535
Plugin DLL could not be loaded, either because it is not found or one dependency is missing.
Definition: AkTypes.h:180
AkTransform emitter
Definition: AkTypes.h:510
AkPanningRule
Headphone / speakers panning rules.
Definition: AkTypes.h:761
uint32_t AkUInt32
Unsigned 32-bit integer.
Definition: AkTypes.h:78
AkUInt16 AkDataCompID
Data compression format ID.
Definition: AkTypes.h:78
The machine does not support SSE instructions (required on PC).
Definition: AkTypes.h:172
A play request was rejected due to the MIDI filter parameters.
Definition: AkTypes.h:178
AkUInt32 AkTriggerID
Trigger ID.
Definition: AkTypes.h:88
static const AkUniqueID AK_INVALID_UNIQUE_ID
Invalid unique 32-bit ID.
Definition: AkTypes.h:99
AkListener()
Definition: AkTypes.h:529
Enable computation of RMS metering.
Definition: AkTypes.h:792
No Java VM provided in AkInitSettings.
Definition: AkTypes.h:182
AkExternalSourceInfo()
Default constructor.
Definition: AkTypes.h:222
Connection by a user-defined send.
Definition: AkTypes.h:276
Trying to load a bank using an ID which is not defined.
Definition: AkTypes.h:159
void SetPosition(AkReal32 in_x, AkReal32 in_y, AkReal32 in_z)
Set position.
Definition: AkTypes.h:378
~AkEmitterListenerPair()
Destructor.
Definition: AkTypes.h:477
The operation succeeded partially.
Definition: AkTypes.h:131
The Init bank was not loaded yet, the sound engine isn't completely ready yet.
Definition: AkTypes.h:188
AkReal32 fListenerAngle
Angle between position vector and emitter orientation.
Definition: AkTypes.h:513
The ID is invalid.
Definition: AkTypes.h:137
AkUInt16 AkPortNumber
Port number.
Definition: AkTypes.h:67
static const AkPriority AK_DEFAULT_BANK_IO_PRIORITY
Default bank load I/O priority.
Definition: AkTypes.h:119
float AkReal32
32-bit floating point
Definition: AkTypes.h:96
AkSpeakerPanningType
Speaker panning type: type of panning logic when object is not 3D spatialized (i.e....
Definition: AkTypes.h:745
Type state.
Definition: AkTypes.h:197
Flag is set to indicate the primary bus hierarchy.
Definition: AkTypes.h:779
Ak3DSpatializationMode
3D spatialization mode.
Definition: AkTypes.h:769
The system is busy and could not process the request.
Definition: AkTypes.h:173
AkReal32 fScalingFactor
Listener position (see AK::SoundEngine::SetPosition()).
Definition: AkTypes.h:534
AkUInt32 uiMemorySize
Size of the data pointed by pInMemory.
Definition: AkTypes.h:218
char AkOSChar
Generic character string.
Definition: AkTypes.h:94
Update this value to reflect last curve available for fades.
Definition: AkTypes.h:554
void Zero()
Definition: AkTypes.h:293
AkInt32 AkMemPoolId
Memory pool ID.
Definition: AkTypes.h:72
AkGroupType
Game sync group type.
Definition: AkTypes.h:193
The child already has a parent.
Definition: AkTypes.h:142
AkUInt32 uNumSamplesPerSecond
Number of samples per second.
Definition: AkTypes.h:204
Plugin DLL search path could not be found.
Definition: AkTypes.h:181
static const AkPluginID AK_INVALID_PLUGINID
Invalid FX ID.
Definition: AkTypes.h:97
AkReal32 AkPitchValue
Pitch value.
Definition: AkTypes.h:68
AkInt64 AkAtomic64
Signed 64-bit integer - Atomic Declaration.
Definition: AkTypes.h:58
WwiseObjectID(AkUniqueID in_ID, AkNodeType in_eNodeType)
Definition: AkTypes.h:862
AkNodeType
Definition: AkTypes.h:818
AkInt32 AkTimeMs
Time in ms.
Definition: AkTypes.h:66
AkEmitterListenerPair()
Constructor.
Definition: AkTypes.h:461
AkReal32 fUserDefAuxMixGain
Emitter-listener-pair-specific gain (due to distance and cone attenuation) for game-defined send conn...
Definition: AkTypes.h:516
AkTransform AkListenerPosition
Positioning information for a listener.
Definition: AkTypes.h:427
Plugin media is not available for effect.
Definition: AkTypes.h:175
AkReal32 Y
Y Position.
Definition: AkTypes.h:299
AkGameObjectID listenerID
Game object ID of the listener associated with this send. Use AK_INVALID_GAME_OBJECT as a wildcard to...
Definition: AkTypes.h:566
static const AkReal32 AK_DEFAULT_BANK_THROUGHPUT
Default bank load throughput (1 Mb/ms)
Definition: AkTypes.h:120
Plug-in type mask is 4 bits.
Definition: AkTypes.h:812
OpenSL returned an error. Check error log for more details.
Definition: AkTypes.h:183
AkExternalSourceInfo(AkFileID in_idFile, AkUInt32 in_iExternalSrcCookie, AkCodecID in_idCodec)
Constructor: specify source by streaming file ID.
Definition: AkTypes.h:258
void SetPosition(const AkVector &in_position)
Set position.
Definition: AkTypes.h:370
The provider has available data.
Definition: AkTypes.h:155
Simulate one sound coming from multiple directions. Useful for repositionning sounds based on wall op...
Definition: AkTypes.h:738
AkCodecID idCodec
Codec ID for the file. One of the audio formats defined in AkTypes.h (AKCODECID_XXX)
Definition: AkTypes.h:215
No metering.
Definition: AkTypes.h:789
AkUInt32 AkSwitchGroupID
Switch group ID.
Definition: AkTypes.h:81