2019-04-12 14:37:47 +00:00
|
|
|
import { expect } from "chai";
|
2024-05-03 18:31:14 +00:00
|
|
|
import { Offline } from "./Offline.js";
|
|
|
|
import { ToneAudioNode } from "../../Tone/core/context/ToneAudioNode.js";
|
|
|
|
import { Signal } from "../../Tone/signal/Signal.js";
|
2019-04-12 14:37:47 +00:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Make sure that the audio passes from input node
|
|
|
|
* to the destination node
|
|
|
|
*/
|
|
|
|
export function PassAudio(
|
|
|
|
callback: (input: ToneAudioNode) => void,
|
2020-01-08 19:12:11 +00:00
|
|
|
passes = true
|
2019-04-12 14:37:47 +00:00
|
|
|
): Promise<void> {
|
|
|
|
const duration = 0.2;
|
2024-05-03 18:31:14 +00:00
|
|
|
return Offline(
|
|
|
|
() => {
|
|
|
|
const sig = new Signal(0);
|
|
|
|
callback(sig);
|
|
|
|
sig.setValueAtTime(1, duration / 2);
|
|
|
|
},
|
|
|
|
0.2,
|
|
|
|
1
|
|
|
|
).then((buffer) => {
|
2019-04-12 14:37:47 +00:00
|
|
|
expect(buffer.getValueAtTime(0)).to.be.closeTo(0, 0.001);
|
2024-05-03 18:31:14 +00:00
|
|
|
expect(buffer.getValueAtTime(duration / 2 - 0.01)).to.be.closeTo(
|
|
|
|
0,
|
|
|
|
0.001
|
|
|
|
);
|
2020-01-08 19:12:11 +00:00
|
|
|
if (passes) {
|
|
|
|
expect(buffer.getValueAtTime(duration / 2 + 0.01)).to.not.equal(0);
|
|
|
|
expect(buffer.getValueAtTime(duration - 0.01)).to.not.equal(0);
|
|
|
|
} else {
|
2024-05-03 18:31:14 +00:00
|
|
|
expect(buffer.getValueAtTime(duration / 2 + 0.01)).to.be.closeTo(
|
|
|
|
0,
|
|
|
|
0.001
|
|
|
|
);
|
|
|
|
expect(buffer.getValueAtTime(duration - 0.01)).to.be.closeTo(
|
|
|
|
0,
|
|
|
|
0.001
|
|
|
|
);
|
2020-01-08 19:12:11 +00:00
|
|
|
}
|
2019-04-12 14:37:47 +00:00
|
|
|
});
|
|
|
|
}
|