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(); }};