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

24 lines
787 B
TypeScript
Raw Normal View History

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.`);
}
postReceivedVoice = (data: ArrayBuffer) => {
this.port.postMessage({
data: data,
}, [data]);
}
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
}
}