Skip to main content
Version: Next

Simple Audio Playback

This example shows how to simply play a spatialized sound.

import { Manager, Renderer } from "@atmokyaudio/websdk";let renderer: Renderer;const manager = new Manager();const context = new AudioContext();type UserID = string; // can be any type, actuallyconst sourcesMap = new Map<UserID, Source>manager.prepareContext(context).then(() => {    console.log("Version:", manager.version);    const NUM_SOURCES = 4;    const NUM_ATTENUATION_CURVES = 1;    renderer = manager.createRenderer(NUM_SOURCES, NUM_ATTENUATION_CURVES);    renderer.connect(context.destination, 0, 0);    // load an audio file    const audioSource = context.createBufferSource();    const request = new XMLHttpRequest();    request.open("GET", "audio/shaker.mp3", true);    request.responseType = "arraybuffer";    request.onload = function () {        context.decodeAudioData(            request.response,            (response) => {                console.log("Successfully loaded audio file");                audioSource.buffer = response;                audioSource.loop = true;                audioSource.start();            },            (response) => {                console.error("The request failed.", response);            }        );    };    request.send();    // while audio file is loading asynchronously, connect to renderer    const source = renderer.createSource();    source.setInput(audioSource, 0, true);    source.setPosition(8, -4, 2);    source.setReverbSendDecibels(0);    // adjust renderer parameters    renderer.externalizer.amount.value = 42;    renderer.reverb.amount.value = 100;});// set up button the user can press to toggle playbackvar button = document.getElementById("button") as HTMLButtonElement;button.onclick = () => {    if (context.state == "running") {        context.suspend();    } else {        context.resume();    }};