Wwise SDK 2023.1.9
|
This page describes the plug-in format as well as the parts that compose a Wwise Authoring plug-in.
A Wwise plug-in dynamic library is a library that exports a plug-in container, listing all plug-ins provided by the library. This container is added to your plug-in library using a set of macros, as shown below:
These macros take a container name as argument that must match your library name without prefix or extension. Each plug-in can then be added using the macro AK_ADD_PLUGIN_CLASS_TO_CONTAINER
. This is all done for you when creating a plug-in using the wp.py development tool.
A plug-in created using the command wp.py new
will have a sound engine part that can be built as a static library and will be automatically linked into the Wwise Authoring plug-in dynamic library. This same sound engine static library can be reused for linking in your game.
For details on the sound engine plug-in implementation, refer to Writing the Sound Engine Part of an Audio Plug-in.
The Wwise Authoring plug-in comes in two parts: a mandatory backend part, implementing the logic behind how the properties of the plug-in are written to SoundBanks and manages any custom data. A frontend part is optional and is created as a separate class. The latter part is responsible for implementing custom graphical user interface. Both parts are added to the plug-in container independently with the AK_ADD_PLUGIN_CLASS_TO_CONTAINER
macro.
Details on how to implement those two parts are described in more details in the following sections:
AK::Wwise::Plugin::AudioPlugin
classAK::Wwise::Plugin::GUIWindows
See also Model of an Authoring Plug-in to learn how to work with the plug-in properties.
Components providing a service such as your plug-in model can be requested using "Request" interfaces, e.g., AK::Wwise::Plugin::RequestPropertySet
(refer to Property Set). These services are provided to the plug-in instance by the Wwise Authoring application at instantiation time.
Some interfaces add pure virtual methods that must be implemented and that will be called by Wwise. For example, deriving from AK::Wwise::Plugin::Source
requires to implement the method AK::Wwise::Plugin::Source::GetSourceDuration
, which tells the Wwise Authoring the minimum and maximum duration that can be expected from the source.
Components to use as services in your plug-in are all prefixed by "Request". When these services deal with objects that are owned by your plug-in, they provide an instance added as a member variable in your plug-in for use with the service methods (e.g., AK::Wwise::Plugin::RequestPropertySet
is used with the m_propertySet
object). Here is the list of components that can be requested:
AK::Wwise::Plugin::RequestHost
: Provides m_host
and functions to interact with the Wwise Authoring applicationAK::Wwise::Plugin::RequestLinkBackend
: Provides m_backend
and a function to query your backend instanceAK::Wwise::Plugin::RequestLinkFrontend
: Provides m_frontend
and a function to query an array of frontend instancesAK::Wwise::Plugin::RequestObjectMedia
: Provides m_objectMedia
and functions related to media file handlingAK::Wwise::Plugin::RequestObjectStore
: Provides m_objectStore
and functions related to inner objects managementAK::Wwise::Plugin::RequestPropertySet
: Provides m_propertySet
and functions to get and set property values. This is automatically requested when the plug-in class derives from AK::Wwise::Plugin::AudioPlugin
.AK::Wwise::Plugin::RequestUndoManager
: Provides m_undoManager
and functions to log custom undo events and groupsAK::Wwise::Plugin::RequestWrite
: Provides necessary instance services for AK::Wwise::Plugin::DataWriter
. This is automatically requested when the plug-in class derives from AK::Wwise::Plugin::AudioPlugin
.AK::Wwise::Plugin::RequestXml
: Provides necessary instance services for XML Reader and Writers (AK::Wwise::Plugin::XmlReader
and AK::Wwise::Plugin::XmlWriter
). This is automatically requested when the plug-in class derives from AK::Wwise::Plugin::CustomData
.Note: Some of those services add notification handler methods that can be optionally overridden. |
Interfaces intended to be implemented are not prefixed. Here is a list of interfaces that can be added:
AK::Wwise::Plugin::CustomData
: Adds functions to manage custom data.AK::Wwise::Plugin::License
: Adds a function to check for a license during SoundBank generation.AK::Wwise::Plugin::MediaConverter
: Adds functions for custom media conversions.AK::Wwise::Plugin::Notifications::Monitor
: Adds a function for receiving profiling data from the sound engine plug-in.AK::Wwise::Plugin::PropertyDisplayName
: Adds functions to override XML-defined display names for properties and named values.AK::Wwise::Plugin::SinkDevices
: Adds functions to manage custom audio devices.AK::Wwise::Plugin::Source
: Adds functions related to source plug-ins.If you run into any problems, Help is available in the Wwise Source and Effect Plug-in Troubleshooting Guide.
Questions? Problems? Need more info? Contact us, and we can help!
Visit our Support pageRegister your project and we'll help you get started with no strings attached!
Get started with Wwise