UNPKG

tone

Version:

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

48 lines (44 loc) 1.17 kB
import { addToWorklet } from "./WorkletGlobalScope.js"; const delayLine = /* javascript */ ` /** * A multichannel buffer for use within an AudioWorkletProcessor as a delay line */ class DelayLine { constructor(size, channels) { this.buffer = []; this.writeHead = [] this.size = size; // create the empty channels for (let i = 0; i < channels; i++) { this.buffer[i] = new Float32Array(this.size); this.writeHead[i] = 0; } } /** * Push a value onto the end * @param channel number * @param value number */ push(channel, value) { this.writeHead[channel] += 1; if (this.writeHead[channel] > this.size) { this.writeHead[channel] = 0; } this.buffer[channel][this.writeHead[channel]] = value; } /** * Get the recorded value of the channel given the delay * @param channel number * @param delay number delay samples */ get(channel, delay) { let readHead = this.writeHead[channel] - Math.floor(delay); if (readHead < 0) { readHead += this.size; } return this.buffer[channel][readHead]; } } `; addToWorklet(delayLine); //# sourceMappingURL=DelayLine.worklet.js.map