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.
![](/images/2023.1.6_8555/?source=SDK&id=images/Note.gif) | 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. |
![](/images/2023.1.6_8555/?source=SDK&id=images/Note.gif) | 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