Skip to main content
Version: Next

Manager

The Manager class acts as the entrypoint for the WebSDK. It will setup a provided AudioContext and create a Renderer instance within that context.

It is manually instantiated as follows:

import { Manager } from "@atmokytalk/websdk"
let manager = new Manager();

Public Interface

Properties

version: {major: number; minor: number; patch: number;}

Hold the version of the WebSDK's backend.

note

This property is only available after prepareContext has been called and its promise has been resolved.


Methods

prepareContext(context: AudioContext): Promise<void>

Prepares a provided AudioContext and injects the rendering engine dependencies. Returns a Promise which resolves once the context has been successfully prepared.

note

Once the promise has resolved, the version property will hold the backend version.

Example: Setup AudioContext
let AudioContext = window.AudioContext || window.webkitAudioContext;
let context = new AudioContext();
manager.prepareContext(context).then(() => {
console.log("Context successfully prepared.");
// create renderer
// ...
})

createRenderer(numberOfSources: number, numberOfAttenuationCurves: number): Renderer

Instantiates the Renderer with a desired number of input sources and attenuation curves, and returns the instance.

note

The provided numberOfSources argument will define the maximum number of sources the renderer will be able to spatialize simultaneously. It will allocate enough memory beforehand so it doesn't need to allocate during audio processing (which might cause glitches).

Also note, only actively used source slots will affect CPU usage, stale sources only require a small amount of memory.

The attenuation curves will be stored within the renderer and can be assigned to individual sources.

Example: Instantiate and connect to context's destination
const NUM_SOURCES = 5;
const NUM_ATTENUATION_CURVES = 3;
let renderer = manager.createRenderer(NUM_SOURCES, NUM_ATTENUATION_CURVES);
// connect renderer output to the AudioContext's audio sink
renderer.connect(context.destination, 0, 0);