Version

menu_open
Wwise SDK 2021.1.14
Python (low-level) - WAMP Subscriber/Publisher

Initializing the project

Note: If you are using Python 2.7, you will need to install Microsoft Visual C++ Compiler for Python 2.7.

Run the following command from any directory to install dependencies:

pip install autobahn

If you are using Python 2.7, run the following command to install additional packages:

pip install trollius futures

Project Code

Note: The line from waapi_uri import WAAPI_URI imports a declaration of the API paths.

It is located in <Wwise installation path>/SDK/include/AK/WwiseAuthoringAPI/py. The location of this file was added to Python's path dynamically by extending sys.path in this sample, but you can also copy-paste the waapi.py file along-side the sample files.

Note that the additional file, ak_authobahn.py, provides a special type of component which supports custom options to be sent to WAAPI. This file is provided in the sample's directory.

Python 2.7

Locate the sample file <Wwise installation path>/SDK/samples/WwiseAuthoringAPI/python/low-level/wwise-pubsub-wamp/get_ancestors_py2.py.

This file contains the following code, which allows you to connect to the Wwise Authoring API.

import sys
import os
import trollius as asyncio
from trollius import From
from autobahn.asyncio.wamp import ApplicationRunner
from ak_autobahn import AkComponent
# You may also copy-paste the waapi.py file alongside this sample
sys.path.append(os.path.join(os.path.dirname(__file__), '../../../../../include/AK/WwiseAuthoringAPI/py'))
from waapi_uri import WAAPI_URI
done = False
class MyComponent(AkComponent):
def onJoin(self, details):
subscription = None
def on_object_created(**kwargs):
yield From(subscription.unsubscribe())
result = kwargs[u"object"]
print("The object was created in the category: {}".format(result.get(u"category", "unknown")))
arguments = {
u"from": {u"id": [result.get(u"id")]},
u"transform": [{u"select": [u"ancestors"]}],
u"options": {
u"return": [u"name"]
}
}
res = yield From(self.call(WAAPI_URI.ak_wwise_core_object_get, **arguments))
ancestors = res.kwresults[u"return"]
print(u"Ancestor of {}:".format(result[u"id"]))
for ancestor in ancestors:
print("\t{}".format(ancestor[u"name"]))
global done
if not done:
self.leave() # Disconnect
done = True
subscribe_args = {
u"options": {
u"return": [u"id", u"name", u"category"]
}
}
# Subscribe to ak.wwise.core.object.created
# Calls on_object_created whenever the event is received
subscription = yield From(self.subscribe(on_object_created,
WAAPI_URI.ak_wwise_core_object_created,
**subscribe_args))
print("Create an object in the Project Explorer")
def onDisconnect(self):
print("The client was disconnected.")
asyncio.get_event_loop().stop()
if __name__ == '__main__':
runner = ApplicationRunner(url=u"ws://127.0.0.1:8080/waapi", realm=u"get_ancestors_demo")
try:
runner.run(MyComponent)
except Exception as e:
print(type(e).__name__ + ": Is Wwise running and Wwise Authoring API enabled?")

Python 3.6

Locate the sample file <Wwise installation path>/SDK/samples/WwiseAuthoringAPI/python/low-level/wwise-pubsub-wamp/get_ancestors_py3.py.

This file contains the following code, which allows you to connect to the Wwise Authoring API.

import asyncio
import sys
import os
from autobahn.asyncio.wamp import ApplicationRunner
from ak_autobahn import AkComponent
# You may also copy-paste the waapi.py file alongside this sample
sys.path.append(os.path.join(os.path.dirname(__file__), '../../../../../include/AK/WwiseAuthoringAPI/py'))
from waapi_uri import WAAPI_URI
done = False
class MyComponent(AkComponent):
def onJoin(self, details):
subscription = None
def on_object_created(**kwargs):
yield from subscription.unsubscribe()
result = kwargs[u"object"]
print("The object was created in the category: {}".format(result.get(u"category", "unknown")))
arguments = {
"from": {"id": [result.get(u"id")]},
"transform": [{"select": ["ancestors"]}],
"options": {
"return": ["name"]
}
}
res = yield from self.call(WAAPI_URI.ak_wwise_core_object_get, **arguments)
ancestors = res.kwresults[u"return"]
print(u"Ancestor of {}:".format(result[u"id"]))
for ancestor in ancestors:
print("\t{}".format(ancestor[u"name"]))
global done
if not done:
self.leave() # Disconnect
done = True
subscribe_args = {
"options": {
"return": ["id", "name", "category"]
}
}
# Subscribe to ak.wwise.core.object.created
# Calls on_object_created whenever the event is received
subscription = yield from self.subscribe(on_object_created,
WAAPI_URI.ak_wwise_core_object_created,
**subscribe_args)
print("Create an object in the Project Explorer")
def onDisconnect(self):
print("The client was disconnected.")
asyncio.get_event_loop().stop()
if __name__ == '__main__':
runner = ApplicationRunner(url=u"ws://127.0.0.1:8080/waapi", realm=u"get_ancestors_demo")
try:
runner.run(MyComponent)
except Exception as e:
print(type(e).__name__ + ": Is Wwise running and Wwise Authoring API enabled?")

Running the project

Run the sample file from its directory using the following command:

Python 2.7:

python get_ancestors_py2.py

Python 3.6:

python get_ancestors_py3.py

Create an object in the Project Explorer and the list of its ancestors will be displayed. The sample terminates the connection after the ancestors are retrieved.


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