UNPKG

tone

Version:

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

81 lines (71 loc) 2.27 kB
import { expect } from "chai"; import { FeedbackCombFilter } from "./FeedbackCombFilter"; import { BasicTests } from "test/helper/Basic"; import { PassAudio } from "test/helper/PassAudio"; import { Offline } from "test/helper/Offline"; import { Signal } from "Tone/signal"; describe("FeedbackCombFilter", () => { BasicTests(FeedbackCombFilter); context("Comb Filtering", () => { it("can be constructed with an object", () => { const fbcf = new FeedbackCombFilter({ delayTime: 0.2, resonance: 0.3, }); expect(fbcf.delayTime.value).to.be.closeTo(0.2, 0.001); expect(fbcf.resonance.value).to.be.closeTo(0.3, 0.001); fbcf.dispose(); }); it("can be get and set through object", () => { const fbcf = new FeedbackCombFilter(); fbcf.set({ delayTime: 0.2, resonance: 0.3, }); const values = fbcf.get(); expect(values.delayTime).to.be.closeTo(0.2, 0.001); expect(values.resonance).to.be.closeTo(0.3, 0.001); fbcf.dispose(); }); it("passes the incoming signal through", () => { return PassAudio(input => { const fbcf = new FeedbackCombFilter({ delayTime: 0.0, resonance: 0, }).toDestination(); input.connect(fbcf); }); }); it("can delay by the delayTime", () => { return Offline(() => { const fbcf = new FeedbackCombFilter({ delayTime: 0.1, resonance: 0, }).toDestination(); const sig = new Signal(0).connect(fbcf); sig.setValueAtTime(1, 0); }, 0.2).then(buffer => { expect(buffer.getValueAtTime(0)).to.equal(0); expect(buffer.getValueAtTime(0.999)).to.equal(0); expect(buffer.getValueAtTime(0.101)).to.equal(1); expect(buffer.getValueAtTime(0.15)).to.equal(1); }); }); it("can delay with feedback", () => { return Offline(() => { const fbcf = new FeedbackCombFilter({ delayTime: 0.1, resonance: 0.5, }).toDestination(); const sig = new Signal(0).connect(fbcf); sig.setValueAtTime(1, 0); sig.setValueAtTime(0, 0.1); }, 0.4).then(buffer => { expect(buffer.getValueAtTime(0)).to.equal(0); expect(buffer.getValueAtTime(0.101)).to.equal(1); expect(buffer.getValueAtTime(0.201)).to.equal(0.5); expect(buffer.getValueAtTime(0.301)).to.equal(0.25); }); }); }); });