UNPKG

tone

Version:

A Web Audio framework for making interactive music in the browser.

40 lines (33 loc) 1.07 kB
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);