mirror of
https://github.com/Tonejs/Tone.js
synced 2024-12-29 04:53:10 +00:00
91 lines
2.4 KiB
TypeScript
91 lines
2.4 KiB
TypeScript
import { expect } from "chai";
|
|
import { BasicTests } from "test/helper/Basic";
|
|
import { CompareToFile } from "test/helper/CompareToFile";
|
|
import { OscillatorTests } from "test/helper/OscillatorTests";
|
|
import { SourceTests } from "test/helper/SourceTests";
|
|
import { FatOscillator } from "./FatOscillator";
|
|
|
|
describe("FatOscillator", () => {
|
|
|
|
// run the common tests
|
|
BasicTests(FatOscillator);
|
|
SourceTests(FatOscillator);
|
|
OscillatorTests(FatOscillator);
|
|
|
|
it("matches a file", () => {
|
|
return CompareToFile(() => {
|
|
const osc = new FatOscillator().toDestination();
|
|
osc.start(0);
|
|
}, "fatOscillator.wav", 0.2);
|
|
});
|
|
|
|
context("Detuned Oscillators", () => {
|
|
|
|
it("can pass in parameters in the constructor", () => {
|
|
const fatOsc = new FatOscillator({
|
|
count: 4,
|
|
spread: 25,
|
|
});
|
|
expect(fatOsc.spread).to.be.equal(25);
|
|
expect(fatOsc.count).to.equal(4);
|
|
fatOsc.dispose();
|
|
});
|
|
|
|
it("can set the partials and the count", () => {
|
|
const fatOsc = new FatOscillator({
|
|
count: 3,
|
|
});
|
|
fatOsc.partials = [0, 2, 3, 4];
|
|
expect(fatOsc.partials).to.deep.equal([0, 2, 3, 4]);
|
|
expect(fatOsc.partialCount).to.equal(4);
|
|
expect(fatOsc.type).to.equal("custom");
|
|
fatOsc.count = 4;
|
|
expect(fatOsc.partials).to.deep.equal([0, 2, 3, 4]);
|
|
expect(fatOsc.type).to.equal("custom");
|
|
fatOsc.dispose();
|
|
});
|
|
|
|
it("can set the count after starting", () => {
|
|
const fatOsc = new FatOscillator({
|
|
count: 3,
|
|
});
|
|
fatOsc.start();
|
|
fatOsc.count = 4;
|
|
expect(fatOsc.count).to.equal(4);
|
|
fatOsc.dispose();
|
|
});
|
|
|
|
it("correctly distributes the detune spread", () => {
|
|
const fatOsc = new FatOscillator({
|
|
count: 2,
|
|
spread: 20,
|
|
});
|
|
// @ts-ignore
|
|
expect(fatOsc._oscillators.length).to.equal(2);
|
|
// @ts-ignore
|
|
expect(fatOsc._oscillators[0].detune.value).to.equal(-10);
|
|
// @ts-ignore
|
|
expect(fatOsc._oscillators[1].detune.value).to.equal(10);
|
|
fatOsc.dispose();
|
|
});
|
|
|
|
it("can get/set the baseType", () => {
|
|
const osc = new FatOscillator();
|
|
osc.type = "sine5";
|
|
expect(osc.baseType).to.equal("sine");
|
|
osc.baseType = "triangle";
|
|
expect(osc.type).to.equal("triangle5");
|
|
expect(osc.partialCount).to.equal(5);
|
|
osc.partialCount = 2;
|
|
expect(osc.type).to.equal("triangle2");
|
|
osc.baseType = "custom";
|
|
expect(osc.type).to.equal("custom");
|
|
osc.partials = [1, 2, 3];
|
|
expect(osc.baseType).to.equal("custom");
|
|
osc.baseType = "square";
|
|
expect(osc.type).to.equal("square");
|
|
osc.dispose();
|
|
});
|
|
|
|
});
|
|
});
|