The following sections list and describe the changes to Wwise between version 2023.1.8 and version 2024.1.
Platform-specific information can be found here:
For earlier versions, please refer to Previous Release Notes.
New Features
- WG-46778 (WAAPI) Added new accessors for WAQL to access audio file information.
- WG-54197 The amount of memory for media and SoundBanks that is provided to Wwise by a game engine integration but not directly managed by Wwise, such as with AK::SoundEngine::LoadBankMemoryView and AK::SoundEngine::SetMedia, is now listed in the Performance Monitor panel. Also, media items provided by AK::SoundEngine::SetMedia now display their SoundBank Name as "From Integration/SetMedia", instead of "Prepared".
- WG-59905 In the Game Object 3D Viewer, added an arrow to show the front of portals.
- WG-61638 (Spatial Audio) Parameter smoothing, a new experimental feature has been added to the Acoustics Engine. Parameter smoothing applies an exponential moving average smoothing function to the parameters of the diffraction paths output from the acoustics engine, before being passed to the sound engine for rendering. These parameters include diffraction, transmission, occlusion, and obstruction, as well as the virtual positioning and gain. Smoothing allows you to save CPU by using more conservative settings for other Spatial Audio parameters. See AkSpatialAudioInitSettings::fSmoothingConstantMs.
- WG-64733 Dark theme is now darker with more consistent styles selection and focused controls.
- WG-64979 (WAAPI) Added
ak.wwise.core.profiler.getMeters
, ak.wwise.core.profiler.registerMeter
, and ak.wwise.core.profiler.unregisterMeter
to retrieve meter data from the Profiler.
- WG-67903 Added Duration Min and Duration Max as new columns in the List View.
- WG-68180 In the Attenuation Editor, added a list of objects using the attenuation along with their distance scaling and diffraction warping.
- WG-68263 The Attenuation Editor now shows the warped curves.
- WG-68690 Updated Dark theme with new colors.
- WG-68997 (Spatial Audio) Portal Occlusion is applied to early reflections when using the simplified Reflect workflow.
- WG-69032 Z-axis is now supported with the Balance-Fade panner for 7.1.4 sounds and busses.
- WG-69048 (Spatial Audio) Added options for geometric transmission loss to be additive or multiplicative.
- WG-69269 Rewrote Wwise's default memory allocator systems to deliver improved memory usage, configuration, and profiling for titles. The new
AkMemoryArena
is now the default memory allocator, instead of rpmalloc, offering memory usage and fragmentation that is on par with most general-purpose memory allocators such as TLSF, while still allowing dynamic scalability of resources through on-demand reservation of memory. In many cases this reduces the memory used by approximately 10% compared to the previous default allocator. The watermark for the memory reserved is also slightly improved compared to when AkMemSettings::uVMSpanCount
was set to AkSpanCount_Small
, and significantly improved compared to when AkMemSettings::uVMSpanCount
was set to AkSpanCount_Huge
, while needing very few calls to the external memory allocation hook. The previous callbacks for providing memory have also been updated from AkMemSettings::pfAllocVM
and AkMemSettings::pfFreeVM
to AkMemoryArenaSettings::fnMemAllocSpan
and AkMemoryArenaSettings::fnMemFreeSpan
, which are similar, but are simpler to implement because they do not have strict requirements on alignment of the provided memory and only need to allocate and free an underlying span of memory, without thinking about separate mappings of physical and virtual memory. For example, the default implementations of AkMemoryArenaSettings::fnMemAllocSpan
and AkMemoryArenaSettings::fnMemFreeSpan
on Windows and POSIX-based platforms now simply call std::malloc
and std::free
to acquire and release any required memory, as opposed to mmap
and munmap
. Existing callbacks for individual memory allocation and free operations are still available and unchanged, but we recommend trying the new default memory allocator, due to the extended profiling information and configuration that is now available.
- WG-69272 Added a new view to the Advanced Profiler to help visualize and understand the status and effectiveness of AkMemoryArenas over the course of the Sound Engine runtime. This view includes high-level stats of each active AkMemoryArena, such as the total memory used and reserved, and the largest free space available. It also includes details for each span that has been allocated for use by AkMemoryArenas, including detailed information on the state of the memory fragmentation, and userdata values provided to each call to the
AkMemoryArenaSettings::fnMemAllocSpan
callback.
- WG-69432 (Spatial Audio) Added a flag for geometry instances to not be removed by portals.
- WG-69711 Added a new secondary editor to present the bus status for busses.
- WG-69861 (Spatial Audio) Added an experimental feature to balance CPU usage of reflection calculations.
AkSpatialAudioInitSettings::uMaxReflectionPaths
sets the maximum number of reflection paths that are validated. Using a heuristic calculation, the system sorts all potential paths, and then determines which are likely to be the most prominent. After AkSpatialAudioInitSettings::uMaxReflectionPaths
are found globally among all emitters, no more paths are calculated.
- WG-69902 The
AK::SoundEngine::PrepareBus
function was added to the Wwise runtime API. You can use this function to manage media loading and unloading for effect plug-ins placed on a bus without the need to package the media in a user-defined SoundBank.
- WG-70275 (WAAPI) Added WAAPI functions to edit blend tracks and blend track assignments. The new functions are prefixed with
ak.wwise.core.blendContainer
. Added WAAPI blendTracks
accessor for function ak.wwise.core.object.get
.
- WG-70355 (WAAPI) Added the
panner
accessor in WAQL to retrieve the panner object from the positioning.
- WG-70700 Added new warping values in the positioning parameters of each sound. These warping values can emphasize and de-emphasize the obstruction, occlusion, diffraction, and transmission curves of the sound's attenuation shareset.
- WG-70758 WAV files in RF64 or BW64 format can now be imported.
- WG-70877 Added the new command
OpenRecycled
for ak_wwise_ui_commands_execute
. The command opens an object without creating a new window tab.
- WG-70879 (Spatial Audio) It is now possible to have sound diffract more than 180 degrees around edges. A new initialization setting has been added. With
AkSpatialAudioInitSettings::fMaxDiffractionAngleDegrees
you can specify the largest possible diffraction angle, beyond which paths are not computed and are inaudible.
- WG-70988 Exposed Z control for Balances-Fade view.
- WG-71394 Made material filtering faster by replacing its four band processing. This was done by piggy-backing on a single dual shelf filter. This takes four times less CPU than previous material filtering, at the cost of a little accuracy.
- WG-71455 Import Audio Files is now available from the Sources button in the Contents Editor.
- WG-71582 Added a new property, Distance Scaling %, to the Positioning tab. This property can scale the attenuation's max distance in Wwise Authoring and by RTPC. Additionally, the Attenuation Editor's UI was improved to include the objects using the attenuation and their Distance Scaling % values. Selecting an object and changing the Distance Scaling % in the Attenuation Editor can show a preview of the scaled curve in the graph. The Attenuation Editor UI also had other minor changes such as categorizing the list of curves and improvement of the UI code. In Reflect, image sources using an attenuation with Distance Scaling will have their distance to the listener updated accordingly. In the Reflect Effect Editor, the change will be visible in the Distance column of the image source list and in the flag positions in the graph.
- WG-71584 Added new diffraction and transmission loss project curves that are independent from obstruction and occlusion.
- WG-71591 A new high shelf filter in Wwise Reflect, controllable via custom curves for distance and diffraction, allows the modeling of these phenomena with a more gentle frequency decay.
- WG-71657 Exposed the function
SetMaxReflectionPaths
to set the maximum number of reflection paths.
- WG-71836 Added experimental support for ADM WAV file import.
- WG-71839 The Switch Container has a new editor for associating children to switches.
- WG-71956 (WAAPI) Added new functions
ak.wwise.core.audio.convert
and ak.wwise.core.audio.setConversionPlugin
.
- WG-72088 Removed
BatchCancel()
from the AK::IAkLowLevelIOHook
interface.
- WG-72342 The PCM codec now supports 24-bit audio. The new Max Bit Depth option enables the choice of converting to 16-bit (default), or preserving 24-bit precision.
- WG-72569 It is now possible to attach an RTPC to the System Output Setting's Mix Behavior parameter.
- WG-73267 (Spatial Audio) New Reflect preset "Physically-Based" uses Reflect's shelf filter to approximate lifelike diffraction.
API Changes
- WG-66144
AK::Query::GetRTPCValue
is not blocking anymore.
- WG-68749 Removed deprecated
UnsetMedia
function. Use TryUnsetMedia
instead.
- WG-68958 Added a Bookmark Allocator so the sound engine and plug-ins can create short-lived memory allocations against a pre-allocated pool of memory. Bookmark Allocator allocations have a separate MemID when measuring memory in the Advanced Profiler. A new plug-in service,
PluginServiceType_TempAlloc
is now available for plug-ins to be able to leverage the Temp Alloc and Bookmark Allocator memory allocation systems. Public functions and structures related to Temp Alloc and Bookmark Allocator have been moved from AkMemoryMgr.h
to a new header file, AkTempAllocDefs.h
, so some file inclusions might have to be updated.
- WG-69350 The legacy Wwise Authoring plug-in API has been removed. For details on how to migrate a plug-in to the new API introduced in version 21.1, see Migrating a pre-2021.1 Authoring Plug-in.
- WG-69426 Removed the
–no-wwise-dat
command-line argument. The wwise.dat
file is not generated anymore.
- WG-69446
AkAudioObject
and AkAudioObjects
have been moved from AkCommonDefs.h
to AkAudioObject.h
. Plug-ins that use these types might require updates to their included headers. Other indirect header includes of IAkPluginMemAlloc.h
, AkArray.h
, and AkString.h
were removed from AkCommonDefs.h
as well, and might also have to be updated.
- WG-70383 A new version of the
AK::Wwise::Plugin::PropertySet
service was added and includes AK::Wwise::Plugin::V2::PropertySet::OpenBraces
, AK::Wwise::Plugin::V2::PropertySet::CloseBraces
, and AK::Wwise::Plugin::V2::PropertySet::GetOpenedBraces
. No functions from version 1 were removed, so the API is fully compatible with the previous version. Although no changes were made to ak_wwise_plugin_host_object_store_v1, the AK::Wwise::Plugin::ObjectStore
C++ wrapper has been updated to work with either version.
- WG-72279 The XML files for persisting the Wwise Authoring layouts were updated to a new format.
- WG-72574 Spatial Audio: Deprecated
AkGeometryInstanceParams::RoomID
has been removed.
- WG-72735 The configuration operation to disable the device heap for the default memory allocator,
AkMemSettings::bEnableSeparateDeviceHeap
, has been removed. The Device AkMemoryArena
can now be disabled by setting AkMemoryArenaSettings::fnMemAllocSpan
and AkMemoryArenaSettings::fnMemFreeSpan
to nullptr
.
- WG-72738 The configuration operation for the global memory limit for the default memory allocator,
AkMemSettings::uMemAllocationSizeLimit
has been removed. Instead, each AkMemoryArena now has its own reservation limit, AkMemoryArenaSettings::uMemReservedLimit
.
- WG-72875 Removed the
AK_PERF_RECORDING
macros.
- WG-73314 Added new SDK function
AK::SoundEngine::ResetRTPCValueByPlayingID
.
- WG-73895 New
AkInitSettings::bOfflineRendering
member allows enabling offline rendering at initialization time.
- WG-74114 (Spatial Audio) Added a new API function,
AK::SpatialAudio::SetMaxDiffractionPaths
.
- WG-74230 Renamed
SetMaximumReflectionPaths
to SetMaxGlobalReflectionPaths
. And renamed uMaxReflectionPaths
to uMaxGlobalReflectionPaths
.
- WG-74496 Added
RegisterAnonymousConfig
and UnregisterAnonymousConfig
methods on the IAkMixerPluginContext
interface to enable custom speaker configurations in ComputePositioning
.
- WG-74721 (Spatial Audio) Changed
AkRoomParams::RoomPriority
from an AkUInt32 to an AkReal32.
Behavior Changes
- WG-61023
PrepareEvent()
now prepares the Plug-in media of objects in the Actor-Mixer and Interactive Music hierarchies.
- WG-62679 Changed camera navigation controls in the Game Object 3D Viewer. Perspective cameras now support first-person navigation with WSAD or arrow keys. As such, the first-person camera has been deprecated along with listener cameras.
- WG-66102 Panning Ambisonic sources to multichannel destinations, and panning of multichannel sources to Ambisonic destinations, have undergone significant corrections to their loudness, in order to achieve better consistency across a variety of mixing scenarios. For example, panning a 5th-order Ambisonic signal to a 7.1.4 surround bus used to be 9db quieter than panning a 1st-order Ambisonic source to the same 7.1.4 surround bus. Now the loudness for both scenarios should be similar. Some corrections to overall mixes may be required, but in many cases this should be a removal of corrections that were introduced in order to account for the previous error. This change also includes a modification to how ambisonics are mixed to stereo outputs, to improve the consistency with how Ambisonics are panned to other channel configs.
- WG-68207 Looping of ADPCM files is now sample-accurate.
- WG-69416 Added the error message "Number of simultaneous active playback critically high" when the sound engine detects that some continuous playbacks are stacking.
- WG-71672 Play directly now only works on sound objects when not connected to a remote sound engine.
- WG-72072 In object-based configurations, the bus metering callback is now called once for the entire bus if
AK_EnableBusMeter_KPower
is set, and once per Audio Object for other AkMeteringFlags
values.
- WG-72312 Converting media to a sample rate above 48 kHz is now supported. The Max Sample Rate setting of "None" is migrated to "48000", which is the new default. Applying Max Sample Rate of "None" now results in higher sample rates being preserved when targeting PCM and ADPCM codecs.
- WG-72341 Added a new fade time parameter to Reflect, allowing image sources to fade in and out when they are added dynamically. Likewise, when an image source is removed, it fades out.
- WG-72540 Renamed the Auro 9.1 channel configuration to 5.1.4.
Performance Changes
- WG-61061 Updated the following Effects or Sources to use the Bookmark Allocator: AK Convolution Reverb, Flanger, Guitar Distortion, Harmonizer, Pitch Shifter, RoomVerb, Time Stretch, Stereo Delay, SoundSeed Air Wind, SoundSeed Air Woosh, and Synth One. This eliminates many temporary allocations that these plug-ins incurred during every tick of their execution.
- WG-63811
AK BusTask
jobs for buses that are processing without any input connections from a playing voice, such as handling the tail of a reverb effect, no longer have any dependencies on the CAkLEngine::PostRunVpls
job before starting execution. This will allow for Job Worker Functions to continue running after the AK SwVoice
and AK HwVoice
jobs complete, which should reduce the overall wall-clock time of the sound engine tick.
- WG-67233 Converted the Gain Effect from an In-Place Effect to an In-Place Object Processor. This means it is now instantiated only once per Audio Objects bus, as opposed to once per Audio Object. Also, the processing now only affects the cumulative gain of the Audio Object when possible, instead of applying the gain to the object signal directly. This saves some memory and can significantly improve performance of the effect when used on Audio Objects buses.
- WG-70681 WAQL compilation is now cached. Doing the same query multiple times is faster.
- WG-71033 Improved the performance of List Views when displaying queries with high row and column counts.
- WG-71688 Optimized the computation of reflection paths by validating the n best potential paths when the paths sorting feature is enabled.
Miscellaneous Changes
- WG-63289 Improved error logging for "Failed Creating Source" errors in the Capture Log.
- WG-71495 Upgraded Visual Studio 2022 version to 17.8.8.
- WG-72863 Moved
AkPlacementNew
from AkObject.h
to a new file, AkPlacementNew.h
. Plug-ins using these types may need to update their included headers.
- WG-74781 Updated EULA for McDSP FutzBox and ML1 plug-ins.
Bug Fixes
- WG-51253 Fixed: The Attenuation Editor does not show the affect of the
AK::SoundEngine::SetScalingFactor
API.
- WG-58722 Fixed: Possible freeze when deleting many objects with Multi Editor open.
- WG-59490 Fixed: It is possible to configure the severity of InvalidEventAction from the Project Logs Settings.
- WG-61985 Fixed: Room names are not shown correctly in the Game Object 3D Viewer.
- WG-64157 Fixed: A new SoundBank created using the New SoundBank button is not created under the selected Work Unit.
- WG-67207 Fixed: Playing a descendant object of a blend container applies the container's blend tracks to the played sounds.
- WG-68184 Fixed: Possible to modify, copy paste, or remove effects from an override when an object is not set to override parent.
- WG-68401 Fixed: Switch Containers have an obsolete property that is no longer configurable from Wwise.
- WG-68535 Fixed: (Mac Authoring) Game Object Profiler's 3D view is not clipped properly when dragging splitters past the minimum layout size.
- WG-68629 Fixed: Crash when sound engine errors are printed in Unity.
- WG-68658 Fixed: WAAPI notification
ak.wwise.core.transport.stateChanged
not always sent when playback stopped.
- WG-68681 Fixed: Sometimes possible to use a floating view when a modal dialog is shown.
- WG-68686 Fixed: Possible crash when multiple Wwise Recorder plug-ins writing to the same file.
- WG-69259 Fixed: Right-click on the RTPC icon for checkboxes doesn't show the Add RTPC shortcut menu.
- WG-69327 Fixed: Some default properties are unnecessarily saved in SoundBanks.
- WG-69981 Fixed: Deleted objects still playing after connecting to a game with a modified project.
- WG-70117 Fixed: Memory leak in
AkVariantBase.h.
- WG-71103 Fixed: (Spatial Audio) Distance is incorrectly calculated for parents of Reverb Zones.
- WG-71220 Fixed: Incorrect slider display when moving the mouse over the Simulation Value of a Game Parameter after the range has been changed.
- WG-71278 Fixed: Channels jump when zooming into a source WAV display with Film ordering override.
- WG-71551 Fixed: Meter initialization slows down Wwise loading.
- WG-71885 Fixed: Assert/Crash in debug Wwise Authoring after warping a curve with a sine segment in the Reflect Effect Editor.
- WG-71964 Fixed: Possible sluggishness when dragging the entry cue in the Music Segment Editor.
- WG-72029 Fixed: Failure to properly clean up prepared events when a memory allocation failure occurs during a ClearBanks operation.
- WG-72119 Fixed: Incorrect "Ref'd Mem" values for Streaming Devices after project reload.
- WG-72372 Fixed: (Spatial Audio) Virtual positions are still visible when diffraction paths are hidden in the Game Object 3D Viewer.
- WG-72535 Fixed: Menu bar might not render correctly after changing the application display to fullscreen.
- WG-72664 Fixed: Selection works incorrectly when adding, moving, and removing objects in the playlist in a sequence container.
- WG-72724 Fixed: Incorrect display after resizing an Audio Object List.
- WG-72829 Fixed: The Blend Track Editor scrollbar is not always updated correctly.
- WG-72893 Fixed: Blend Track Editor cannot be resized below a certain size.
- WG-72918 Fixed: (Spatial Audio) Calling PostEvent on a sound with a Reflections Aux Send, and then immediately calling
UnregisterGameObject
results in no reflections being heard.
- WG-73143 Fixed: Project Explorer trackpad scrolling speed is too fast.
- WG-73146 Fixed: Unnecessary warning when attenuation is disabled and no attenuation object is selected.
- WG-73208 Fixed: Crash when passing a nullptr to
IAkMap::GetNextAssoc
.
- WG-73256 Fixed: Profiler Settings reset between major versions of Wwise.
- WG-73299 Fixed: Game Parameter Simulation Value of 0 is reset to default after project reload.
- WG-73351 Fixed: "ASSERT: Invalid listener ID" when playing sounds that use Reflect from Authoring.
- WG-73372 Fixed: With Play Originals enabled, and with a very small Trim Start value, sound playback might play from the beginning instead of the specified value.
- WG-73382 Fixed: The Fade-in and Continue to play properties of a Switch Container's children are not properly updated when shown in List View upon changing the Play Mode of the Switch Container.
- WG-73516 Fixed: Slider and faders sometimes change look on mouse over.
- WG-73637 Fixed: Stall in Wwise Authoring when editing the columns of a List View with many rows.
- WG-73713 Fixed: Possible stack overflow after calling
PrepareEvent
for a music hierarchy with transition segments.
- WG-73727 Fixed: Stall in Wwise Authoring when changing inclusion on multiple elements at once.
- WG-73776 Fixed: Possible crashes from a mismatch in calls to prepare functions (
PrepareEvent
, PrepareGameSync
, PrepareBank
, LoadBank
) and their counterparts (UnprepareEvent
, UnprepareGameSync
, UnprepareBank
, UnloadBank
). For instance, possible crash when calling the functions LoadBank
, PrepareEvent
, UnloadBank
, UnprepareEvent
, in order.
- WG-73808 Fixed: The result of dragging to the bottom of a Sequence Container playlist is not always correct.
- WG-74131 Fixed: Possible crash when profiling and selecting multiple rows in the Capture Log.
- WG-74405 Fixed: Possible crash when closing Wwise.
- WG-74460 Fixed: Clicking in an empty area of the Event Viewer or Schematic View stops the active play in the Transport Control.
- WG-74594 Fixed: Cannot add an RTPC to properties represented by a drop-down list.
- WG-74697 Fixed: Soloing multiple channels in Mastering Suite doesn't work.
- WG-75047 Fixed: Waveform in AK Convolution Reverb sometimes displayed as a rectangle.
Fixes for Community-Reported Bugs
- WG-69787 Fixed: Reference View and WAQL incorrectly report references that are inactive when the value is inherited.
- WG-71268 Fixed: Unbalanced
PinEventInStreamCache
/ UnpinEventInStreamCache
calls lead to deadlock on sound engine termination.
- WG-71290 Fixed: Cannot pick Film ordering in Channel Config Override for configurations above 5.1.
- WG-71543 Fixed: Reflection and diffraction paths are lost when removing geometries.
- WG-73429 Fixed: Menu command Convert All Audio Files does not convert plug-in media.
- WG-73910 Fixed: (WAAPI) Error when using function
ak.soundengine.seekOnEvent
with game object IDs higher than 4294967295.
- WG-74470 Fixed: Input connection type is no longer accessible from bus volume callback.
- WG-74513 Fixed: (WAAPI)
ak.wwise.core.soundbank.generate
returns a different GUID for auto-defined SoundBanks on each SoundBank generation.
- WG-74515 Fixed: Unreachable code in
AkVariantBase.h
.
- WG-74930 Fixed: Running Wwise Authoring at the same time as another game using Trigger Effects on the DualSense gamepad causes the game-provided Trigger Effects to be disabled or to repeatedly engage and disengage.
Fixes since the Beta for Community-Reported Bugs
- WG-73183 Fixed: Possible crash with some list filtering queries.
- WG-73437 Fixed: Max Attenuation info in Soundbank Metadata now includes Attenuation Distance Scaling.
- WG-73663 Fixed: Possible crash when changing RTPCs for a source plug-in.
- WG-74468 Fixed: Crash when reparenting an object hierarchy at the bottom of the Project Explorer.
- WG-74644 Fixed: Crash when using Event Editor with no Event inspected.
Documentation Improvements
- See also
-