matrix-react-sdk
Version:
SDK for matrix.org using React
31 lines (26 loc) • 3.79 kB
JavaScript
;
var _arrays = require("../utils/arrays");
var _consts = require("../audio/consts");
/*
Copyright 2024 New Vector Ltd.
Copyright 2022 The Matrix.org Foundation C.I.C.
SPDX-License-Identifier: AGPL-3.0-only OR GPL-3.0-only
Please see LICENSE files in the repository root for full details.
*/
const ctx = self;
ctx.addEventListener("message", async event => {
const {
seq,
data
} = event.data;
// First, convert negative amplitudes to positive so we don't detect zero as "noisy".
const noiseWaveform = data.map(v => Math.abs(v));
// Then, we'll resample the waveform using a smoothing approach so we can keep the same rough shape.
// We also rescale the waveform to be 0-1 so we end up with a clamped waveform to rely upon.
const waveform = (0, _arrays.arrayRescale)((0, _arrays.arraySmoothingResample)(noiseWaveform, _consts.PLAYBACK_WAVEFORM_SAMPLES), 0, 1);
ctx.postMessage({
seq,
waveform
});
});
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfYXJyYXlzIiwicmVxdWlyZSIsIl9jb25zdHMiLCJjdHgiLCJzZWxmIiwiYWRkRXZlbnRMaXN0ZW5lciIsImV2ZW50Iiwic2VxIiwiZGF0YSIsIm5vaXNlV2F2ZWZvcm0iLCJtYXAiLCJ2IiwiTWF0aCIsImFicyIsIndhdmVmb3JtIiwiYXJyYXlSZXNjYWxlIiwiYXJyYXlTbW9vdGhpbmdSZXNhbXBsZSIsIlBMQVlCQUNLX1dBVkVGT1JNX1NBTVBMRVMiLCJwb3N0TWVzc2FnZSJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy93b3JrZXJzL3BsYXliYWNrLndvcmtlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuQ29weXJpZ2h0IDIwMjQgTmV3IFZlY3RvciBMdGQuXG5Db3B5cmlnaHQgMjAyMiBUaGUgTWF0cml4Lm9yZyBGb3VuZGF0aW9uIEMuSS5DLlxuXG5TUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQUdQTC0zLjAtb25seSBPUiBHUEwtMy4wLW9ubHlcblBsZWFzZSBzZWUgTElDRU5TRSBmaWxlcyBpbiB0aGUgcmVwb3NpdG9yeSByb290IGZvciBmdWxsIGRldGFpbHMuXG4qL1xuXG5pbXBvcnQgeyBXb3JrZXJQYXlsb2FkIH0gZnJvbSBcIi4vd29ya2VyXCI7XG5pbXBvcnQgeyBhcnJheVJlc2NhbGUsIGFycmF5U21vb3RoaW5nUmVzYW1wbGUgfSBmcm9tIFwiLi4vdXRpbHMvYXJyYXlzXCI7XG5pbXBvcnQgeyBQTEFZQkFDS19XQVZFRk9STV9TQU1QTEVTIH0gZnJvbSBcIi4uL2F1ZGlvL2NvbnN0c1wiO1xuXG5jb25zdCBjdHg6IFdvcmtlciA9IHNlbGYgYXMgYW55O1xuXG5leHBvcnQgaW50ZXJmYWNlIFJlcXVlc3Qge1xuICAgIGRhdGE6IG51bWJlcltdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJlc3BvbnNlIHtcbiAgICB3YXZlZm9ybTogbnVtYmVyW107XG59XG5cbmN0eC5hZGRFdmVudExpc3RlbmVyKFwibWVzc2FnZVwiLCBhc3luYyAoZXZlbnQ6IE1lc3NhZ2VFdmVudDxSZXF1ZXN0ICYgV29ya2VyUGF5bG9hZD4pOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgICBjb25zdCB7IHNlcSwgZGF0YSB9ID0gZXZlbnQuZGF0YTtcblxuICAgIC8vIEZpcnN0LCBjb252ZXJ0IG5lZ2F0aXZlIGFtcGxpdHVkZXMgdG8gcG9zaXRpdmUgc28gd2UgZG9uJ3QgZGV0ZWN0IHplcm8gYXMgXCJub2lzeVwiLlxuICAgIGNvbnN0IG5vaXNlV2F2ZWZvcm0gPSBkYXRhLm1hcCgodikgPT4gTWF0aC5hYnModikpO1xuXG4gICAgLy8gVGhlbiwgd2UnbGwgcmVzYW1wbGUgdGhlIHdhdmVmb3JtIHVzaW5nIGEgc21vb3RoaW5nIGFwcHJvYWNoIHNvIHdlIGNhbiBrZWVwIHRoZSBzYW1lIHJvdWdoIHNoYXBlLlxuICAgIC8vIFdlIGFsc28gcmVzY2FsZSB0aGUgd2F2ZWZvcm0gdG8gYmUgMC0xIHNvIHdlIGVuZCB1cCB3aXRoIGEgY2xhbXBlZCB3YXZlZm9ybSB0byByZWx5IHVwb24uXG4gICAgY29uc3Qgd2F2ZWZvcm0gPSBhcnJheVJlc2NhbGUoYXJyYXlTbW9vdGhpbmdSZXNhbXBsZShub2lzZVdhdmVmb3JtLCBQTEFZQkFDS19XQVZFRk9STV9TQU1QTEVTKSwgMCwgMSk7XG5cbiAgICBjdHgucG9zdE1lc3NhZ2UoeyBzZXEsIHdhdmVmb3JtIH0pO1xufSk7XG4iXSwibWFwcGluZ3MiOiI7O0FBU0EsSUFBQUEsT0FBQSxHQUFBQyxPQUFBO0FBQ0EsSUFBQUMsT0FBQSxHQUFBRCxPQUFBO0FBVkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBTUEsTUFBTUUsR0FBVyxHQUFHQyxJQUFXO0FBVS9CRCxHQUFHLENBQUNFLGdCQUFnQixDQUFDLFNBQVMsRUFBRSxNQUFPQyxLQUE0QyxJQUFvQjtFQUNuRyxNQUFNO0lBQUVDLEdBQUc7SUFBRUM7RUFBSyxDQUFDLEdBQUdGLEtBQUssQ0FBQ0UsSUFBSTs7RUFFaEM7RUFDQSxNQUFNQyxhQUFhLEdBQUdELElBQUksQ0FBQ0UsR0FBRyxDQUFFQyxDQUFDLElBQUtDLElBQUksQ0FBQ0MsR0FBRyxDQUFDRixDQUFDLENBQUMsQ0FBQzs7RUFFbEQ7RUFDQTtFQUNBLE1BQU1HLFFBQVEsR0FBRyxJQUFBQyxvQkFBWSxFQUFDLElBQUFDLDhCQUFzQixFQUFDUCxhQUFhLEVBQUVRLGlDQUF5QixDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztFQUVyR2QsR0FBRyxDQUFDZSxXQUFXLENBQUM7SUFBRVgsR0FBRztJQUFFTztFQUFTLENBQUMsQ0FBQztBQUN0QyxDQUFDLENBQUMiLCJpZ25vcmVMaXN0IjpbXX0=