mirror of
https://github.com/w-okada/voice-changer.git
synced 2025-03-15 04:13:57 +03:00
save client config
This commit is contained in:
parent
baeb771c29
commit
ad9f910163
12
client/demo/dist/index.js
vendored
12
client/demo/dist/index.js
vendored
File diff suppressed because one or more lines are too long
@ -36,14 +36,14 @@ export const AppStateProvider = ({ children }: Props) => {
|
|||||||
}, [])
|
}, [])
|
||||||
|
|
||||||
const initializedRef = useRef<boolean>(false)
|
const initializedRef = useRef<boolean>(false)
|
||||||
useEffect(() => {
|
// useEffect(() => {
|
||||||
if (clientState.clientState.initialized) {
|
// if (clientState.clientState.initialized) {
|
||||||
initializedRef.current = true
|
// initializedRef.current = true
|
||||||
clientState.clientState.setVoiceChangerClientSetting({
|
// clientState.clientState.setVoiceChangerClientSetting({
|
||||||
...clientState.clientState.setting.voiceChangerClientSetting
|
// ...clientState.clientState.setting.voiceChangerClientSetting
|
||||||
})
|
// })
|
||||||
}
|
// }
|
||||||
}, [clientState.clientState.initialized])
|
// }, [clientState.clientState.initialized])
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (clientState.clientState.ioErrorCount > 100) {
|
if (clientState.clientState.ioErrorCount > 100) {
|
||||||
|
@ -19,7 +19,7 @@ export const GetServerInfomationDialog = () => {
|
|||||||
)
|
)
|
||||||
const content = (
|
const content = (
|
||||||
<div className="get-server-information-container">
|
<div className="get-server-information-container">
|
||||||
<textarea className="get-server-information-text-area" id="get-server-information-text-area" value={JSON.stringify(serverSetting.serverSetting, null, 4)} />
|
<textarea className="get-server-information-text-area" id="get-server-information-text-area" value={JSON.stringify(serverSetting.serverSetting, null, 4)} onChange={() => { }} />
|
||||||
</div>
|
</div>
|
||||||
)
|
)
|
||||||
return (
|
return (
|
||||||
|
@ -82,7 +82,7 @@ export const QualityArea = (props: QualityAreaProps) => {
|
|||||||
|
|
||||||
</div>
|
</div>
|
||||||
)
|
)
|
||||||
}, [serverSetting.serverSetting, setting.voiceChangerClientSetting, serverSetting.updateServerSettings, setVoiceChangerClientSetting])
|
}, [serverSetting.serverSetting, setting, serverSetting.updateServerSettings, setVoiceChangerClientSetting])
|
||||||
|
|
||||||
|
|
||||||
return qualityArea
|
return qualityArea
|
||||||
|
@ -96,7 +96,7 @@ export const DeviceArea = (_props: DeviceAreaProps) => {
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
)
|
)
|
||||||
}, [setVoiceChangerClientSetting, setting.voiceChangerClientSetting, inputAudioDeviceInfo, audioInputForGUI, serverSetting.serverSetting.enableServerAudio])
|
}, [setVoiceChangerClientSetting, setting, inputAudioDeviceInfo, audioInputForGUI, serverSetting.serverSetting.enableServerAudio])
|
||||||
|
|
||||||
|
|
||||||
// (2-2) サーバ
|
// (2-2) サーバ
|
||||||
|
@ -106,7 +106,7 @@ export const RecorderArea = (_props: RecorderAreaProps) => {
|
|||||||
</>
|
</>
|
||||||
)
|
)
|
||||||
|
|
||||||
}, [serverIORecording])
|
}, [serverIORecording, audioOutputForAnalyzer, outputAudioDeviceInfo])
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="config-sub-area">
|
<div className="config-sub-area">
|
||||||
|
@ -80,11 +80,10 @@ export const useClient = (props: UseClientProps): ClientState => {
|
|||||||
})
|
})
|
||||||
}, [])
|
}, [])
|
||||||
|
|
||||||
|
|
||||||
// (1-2) 各種設定I/F
|
// (1-2) 各種設定I/F
|
||||||
const voiceChangerClientSetting = useClientSetting({ voiceChangerClient, audioContext: props.audioContext, defaultVoiceChangerClientSetting: setting.voiceChangerClientSetting })
|
const voiceChangerClientSetting = useClientSetting({ voiceChangerClient, audioContext: props.audioContext, voiceChangerClientSetting: setting.voiceChangerClientSetting })
|
||||||
const workletNodeSetting = useWorkletNodeSetting({ voiceChangerClient: voiceChangerClient, defaultWorkletNodeSetting: setting.workletNodeSetting })
|
const workletNodeSetting = useWorkletNodeSetting({ voiceChangerClient: voiceChangerClient, workletNodeSetting: setting.workletNodeSetting })
|
||||||
useWorkletSetting({ voiceChangerClient, defaultWorkletSetting: setting.workletSetting })
|
useWorkletSetting({ voiceChangerClient, workletSetting: setting.workletSetting })
|
||||||
const serverSetting = useServerSetting({ voiceChangerClient })
|
const serverSetting = useServerSetting({ voiceChangerClient })
|
||||||
const indexedDBState = useIndexedDB({ clientType: null })
|
const indexedDBState = useIndexedDB({ clientType: null })
|
||||||
|
|
||||||
@ -128,7 +127,36 @@ export const useClient = (props: UseClientProps): ClientState => {
|
|||||||
setIoErrorCount(ioErrorCountRef.current)
|
setIoErrorCount(ioErrorCountRef.current)
|
||||||
}
|
}
|
||||||
|
|
||||||
// (2-1) 初期化処理
|
// 設定データ管理
|
||||||
|
const { setItem, getItem } = useIndexedDB({ clientType: null })
|
||||||
|
// 設定データの更新と保存
|
||||||
|
const _setSetting = (_setting: ClientSetting) => {
|
||||||
|
const storeData = { ..._setting }
|
||||||
|
storeData.voiceChangerClientSetting = { ...storeData.voiceChangerClientSetting }
|
||||||
|
if (typeof storeData.voiceChangerClientSetting.audioInput != "string") {
|
||||||
|
storeData.voiceChangerClientSetting.audioInput = "none"
|
||||||
|
}
|
||||||
|
setItem("clientSetting", storeData)
|
||||||
|
|
||||||
|
setSetting(_setting)
|
||||||
|
}
|
||||||
|
// 設定データ初期化
|
||||||
|
useEffect(() => {
|
||||||
|
if (!voiceChangerClient) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
const loadCache = async () => {
|
||||||
|
const _setting = await getItem("clientSetting") as ClientSetting
|
||||||
|
setSetting(_setting)
|
||||||
|
}
|
||||||
|
loadCache()
|
||||||
|
}, [voiceChangerClient])
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// (2-1) クライアント初期化処理
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
const initialized = async () => {
|
const initialized = async () => {
|
||||||
if (!props.audioContext) {
|
if (!props.audioContext) {
|
||||||
@ -202,7 +230,7 @@ export const useClient = (props: UseClientProps): ClientState => {
|
|||||||
setting.voiceChangerClientSetting = _voiceChangerClientSetting
|
setting.voiceChangerClientSetting = _voiceChangerClientSetting
|
||||||
console.log("setting.voiceChangerClientSetting", setting.voiceChangerClientSetting)
|
console.log("setting.voiceChangerClientSetting", setting.voiceChangerClientSetting)
|
||||||
// workletSettingIF.setSetting(_workletSetting)
|
// workletSettingIF.setSetting(_workletSetting)
|
||||||
setSetting({ ...setting })
|
_setSetting({ ...setting })
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -210,14 +238,14 @@ export const useClient = (props: UseClientProps): ClientState => {
|
|||||||
setting.workletNodeSetting = _workletNodeSetting
|
setting.workletNodeSetting = _workletNodeSetting
|
||||||
console.log("setting.workletNodeSetting", setting.workletNodeSetting)
|
console.log("setting.workletNodeSetting", setting.workletNodeSetting)
|
||||||
// workletSettingIF.setSetting(_workletSetting)
|
// workletSettingIF.setSetting(_workletSetting)
|
||||||
setSetting({ ...setting })
|
_setSetting({ ...setting })
|
||||||
}
|
}
|
||||||
|
|
||||||
const setWorkletSetting = (_workletSetting: WorkletSetting) => {
|
const setWorkletSetting = (_workletSetting: WorkletSetting) => {
|
||||||
setting.workletSetting = _workletSetting
|
setting.workletSetting = _workletSetting
|
||||||
console.log("setting.workletSetting", setting.workletSetting)
|
console.log("setting.workletSetting", setting.workletSetting)
|
||||||
// workletSettingIF.setSetting(_workletSetting)
|
// workletSettingIF.setSetting(_workletSetting)
|
||||||
setSetting({ ...setting })
|
_setSetting({ ...setting })
|
||||||
}
|
}
|
||||||
|
|
||||||
return {
|
return {
|
||||||
|
@ -6,7 +6,7 @@ import { VoiceChangerClient } from "../VoiceChangerClient"
|
|||||||
export type UseClientSettingProps = {
|
export type UseClientSettingProps = {
|
||||||
voiceChangerClient: VoiceChangerClient | null
|
voiceChangerClient: VoiceChangerClient | null
|
||||||
audioContext: AudioContext | null
|
audioContext: AudioContext | null
|
||||||
defaultVoiceChangerClientSetting: VoiceChangerClientSetting
|
voiceChangerClientSetting: VoiceChangerClientSetting
|
||||||
}
|
}
|
||||||
|
|
||||||
export type ClientSettingState = {
|
export type ClientSettingState = {
|
||||||
@ -19,23 +19,23 @@ export type ClientSettingState = {
|
|||||||
|
|
||||||
export const useClientSetting = (props: UseClientSettingProps): ClientSettingState => {
|
export const useClientSetting = (props: UseClientSettingProps): ClientSettingState => {
|
||||||
// 更新比較用
|
// 更新比較用
|
||||||
const [voiceChangerClientSetting, setVoiceChangerClientSetting] = useState<VoiceChangerClientSetting>(props.defaultVoiceChangerClientSetting)
|
const [voiceChangerClientSetting, setVoiceChangerClientSetting] = useState<VoiceChangerClientSetting>(props.voiceChangerClientSetting)
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
const update = async () => {
|
const update = async () => {
|
||||||
if (!props.voiceChangerClient) return
|
if (!props.voiceChangerClient) return
|
||||||
for (let k in props.defaultVoiceChangerClientSetting) {
|
for (let k in props.voiceChangerClientSetting) {
|
||||||
const cur_v = voiceChangerClientSetting[k as keyof VoiceChangerClientSetting]
|
const cur_v = voiceChangerClientSetting[k as keyof VoiceChangerClientSetting]
|
||||||
const new_v = props.defaultVoiceChangerClientSetting[k as keyof VoiceChangerClientSetting]
|
const new_v = props.voiceChangerClientSetting[k as keyof VoiceChangerClientSetting]
|
||||||
if (cur_v != new_v) {
|
if (cur_v != new_v) {
|
||||||
setVoiceChangerClientSetting(props.defaultVoiceChangerClientSetting)
|
setVoiceChangerClientSetting(props.voiceChangerClientSetting)
|
||||||
await props.voiceChangerClient.updateClientSetting(props.defaultVoiceChangerClientSetting)
|
await props.voiceChangerClient.updateClientSetting(props.voiceChangerClientSetting)
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
update()
|
update()
|
||||||
}, [props.voiceChangerClient, props.defaultVoiceChangerClientSetting])
|
}, [props.voiceChangerClient, props.voiceChangerClientSetting])
|
||||||
|
|
||||||
|
|
||||||
const setServerUrl = useMemo(() => {
|
const setServerUrl = useMemo(() => {
|
||||||
|
@ -6,7 +6,7 @@ import { VoiceChangerClient } from "../VoiceChangerClient"
|
|||||||
|
|
||||||
export type UseWorkletNodeSettingProps = {
|
export type UseWorkletNodeSettingProps = {
|
||||||
voiceChangerClient: VoiceChangerClient | null
|
voiceChangerClient: VoiceChangerClient | null
|
||||||
defaultWorkletNodeSetting: WorkletNodeSetting
|
workletNodeSetting: WorkletNodeSetting
|
||||||
}
|
}
|
||||||
|
|
||||||
export type WorkletNodeSettingState = {
|
export type WorkletNodeSettingState = {
|
||||||
@ -17,7 +17,7 @@ export type WorkletNodeSettingState = {
|
|||||||
|
|
||||||
export const useWorkletNodeSetting = (props: UseWorkletNodeSettingProps): WorkletNodeSettingState => {
|
export const useWorkletNodeSetting = (props: UseWorkletNodeSettingProps): WorkletNodeSettingState => {
|
||||||
// 更新比較用
|
// 更新比較用
|
||||||
const [workletNodeSetting, _setWorkletNodeSetting] = useState<WorkletNodeSetting>(props.defaultWorkletNodeSetting)
|
const [workletNodeSetting, _setWorkletNodeSetting] = useState<WorkletNodeSetting>(props.workletNodeSetting)
|
||||||
|
|
||||||
//////////////
|
//////////////
|
||||||
// 設定
|
// 設定
|
||||||
@ -25,17 +25,17 @@ export const useWorkletNodeSetting = (props: UseWorkletNodeSettingProps): Workle
|
|||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
|
|
||||||
if (!props.voiceChangerClient) return
|
if (!props.voiceChangerClient) return
|
||||||
for (let k in props.defaultWorkletNodeSetting) {
|
for (let k in props.workletNodeSetting) {
|
||||||
const cur_v = workletNodeSetting[k as keyof WorkletNodeSetting]
|
const cur_v = workletNodeSetting[k as keyof WorkletNodeSetting]
|
||||||
const new_v = props.defaultWorkletNodeSetting[k as keyof WorkletNodeSetting]
|
const new_v = props.workletNodeSetting[k as keyof WorkletNodeSetting]
|
||||||
if (cur_v != new_v) {
|
if (cur_v != new_v) {
|
||||||
_setWorkletNodeSetting(props.defaultWorkletNodeSetting)
|
_setWorkletNodeSetting(props.workletNodeSetting)
|
||||||
props.voiceChangerClient.updateWorkletNodeSetting(props.defaultWorkletNodeSetting)
|
props.voiceChangerClient.updateWorkletNodeSetting(props.workletNodeSetting)
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}, [props.voiceChangerClient, props.defaultWorkletNodeSetting])
|
}, [props.voiceChangerClient, props.workletNodeSetting])
|
||||||
|
|
||||||
|
|
||||||
const startOutputRecording = useMemo(() => {
|
const startOutputRecording = useMemo(() => {
|
||||||
|
@ -4,7 +4,7 @@ import { VoiceChangerClient } from "../VoiceChangerClient";
|
|||||||
|
|
||||||
export type UseWorkletSettingProps = {
|
export type UseWorkletSettingProps = {
|
||||||
voiceChangerClient: VoiceChangerClient | null
|
voiceChangerClient: VoiceChangerClient | null
|
||||||
defaultWorkletSetting: WorkletSetting
|
workletSetting: WorkletSetting
|
||||||
}
|
}
|
||||||
|
|
||||||
export type WorkletSettingState = {
|
export type WorkletSettingState = {
|
||||||
@ -14,12 +14,12 @@ export type WorkletSettingState = {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export const useWorkletSetting = (props: UseWorkletSettingProps): WorkletSettingState => {
|
export const useWorkletSetting = (props: UseWorkletSettingProps): WorkletSettingState => {
|
||||||
const [setting, _setSetting] = useState<WorkletSetting>(props.defaultWorkletSetting)
|
const [setting, _setSetting] = useState<WorkletSetting>(props.workletSetting)
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (!props.voiceChangerClient) return
|
if (!props.voiceChangerClient) return
|
||||||
props.voiceChangerClient.configureWorklet(setting)
|
props.voiceChangerClient.configureWorklet(setting)
|
||||||
}, [props.voiceChangerClient, props.defaultWorkletSetting])
|
}, [props.voiceChangerClient, props.workletSetting])
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user