Version

menu_open
Wwise SDK 2024.1.0
Creating Audio Plug-ins

To create a new plug-in, run the following commands and answer the prompts:

python "%WWISEROOT%/Scripts/Build/Plugins/wp.py" new

Here is an example session:

> python "%WWISEROOT%/Scripts/Build/Plugins/wp.py" new
plug-in type {source, sink, object_processor, mixer, effect}: effect
Do you need to do out-of-place processing? (no)
project name: MyNewFX
display name: (MyNewFX) My New FX
author: Audio Kinetic
description: A brand new effect plug-in
About to create project with:
{'author': 'Audio Kinetic',
'description': 'A brand new effect plug-in.',
'display_name': 'My New FX',
'name': 'MyNewFX',
'out_of_place': False,
'type': 'effect'}
Is this OK? (yes)
Generating project structure for MyNewFX

This will create a directory that is named after your plug-in's current working directory. The directory contains a skeleton for the type of plug-in to create.

MyNewFX/
├── FactoryAssets
│   └── Manifest.xml
├── Help
├── MyNewFXConfig.h
├── PremakePlugin.lua
├── SoundEnginePlugin
│   ├── MyNewFXFX.cpp
│   ├── MyNewFXFX.h
│   ├── MyNewFXFXFactory.h
│   ├── MyNewFXFXParams.cpp
│   ├── MyNewFXFXParams.h
│   └── MyNewFXFXShared.cpp
├── WwisePlugin
│   ├── MyNewFX.def
│   ├── MyNewFX.xml
│   ├── MyNewFXPlugin.cpp
│   ├── MyNewFXPlugin.h
│   └── Win32
│       ├── MyNewFXPluginGUI.cpp
│       └── MyNewFXPluginGUI.h
│   └── res
│       └── Md
│           └── en
│               └── Placeholder.md
├── additional_artifacts.json  
└── bundle_template.json

The purpose of these files and directories is as follows:

  • PremakePlugin.lua -> Premake file used to generate platform-specific solutions for a plug-in.
  • ProjectNameConfig.h -> Header file containing global identification variables for a plug-in. This is where the Company ID and Plugin ID can be modified.
  • WwisePlugin -> The directory containing the authoring part of the plug-in and it is used as a dynamic library by the Authoring application.
    • ProjectName.def -> DLL module definition file used to export the plug-in library (Windows only).
    • ProjectName.xml -> Description file containing information about several aspects of the plug-in. For more details, see Wwise Plug-in XML Description Files.
    • ProjectNamePlugin.h/.cpp -> Class that implements the backend part of the plug-in. For more details, see Authoring Plug-in Library Format.
    • Win32/ProjectNamePluginGUI.h/.cpp -> Class that implements the frontend part of the plug-in for Authoring on Windows. For more details, see Authoring Plug-in Library Format.
    • res/Md/en directory -> Files used to build the documentation of the plugin's properties in HTML format.
  • SoundEnginePlugin -> The directory containing the sound engine part of your plug-in. It is used in your game by the sound engine and can be built as a static library or a shared library.
  • FactoryAssets -> The directory containing any factory assets that should be installed with the plug-in. A Manifest.xml file in this directory specifies the required dependencies for any factory assets to be included in a project.
  • Help -> The directory containing plugin's documentation files that will be packaged and installed in the Authoring/Help/<PluginName> folder.
  • additional_artifacts.json -> A JSON file listing the paths of additional files to package.
  • bundle_template.json -> A JSON file containing plug-in's metadata used when creating the plug-in's bundle.

You can now successfully start writing your plug-in! Refer to Audio Plug-ins for more information on how to write audio plug-ins.

Note: Plug-in tools use a hash of the plug-in name to generate the Plug-in ID. If a user wants to change the Company ID or the Plug-in ID, they must change them in three files: ProjectNameConfig.h, FactoryAssets/Manifest.xml and WwisePlugin/ProjectName.xml.

Note: If you are generating plug-ins using the same settings and want to automate a task, prompts can be pre-filled by passing them as command-line arguments.

python "%WWISEROOT%/Scripts/Build/Plugins/wp.py" new [--sink | --mixer | --object_processor | --source | --effect] [--out-of-place] [-a AUTHOR] [-d DESCRIPTION] [-t DISPLAY_NAME] [-n NAME] [--no-prompt]

See the help of new command for the meaning of each argument.

python "%WWISEROOT%/Scripts/Build/Plugins/wp.py" new -h

Next section: Configuring Your Project With Premake


Was this page helpful?

Need Support?

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

Visit our Support page

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

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

Get started with Wwise