voice-changer/client/lib/src/VoiceChangerWorkletNode.ts

26 lines
913 B
TypeScript
Raw Normal View History

2023-01-11 21:49:22 +03:00
import { VoiceChangerWorkletProcessorRequest } from "./@types/voice-changer-worklet-processor";
2023-01-05 05:45:42 +03:00
export type VolumeListener = {
notifyVolume: (vol: number) => void
}
2023-01-04 20:28:36 +03:00
export class VoiceChangerWorkletNode extends AudioWorkletNode {
2023-01-05 05:45:42 +03:00
private listener: VolumeListener
constructor(context: AudioContext, listener: VolumeListener) {
2023-01-04 20:28:36 +03:00
super(context, "voice-changer-worklet-processor");
this.port.onmessage = this.handleMessage.bind(this);
2023-01-05 05:45:42 +03:00
this.listener = listener
2023-01-04 20:28:36 +03:00
console.log(`[worklet_node][voice-changer-worklet-processor] created.`);
}
2023-01-11 21:49:22 +03:00
postReceivedVoice = (req: VoiceChangerWorkletProcessorRequest) => {
2023-01-04 20:28:36 +03:00
this.port.postMessage({
2023-01-11 21:49:22 +03:00
request: req
}, [req.voice]);
2023-01-04 20:28:36 +03:00
}
handleMessage(event: any) {
2023-01-05 05:45:42 +03:00
// console.log(`[Node:handleMessage_] `, event.data.volume);
this.listener.notifyVolume(event.data.volume as number)
2023-01-04 20:28:36 +03:00
}
}