@thi.ng/dsp
Version:
Composable signal generators, oscillators, filters, FFT, spectrum, windowing & related DSP utils
47 lines (46 loc) • 859 B
JavaScript
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
};