voice-changer/client/lib/src/VoiceChangerWorkletNode.ts
2023-01-12 03:49:22 +09:00

26 lines
913 B
TypeScript

import { VoiceChangerWorkletProcessorRequest } from "./@types/voice-changer-worklet-processor";
export type VolumeListener = {
notifyVolume: (vol: number) => void
}
export class VoiceChangerWorkletNode extends AudioWorkletNode {
private listener: VolumeListener
constructor(context: AudioContext, listener: VolumeListener) {
super(context, "voice-changer-worklet-processor");
this.port.onmessage = this.handleMessage.bind(this);
this.listener = listener
console.log(`[worklet_node][voice-changer-worklet-processor] created.`);
}
postReceivedVoice = (req: VoiceChangerWorkletProcessorRequest) => {
this.port.postMessage({
request: req
}, [req.voice]);
}
handleMessage(event: any) {
// console.log(`[Node:handleMessage_] `, event.data.volume);
this.listener.notifyVolume(event.data.volume as number)
}
}