UNPKG

@thi.ng/dsp

Version:

Composable signal generators, oscillators, filters, FFT, spectrum, windowing & related DSP utils

47 lines (46 loc) 859 B
import { TAU } from "@thi.ng/math/api"; import { AGen } from "./agen.js"; const cosine = (freq, amp) => new Cosine(freq, amp); class Cosine extends AGen { constructor(_freq, _amp = 1) { super(0); this._freq = _freq; this._amp = _amp; this.calcCoeffs(); } _cos; _nxt; reset() { this.calcCoeffs(); return this; } next() { const t = this._nxt * this._cos - this._val; this._val = this._nxt; this._nxt = t; return this._val; } freq() { return this._freq; } setFreq(freq) { this._freq = freq; this.calcCoeffs(); } amp() { return this._amp; } setAmp(amp) { this._amp = amp; this.calcCoeffs(); } calcCoeffs() { this._nxt = this._amp; this._cos = Math.cos(this._freq * TAU) * 2; this._val = this._cos * this._amp * 0.5; } } export { Cosine, cosine };