import {parentPort, workerData, Worker} from "worker_threads"; import WavEncoder from "wav-encoder"; // TODO: Possible optimization in the future. function createWorker(c){ return new Promise((resolve, reject) => { const c0 = new Worker('./c0.js', { workerData: { pitch: Number(workerData.pitch), binary: workerData.binary, channel: c } }) c0.on("message", (worker) => { resolve(worker); }) c0.on("error", (err) => { console.error(err); reject(err); }) }) } try{ const res = await Promise.all([createWorker(0), createWorker(1)]); const prep = { sampleRate: res[0].samplerate, channelData: [ res[0].output, res[1].output ] } let wavBuffer = await WavEncoder.encode(prep) parentPort.postMessage(wavBuffer) }catch(e){ console.error(e) }