UNPKG

@azgaar/tone

Version:

A fork of Web Audio framework for making interactive music in the browser.

39 lines 1.77 kB
import { __awaiter } from "tslib"; import { Compare, TestAudioBuffer } from "@tonejs/plot"; import "./ToneAudioBuffer"; import { ToneAudioBuffer } from "Tone/core/context/ToneAudioBuffer"; import { Offline } from "Tone/core/context/Offline"; /** * Load a file for comparison */ function getBuffersToCompare(callback, filename, duration = 0.5, channels = 1, sampleRate = 11025, forceRender = false) { return __awaiter(this, void 0, void 0, function* () { if (forceRender) { const buffer = yield Offline(callback, duration, channels, sampleRate); new TestAudioBuffer(buffer).downloadWav(filename); } else { const loadedBuffer = yield ToneAudioBuffer.fromUrl(filename); const bufferB = new TestAudioBuffer(loadedBuffer); const renderedBuffer = yield Offline(callback, bufferB.duration, bufferB.numberOfChannels, bufferB.sampleRate); const bufferA = new TestAudioBuffer(renderedBuffer); return { bufferA, bufferB, }; } }); } export function CompareToFile(callback, url, threshold = 0.001, RENDER_NEW = false, duration = 0.1, channels = 1) { return __awaiter(this, void 0, void 0, function* () { url = "audio/compare/" + url; const response = yield getBuffersToCompare(callback, url, duration, channels, 44100, RENDER_NEW); if (response) { const { bufferA, bufferB } = response; const error = Compare.compareSpectra(bufferA, bufferB); if (error > threshold) { throw new Error(`Error ${error} greater than threshold ${threshold}`); } } }); } //# sourceMappingURL=CompareToFile.js.map