Wwise SDK 2023.1.4
C++ - WAMP

This page explains an example on how to use the Wwise Authoring API in C++. It also contains the library code supporting the WAMP protocol used by Wwise, which you can use in your own C++ project.

Building on Windows

The Visual Studio solution is located in "samples/WwiseAuthoringApi/cpp/SampleClient". You must install the Wwise SDK to access it.

Simply open SampleClientWindows_TOOLSET.sln (where TOOLSET is vc160 or vc170) build the solution.

Note: This example requires Visual Studio 2019 (vc160) or 2022 (vc170).

Building on OS X

You can build all targets with: "samples/WwiseAuthoringApi/cpp/SampleClient/"

Using the sample

This sample runs on the command line. By default, when no parameter is provided, it runs the getInfo RPC call to Wwise Authoring and displays basic information.

More extended examples are available, which you can run by using the associated command line parameter:

  • TestWampClient: Example demonstrating basic operations such as connect, call and subscribe, using the AkJson class.
  • TestWampClientJsonString: Mostly the same as TestWampClient, but using std::string for JSON instead of the AkJson class.
  • PerfTest: Basic performance test which repeatedly makes the same call and displays the average execution time per call, as well as the total time.
  • TestErrors: Generates and handles different kinds of errors and shows how to use the logging feature.
  • TestMonitoring: This example demonstrates how to monitor the current status of Wwise. It detects when Wwise starts, exits, loads or closes a project, and which project is loaded at any given time.

C++ client and WAMP library

This sample contains the AkAutobahn library, which is a modified version of the WAMP_POCO library (itself based on Autobahn|Cpp), civetweb library and the Client class. AkAutobahn is provided as part of the Wwise SDK. The class Client provides a simple interface to our API, internally using the "session" class to connect to Wwise Authoring using the WAMP protocol. Feel free to use the Client as-is or modify it to better suit your needs.

Out of convenience, the Client class uses blocking calls (by calling std::future::get). Therefore, the caller thread gets blocked until Wwise Authoring provides a result. A timeout parameter is available to block for only a specific amount of time. The "session" class returns std::future for thread synchronization, which means that you could implement your own asynchronous version of the Client class if it better suits your needs.

The Client class does not support being called from within a callback. In other words, you should not call a method of Client when Client is already calling you.


Logging is optional, but it often helps the debugging process. You can call Logger::Get()->SetLoggerFunction(logFunction) to provide your own logging function.

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