@thi.ng/dsp
Version:
Composable signal generators, oscillators, filters, FFT, spectrum, windowing & related DSP utils
27 lines (26 loc) • 670 B
JavaScript
import { clamp01 } from "@thi.ng/math/interval";
import { Delay } from "./delay.js";
const filterFeedbackDelay = (n, filter, feedback) => new FilterFeedbackDelay(n, filter, feedback);
class FilterFeedbackDelay extends Delay {
constructor(n, filter, _feedback = 0.5) {
super(n, 0);
this.filter = filter;
this._feedback = _feedback;
this.setFeedback(_feedback);
}
next(x) {
return super.next(
x + this.filter.next(this._buf[this._rpos] * this._feedback)
);
}
feedback() {
return this._feedback;
}
setFeedback(feedback) {
this._feedback = clamp01(feedback);
}
}
export {
FilterFeedbackDelay,
filterFeedbackDelay
};