tone
Version:
A Web Audio framework for making interactive music in the browser.
40 lines (33 loc) • 1.07 kB
text/typescript
import "../../core/worklet/SingleIOProcessor.worklet.js";
import "../../core/worklet/DelayLine.worklet.js";
import { registerProcessor } from "../../core/worklet/WorkletGlobalScope.js";
export const workletName = "feedback-comb-filter";
const feedbackCombFilter = /* javascript */ `
class FeedbackCombFilterWorklet extends SingleIOProcessor {
constructor(options) {
super(options);
this.delayLine = new DelayLine(this.sampleRate, options.channelCount || 2);
}
static get parameterDescriptors() {
return [{
name: "delayTime",
defaultValue: 0.1,
minValue: 0,
maxValue: 1,
automationRate: "k-rate"
}, {
name: "feedback",
defaultValue: 0.5,
minValue: 0,
maxValue: 0.9999,
automationRate: "k-rate"
}];
}
generate(input, channel, parameters) {
const delayedSample = this.delayLine.get(channel, parameters.delayTime * this.sampleRate);
this.delayLine.push(channel, input + delayedSample * parameters.feedback);
return delayedSample;
}
}
`;
registerProcessor(workletName, feedbackCombFilter);