Table of Contents

Getting Started with the Wwise Authoring API (WAAPI)

Protocols

The Wwise Authoring API is accessible through different protocols and APIs:

  • WAMP: WAMP is intended to connect application components in distributed applications. WAMP uses WebSocket as its default transport, which allows for ordered, reliable, bidirectional, and message-oriented communications. WAMP allows the clients to call functions with JSON arguments and retrieve structured JSON results. WAMP also allows clients to subscribe to notifications.
  • HTTP POST: HTTP is an application protocol for distributed applications. HTTP is the most used method to transfer content on the Internet. POST enables the caller to send a document body, which, for the Wwise Authoring API, corresponds to the function arguments as JSON. The HTTP response is the JSON result.
  • Wwise Plug-ins: The Wwise Authoring plug-in API exposes a way to invoke WAAPI functions: AK::Wwise::IPluginPropertySet::WaapiCall(). Refer to Using the Wwise Authoring API in Wwise Plug-ins.

WAMP and HTTP protocols can be used with a variety of languages, such as C++, C#, JavaScript, Python, and other languages with HTTP or WebSocket support.

Note.gif
Note: WAMP is an open standard WebSocket subprotocol that provides unified application routing. WAMP implementations are available in the most popular programming languages. Read more about WAMP at https://wamp-proto.org.
Note.gif
Note: WAMP provides the best performance and experience because it reuses the same WebSocket connection for the whole session and provides bidirectional communications.

In summary, here are the features supported by the protocols:

API Feature WAMP HTTP POST AK::Wwise::IPluginPropertySet::WaapiCall()

Remote Procedure Calls

Allows to call functions remotely on Wwise authoring

Refer to Wwise Authoring API Reference

Supported Supported Supported

Publish & Subscribe

Allows to receive notifications when changes occur in Wwise authoring.

Supported Not Supported Not Supported
Optimal performance Yes No Yes

Programming Languages

If you wish to use WAMP as the protocol for WAAPI, several options exist. WAMP Implementations are available across different programming languages. You will be able to find a list of existing implementations on wamp-proto.org.

However, some of these implementations are more difficult or unfriendly to use. Since WAAPI only uses a subset of the features available in WAMP, and to ease the use of WAAPI, we implemented abstraction layers over some of the implementations available. Here is a table that lists our recommendations for the most popular languages.

Language

Recommendation

C++

(Recommended)

Use AkAutobahn

AkAutobahn is a fork of Autobahn C++, with reduced dependencies, and provides a simpler interface and high performance.

Difficulty: Requires intermediate C++ programming skills.
Instructions: C++ - WAMP
Sources: \SDK\samples\WwiseAuthoringAPI\cpp\SampleClient\AkAutobahn
Sample: \SDK\samples\WwiseAuthoringAPI\cpp\SampleClient\SampleClient

Note.gif
Note: C++ can also be used directly inside a Source or Effect plug-in. Refer to Using the Wwise Authoring API in Wwise Plug-ins for more information.

C#

(Recommended)

Use WaapiClientCore or WaapiClientJson

You have the choice of:

  • WaapiClientCore: A Waapi client library implemented in C# solely depending on .NET 4.5, with no 3rd party reference. It includes a WAMP client that is able to connect to Wwise and access WAAPI remote procedures and topic subscription. The API is string-based, so you can to provide your own JSON serialization. This client is also compatible with Unity 2018.1+.
  • WaapiClientJson: A waapi client library implemented in C# with a dependency on Json.NET. The Json dependency is added as a convenience to manipulate JSON. NuGet package manager extension is required. This client can be compatible with Unity if you also install `Json.NET for Unity` from Unity Store.

Difficulty: One of the easiest way to use WAAPI. Requires beginner C# programming skills.
Instructions: C# WaapiClient - WAMP
Sample: SDK\samples\WwiseAuthoringAPI\cs\WaapiClientSample

JavaScript/TypeScript with Node.js

(Recommended)

Use waapi-client JS

waapi-client is an abstraction layer over Autobahn JS. It adds promises and async/await support, and only expose the required WAMP functionality. Please note that waapi-client also includes the TypeScript bindings.

Difficulty: Requires beginner to intermediate JavaScript programming skills.
Instructions: JavaScript, Node.js - WAMP
Npm: https://www.npmjs.com/package/waapi-client
Sources: https://github.com/audiokinetic/waapi-client
Sample: SDK\samples\WwiseAuthoringAPI\js\hello-wwise-node-wamp

JavaScript with Browser

Use autobahn-browser

autobahn-browser is a WAMP implementation ready to use in a browser.

Difficulty: Requires intermediate JavaScript & Web programming skills.
Instructions: JavaScript, In browser - WAMP
Sources: https://github.com/crossbario/autobahn-js-browser
Sample: SDK\samples\WwiseAuthoringAPI\js\hello-wwise-web-wamp

Python 2.7

Use Autobahn Python

Autobahn Python is difficult to use. Setup requirements are not trivial, and async programming skills are required. Refer to the hello-wwise-wamp sample for instructions on how to set up the python project and dependencies.

Note.gif
Note: We highly recommend using Python 3.6 and our implementation of waapi-client.

Difficulty: Requires advanced Python programming skills.
Instructions: Python (low-level) - WAMP
Sources: https://github.com/crossbario/autobahn-python
Sample: SDK\samples\WwiseAuthoringAPI\python\low-level\hello-wwise-wamp

Python 3.6+

(Recommended)

Use waapi-client Python

waapi-client is an abstraction layer over Autobahn Python. It offers a greatly simplified usage and only exposes the required WAMP functionality.

Difficulty: One of the easiest way to use WAAPI. Requires only beginner Python programming skills.
Instructions: Python (Waapi-Client) - Remote Procedure Call
Pypi: https://pypi.org/project/waapi-client/
Sources: https://github.com/audiokinetic/waapi-client-python
Sample: SDK\samples\WwiseAuthoringAPI\python\waapi-client-py3

Other languages

Use one of the WAMP implementations listed at https://wamp-proto.org/ or use WAAPI with HTTP directly.

Refer to WAAPI Samples.