This is an experimental module. AudioWorker haven't been implemented in any browsers yet. *
DRIVER
and DSP
in the worker thread. This architecture works on the browser.
$ npm install duolet.audioworker
in the main thread
const duolet = require("duolet.audioworker/client")();
const Driver = require("pico.driver.audioworker/client");
let audioContext = new AudioContext();
duolet.compose({ workerPath: "/path/to/worker", driver: new Driver() });
duolet.setup({ context: audioContext, bufferLength: 1024 });
duolet.sendToWorker({ type: "start" });
in the worker thread
const duolet = require("duolet.audioworker/worker")(self);
const Driver = require("pico.driver.audioworker/worker");
const DSP = require("./dsp");
duolet.compose({ dsp: new DSP(), driver: new Driver(self) });
duolet.recvFromClient = (e) => {
if (e.type === "start") {
duolet.start();
}
};
constructor()
driver: pico.driver
-
sampleRate: number
(implicit readonly) -
bufferLength: number
(implicit readonly)
compose(spec: object): self
setup(opts: object): self
start(): self
stop(): self
sendToServer(data: any): void
constructor(self: AudioWorkerGlobalScope)
dsp: duoletDSP
-
sampleRate: number
(implicit readonly) -
bufferLength: number
(implicit readonly)
compose(spec: object): self
setup(opts: object): self
start(): self
stop(): self
sendToClient(data: any): void
interface duoletDSP {
optional setup(opts: object) => void;
optional start() => void;
optional stop() => void;
process(bufL: Float32Array, bufR: Float32Array) => void;
}
MIT