12345678910111213141516171819202122232425262728293031323334353637383940414243 |
- 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)
- }
|