import * as React from "react"; import { useEffect, useMemo, useState } from "react"; import { AUDIO_ELEMENT_FOR_PLAY_RESULT } from "./const"; import { useServerSetting } from "./101_server_setting"; import { useDeviceSetting } from "./102_device_setting"; import { useConvertSetting } from "./104_convert_setting"; import { useAdvancedSetting } from "./105_advanced_setting"; import { useSpeakerSetting } from "./103_speaker_setting"; import { useClient } from "./hooks/useClient"; import { useServerControl } from "./106_server_control"; export const useMicrophoneOptions = () => { const [audioContext, setAudioContext] = useState(null) const clientState = useClient({ audioContext: audioContext, audioOutputElementId: AUDIO_ELEMENT_FOR_PLAY_RESULT }) const serverSetting = useServerSetting({ clientState }) const deviceSetting = useDeviceSetting(audioContext, { clientState }) const speakerSetting = useSpeakerSetting({ clientState }) const convertSetting = useConvertSetting({ clientState }) const advancedSetting = useAdvancedSetting({ clientState }) const serverControl = useServerControl({ clientState }) useEffect(() => { const createAudioContext = () => { const ctx = new AudioContext() setAudioContext(ctx) document.removeEventListener('touchstart', createAudioContext); document.removeEventListener('mousedown', createAudioContext); } document.addEventListener('touchstart', createAudioContext); document.addEventListener('mousedown', createAudioContext); }, []) const voiceChangerSetting = useMemo(() => { return ( <>
Virtual Microphone
{serverControl.serverControl} {serverSetting.serverSetting} {deviceSetting.deviceSetting} {speakerSetting.speakerSetting} {convertSetting.convertSetting} {advancedSetting.advancedSetting} ) }, [serverControl.serverControl, serverSetting.serverSetting, deviceSetting.deviceSetting, speakerSetting.speakerSetting, convertSetting.convertSetting, advancedSetting.advancedSetting]) return { voiceChangerSetting, } }