@azgaar/tone
Version:
A fork of Web Audio framework for making interactive music in the browser.
39 lines • 1.77 kB
JavaScript
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