WIP: refactoring...

This commit is contained in:
wataru 2023-02-19 19:22:00 +09:00
parent 12e717d1b7
commit 091b72e291
14 changed files with 119 additions and 116 deletions

File diff suppressed because one or more lines are too long

View File

@ -100,11 +100,12 @@ export const useModelSettingArea = (): ServerSettingState => {
return cor return cor
} }
}).filter(x => { return x != null }) as Correspondence[] }).filter(x => { return x != null }) as Correspondence[]
appState.serverSetting.updateServerSettings({ ...appState.serverSetting.serverSetting, correspondences: cors }) console.log(cors)
appState.clientSetting.updateClientSetting({ ...appState.clientSetting.clientSetting, correspondences: cors })
} }
const onCorrespondenceFileClearClicked = () => { const onCorrespondenceFileClearClicked = () => {
appState.serverSetting.updateServerSettings({ ...appState.serverSetting.serverSetting, correspondences: [] }) appState.clientSetting.updateClientSetting({ ...appState.clientSetting.clientSetting, correspondences: [] })
} }
const onModelUploadClicked = async () => { const onModelUploadClicked = async () => {
@ -118,7 +119,7 @@ export const useModelSettingArea = (): ServerSettingState => {
const configFilenameText = appState.serverSetting.fileUploadSetting.configFile?.filename || appState.serverSetting.fileUploadSetting.configFile?.file?.name || "" const configFilenameText = appState.serverSetting.fileUploadSetting.configFile?.filename || appState.serverSetting.fileUploadSetting.configFile?.file?.name || ""
const onnxModelFilenameText = appState.serverSetting.fileUploadSetting.onnxModel?.filename || appState.serverSetting.fileUploadSetting.onnxModel?.file?.name || "" const onnxModelFilenameText = appState.serverSetting.fileUploadSetting.onnxModel?.filename || appState.serverSetting.fileUploadSetting.onnxModel?.file?.name || ""
const pyTorchFilenameText = appState.serverSetting.fileUploadSetting.pyTorchModel?.filename || appState.serverSetting.fileUploadSetting.pyTorchModel?.file?.name || "" const pyTorchFilenameText = appState.serverSetting.fileUploadSetting.pyTorchModel?.filename || appState.serverSetting.fileUploadSetting.pyTorchModel?.file?.name || ""
const correspondenceFileText = appState.serverSetting.serverSetting.correspondences ? JSON.stringify(appState.serverSetting.serverSetting.correspondences.map(x => { return x.dirname })) : "" const correspondenceFileText = appState.clientSetting.clientSetting.correspondences ? JSON.stringify(appState.clientSetting.clientSetting.correspondences.map(x => { return x.dirname })) : ""
return ( return (
<> <>
@ -202,7 +203,7 @@ export const useModelSettingArea = (): ServerSettingState => {
appState.serverSetting.loadModel, appState.serverSetting.loadModel,
appState.serverSetting.isUploading, appState.serverSetting.isUploading,
appState.serverSetting.uploadProgress, appState.serverSetting.uploadProgress,
appState.serverSetting.serverSetting.correspondences, appState.clientSetting.clientSetting.correspondences,
appState.serverSetting.updateServerSettings, appState.serverSetting.updateServerSettings,
appState.serverSetting.setFileUploadSetting, appState.serverSetting.setFileUploadSetting,
showPyTorch]) showPyTorch])

View File

@ -30,6 +30,13 @@ const reloadDevices = async () => {
toJSON: () => { } toJSON: () => { }
}) })
const audioOutputs = mediaDeviceInfos.filter(x => { return x.kind == "audiooutput" }) const audioOutputs = mediaDeviceInfos.filter(x => { return x.kind == "audiooutput" })
audioOutputs.push({
deviceId: "none",
groupId: "none",
kind: "audiooutput",
label: "none",
toJSON: () => { }
})
// audioOutputs.push({ // audioOutputs.push({
// deviceId: "record", // deviceId: "record",
// groupId: "record", // groupId: "record",
@ -98,7 +105,6 @@ export const useDeviceSetting = (): DeviceSettingState => {
return x.deviceId == appState.clientSetting.clientSetting.audioInput return x.deviceId == appState.clientSetting.clientSetting.audioInput
})) { })) {
setAudioInputForGUI(appState.clientSetting.clientSetting.audioInput) setAudioInputForGUI(appState.clientSetting.clientSetting.audioInput)
} }
} }
}, [inputAudioDeviceInfo, appState.clientSetting.clientSetting.audioInput]) }, [inputAudioDeviceInfo, appState.clientSetting.clientSetting.audioInput])

View File

@ -131,11 +131,11 @@ export const useQualityControl = (): QualityControlState => {
const recordIORow = useMemo(() => { const recordIORow = useMemo(() => {
const onRecordStartClicked = async () => { const onRecordStartClicked = async () => {
setRecording(true) setRecording(true)
appState.serverSetting.updateServerSettings({ ...appState.serverSetting.serverSetting, recordIO: 1 }) await appState.serverSetting.updateServerSettings({ ...appState.serverSetting.serverSetting, recordIO: 1 })
} }
const onRecordStopClicked = async () => { const onRecordStopClicked = async () => {
setRecording(false) setRecording(false)
appState.serverSetting.updateServerSettings({ ...appState.serverSetting.serverSetting, recordIO: 0 }) await appState.serverSetting.updateServerSettings({ ...appState.serverSetting.serverSetting, recordIO: 0 })
} }
const onRecordAnalizeClicked = async () => { const onRecordAnalizeClicked = async () => {
if (appState.frontendManagerState.isConverting) { if (appState.frontendManagerState.isConverting) {
@ -143,7 +143,7 @@ export const useQualityControl = (): QualityControlState => {
return return
} }
appState.frontendManagerState.setIsAnalyzing(true) appState.frontendManagerState.setIsAnalyzing(true)
appState.serverSetting.updateServerSettings({ ...appState.serverSetting.serverSetting, recordIO: 2 }) await appState.serverSetting.updateServerSettings({ ...appState.serverSetting.serverSetting, recordIO: 2 })
// set spectrogram (dio) // set spectrogram (dio)
const imageDio = document.getElementById("body-image-container-img-dio") as HTMLImageElement const imageDio = document.getElementById("body-image-container-img-dio") as HTMLImageElement
imageDio.src = "/tmp/analyze-dio.png?" + new Date().getTime() imageDio.src = "/tmp/analyze-dio.png?" + new Date().getTime()

View File

@ -16,27 +16,12 @@ export const useSpeakerSetting = () => {
return <HeaderButton {...accodionButtonProps}></HeaderButton>; return <HeaderButton {...accodionButtonProps}></HeaderButton>;
}, []); }, []);
const [editSpeakerTargetId, setEditSpeakerTargetId] = useState<number>(0)
const [editSpeakerTargetName, setEditSpeakerTargetName] = useState<string>("")
// useEffect(() => {
// const src = appState.clientSetting.setting.correspondences?.find(x => {
// return x.sid == appState.serverSetting.serverSetting.srcId
// })
// const dst = appState.clientSetting.setting.correspondences?.find(x => {
// return x.sid == appState.serverSetting.serverSetting.dstId
// })
// const recommendedF0Factor = dst && src ? dst.correspondence / src.correspondence : 0
// appState.serverSetting.updateServerSettings({ ...appState.serverSetting.serverSetting, f0Factor: recommendedF0Factor })
// }, [appState.serverSetting.serverSetting.srcId, appState.serverSetting.serverSetting.dstId, appState.serverSetting.updateServerSettings])
const calcDefaultF0Factor = (srcId: number, dstId: number) => { const calcDefaultF0Factor = (srcId: number, dstId: number) => {
const src = appState.serverSetting.serverSetting.correspondences?.find(x => { const src = appState.clientSetting.clientSetting.correspondences?.find(x => {
return x.sid == srcId return x.sid == srcId
}) })
const dst = appState.serverSetting.serverSetting.correspondences?.find(x => { const dst = appState.clientSetting.clientSetting.correspondences?.find(x => {
return x.sid == dstId return x.sid == dstId
}) })
const recommendedF0Factor = dst && src ? dst.correspondence / src.correspondence : 0 const recommendedF0Factor = dst && src ? dst.correspondence / src.correspondence : 0
@ -46,7 +31,7 @@ export const useSpeakerSetting = () => {
console.log() console.log()
const srcIdRow = useMemo(() => { const srcIdRow = useMemo(() => {
const selected = appState.serverSetting.serverSetting.correspondences?.find(x => { const selected = appState.clientSetting.clientSetting.correspondences?.find(x => {
return x.sid == appState.serverSetting.serverSetting.srcId return x.sid == appState.serverSetting.serverSetting.srcId
}) })
return ( return (
@ -58,7 +43,7 @@ export const useSpeakerSetting = () => {
appState.serverSetting.updateServerSettings({ ...appState.serverSetting.serverSetting, srcId: Number(e.target.value), f0Factor: recF0 }) appState.serverSetting.updateServerSettings({ ...appState.serverSetting.serverSetting, srcId: Number(e.target.value), f0Factor: recF0 })
}}> }}>
{ {
appState.serverSetting.serverSetting.correspondences?.map(x => { appState.clientSetting.clientSetting.correspondences?.map(x => {
return <option key={x.sid} value={x.sid}>{x.dirname}({x.sid})</option> return <option key={x.sid} value={x.sid}>{x.dirname}({x.sid})</option>
}) })
@ -71,10 +56,10 @@ export const useSpeakerSetting = () => {
<div className="body-item-text"></div> <div className="body-item-text"></div>
</div> </div>
) )
}, [appState.serverSetting.serverSetting.srcId, appState.serverSetting.serverSetting.dstId, appState.serverSetting.serverSetting.correspondences, appState.serverSetting.updateServerSettings]) }, [appState.serverSetting.serverSetting.srcId, appState.serverSetting.serverSetting.dstId, appState.clientSetting.clientSetting.correspondences, appState.serverSetting.updateServerSettings])
const dstIdRow = useMemo(() => { const dstIdRow = useMemo(() => {
const selected = appState.serverSetting.serverSetting.correspondences?.find(x => { const selected = appState.clientSetting.clientSetting.correspondences?.find(x => {
return x.sid == appState.serverSetting.serverSetting.dstId return x.sid == appState.serverSetting.serverSetting.dstId
}) })
return ( return (
@ -90,7 +75,7 @@ export const useSpeakerSetting = () => {
// appState.clientSetting.setting.speakers.map(x => { // appState.clientSetting.setting.speakers.map(x => {
// return <option key={x.id} value={x.id}>{x.name}({x.id})</option> // return <option key={x.id} value={x.id}>{x.name}({x.id})</option>
// }) // })
appState.serverSetting.serverSetting.correspondences?.map(x => { appState.clientSetting.clientSetting.correspondences?.map(x => {
return <option key={x.sid} value={x.sid}>{x.dirname}({x.sid})</option> return <option key={x.sid} value={x.sid}>{x.dirname}({x.sid})</option>
}) })
} }
@ -102,7 +87,7 @@ export const useSpeakerSetting = () => {
<div className="body-item-text"></div> <div className="body-item-text"></div>
</div> </div>
) )
}, [appState.serverSetting.serverSetting.srcId, appState.serverSetting.serverSetting.dstId, appState.serverSetting.serverSetting.correspondences, appState.serverSetting.updateServerSettings]) }, [appState.serverSetting.serverSetting.srcId, appState.serverSetting.serverSetting.dstId, appState.clientSetting.clientSetting.correspondences, appState.serverSetting.updateServerSettings])
// const editSpeakerIdMappingRow = useMemo(() => { // const editSpeakerIdMappingRow = useMemo(() => {
// const onSetSpeakerMappingClicked = async () => { // const onSetSpeakerMappingClicked = async () => {
@ -152,10 +137,10 @@ export const useSpeakerSetting = () => {
const f0FactorRow = useMemo(() => { const f0FactorRow = useMemo(() => {
const src = appState.serverSetting.serverSetting.correspondences?.find(x => { const src = appState.clientSetting.clientSetting.correspondences?.find(x => {
return x.sid == appState.serverSetting.serverSetting.srcId return x.sid == appState.serverSetting.serverSetting.srcId
}) })
const dst = appState.serverSetting.serverSetting.correspondences?.find(x => { const dst = appState.clientSetting.clientSetting.correspondences?.find(x => {
return x.sid == appState.serverSetting.serverSetting.dstId return x.sid == appState.serverSetting.serverSetting.dstId
}) })
@ -174,7 +159,7 @@ export const useSpeakerSetting = () => {
<div className="body-item-text">recommend: {recommendedF0Factor.toFixed(1)}</div> <div className="body-item-text">recommend: {recommendedF0Factor.toFixed(1)}</div>
</div> </div>
) )
}, [appState.serverSetting.serverSetting.f0Factor, appState.serverSetting.serverSetting.srcId, appState.serverSetting.serverSetting.dstId, appState.serverSetting.serverSetting.correspondences, appState.serverSetting.updateServerSettings]) }, [appState.serverSetting.serverSetting.f0Factor, appState.serverSetting.serverSetting.srcId, appState.serverSetting.serverSetting.dstId, appState.clientSetting.clientSetting.correspondences, appState.serverSetting.updateServerSettings])
const speakerSetting = useMemo(() => { const speakerSetting = useMemo(() => {
return ( return (

View File

@ -26,7 +26,7 @@ export const useConvertSetting = (): ConvertSettingState => {
<div className="body-item-title left-padding-1">Input Chunk Num(128sample/chunk)</div> <div className="body-item-title left-padding-1">Input Chunk Num(128sample/chunk)</div>
<div className="body-input-container"> <div className="body-input-container">
<input type="number" min={1} max={256} step={1} value={appState.streamerSetting.audioStreamerSetting.inputChunkNum} onChange={(e) => { <input type="number" min={1} max={256} step={1} value={appState.streamerSetting.audioStreamerSetting.inputChunkNum} onChange={(e) => {
appState.streamerSetting.setSetting({ ...appState.streamerSetting.audioStreamerSetting, inputChunkNum: Number(e.target.value) }) appState.streamerSetting.updateAudioStreamerSetting({ ...appState.streamerSetting.audioStreamerSetting, inputChunkNum: Number(e.target.value) })
}} /> }} />
</div> </div>
<div className="body-item-text"> <div className="body-item-text">
@ -36,7 +36,7 @@ export const useConvertSetting = (): ConvertSettingState => {
</div> </div>
) )
}, [appState.streamerSetting.audioStreamerSetting.inputChunkNum, appState.streamerSetting.setSetting]) }, [appState.streamerSetting.audioStreamerSetting.inputChunkNum, appState.streamerSetting.updateAudioStreamerSetting])
const gpuRow = useMemo(() => { const gpuRow = useMemo(() => {
return ( return (

View File

@ -41,7 +41,7 @@ export const useAdvancedSetting = (): AdvancedSettingState => {
const protocolRow = useMemo(() => { const protocolRow = useMemo(() => {
const onProtocolChanged = async (val: Protocol) => { const onProtocolChanged = async (val: Protocol) => {
appState.streamerSetting.setSetting({ ...appState.streamerSetting.audioStreamerSetting, protocol: val }) appState.streamerSetting.updateAudioStreamerSetting({ ...appState.streamerSetting.audioStreamerSetting, protocol: val })
} }
return ( return (
<div className="body-row split-3-7 left-padding-1 guided"> <div className="body-row split-3-7 left-padding-1 guided">
@ -60,7 +60,7 @@ export const useAdvancedSetting = (): AdvancedSettingState => {
</div> </div>
</div> </div>
) )
}, [appState.streamerSetting.audioStreamerSetting.protocol, appState.streamerSetting.setSetting]) }, [appState.streamerSetting.audioStreamerSetting.protocol, appState.streamerSetting.updateAudioStreamerSetting])
const sampleRateRow = useMemo(() => { const sampleRateRow = useMemo(() => {
@ -88,7 +88,7 @@ export const useAdvancedSetting = (): AdvancedSettingState => {
<div className="body-item-title left-padding-1">Sending Sample Rate</div> <div className="body-item-title left-padding-1">Sending Sample Rate</div>
<div className="body-select-container"> <div className="body-select-container">
<select className="body-select" value={appState.streamerSetting.audioStreamerSetting.sendingSampleRate} onChange={(e) => { <select className="body-select" value={appState.streamerSetting.audioStreamerSetting.sendingSampleRate} onChange={(e) => {
appState.streamerSetting.setSetting({ ...appState.streamerSetting.audioStreamerSetting, sendingSampleRate: Number(e.target.value) as InputSampleRate }) appState.streamerSetting.updateAudioStreamerSetting({ ...appState.streamerSetting.audioStreamerSetting, sendingSampleRate: Number(e.target.value) as InputSampleRate })
appState.serverSetting.updateServerSettings({ ...appState.serverSetting.serverSetting, inputSampleRate: Number(e.target.value) as InputSampleRate }) appState.serverSetting.updateServerSettings({ ...appState.serverSetting.serverSetting, inputSampleRate: Number(e.target.value) as InputSampleRate })
}}> }}>
{ {
@ -100,7 +100,7 @@ export const useAdvancedSetting = (): AdvancedSettingState => {
</div> </div>
</div> </div>
) )
}, [appState.streamerSetting.audioStreamerSetting.sendingSampleRate, appState.streamerSetting.setSetting, appState.serverSetting.updateServerSettings]) }, [appState.streamerSetting.audioStreamerSetting.sendingSampleRate, appState.streamerSetting.updateAudioStreamerSetting, appState.serverSetting.updateServerSettings])
const bufferSizeRow = useMemo(() => { const bufferSizeRow = useMemo(() => {
return ( return (
@ -175,7 +175,7 @@ export const useAdvancedSetting = (): AdvancedSettingState => {
<div className="body-item-title left-padding-1 ">DownSamplingMode</div> <div className="body-item-title left-padding-1 ">DownSamplingMode</div>
<div className="body-select-container"> <div className="body-select-container">
<select className="body-select" value={appState.streamerSetting.audioStreamerSetting.downSamplingMode} onChange={(e) => { <select className="body-select" value={appState.streamerSetting.audioStreamerSetting.downSamplingMode} onChange={(e) => {
appState.streamerSetting.setSetting({ ...appState.streamerSetting.audioStreamerSetting, downSamplingMode: e.target.value as DownSamplingMode }) appState.streamerSetting.updateAudioStreamerSetting({ ...appState.streamerSetting.audioStreamerSetting, downSamplingMode: e.target.value as DownSamplingMode })
}}> }}>
{ {
Object.values(DownSamplingMode).map(x => { Object.values(DownSamplingMode).map(x => {
@ -186,7 +186,7 @@ export const useAdvancedSetting = (): AdvancedSettingState => {
</div> </div>
</div> </div>
) )
}, [appState.streamerSetting.audioStreamerSetting.downSamplingMode, appState.streamerSetting.setSetting]) }, [appState.streamerSetting.audioStreamerSetting.downSamplingMode, appState.streamerSetting.updateAudioStreamerSetting])
const workletSettingRow = useMemo(() => { const workletSettingRow = useMemo(() => {

View File

@ -28,6 +28,7 @@ export class AudioStreamer extends Duplex {
super(options); super(options);
this.callbacks = callbacks this.callbacks = callbacks
this.audioStreamerListeners = audioStreamerListeners this.audioStreamerListeners = audioStreamerListeners
this.createSocketIO()
} }
private createSocketIO = () => { private createSocketIO = () => {

View File

@ -236,10 +236,20 @@ export class VoiceChangerClient {
reconstructInputRequired = true reconstructInputRequired = true
} }
if (this.setting.inputGain != setting.inputGain) {
this.setInputGain(setting.inputGain)
}
if (this.setting.outputGain != setting.outputGain) {
this.setOutputGain(setting.outputGain)
}
this.setting = setting this.setting = setting
if (reconstructInputRequired) { if (reconstructInputRequired) {
this.setup() this.setup()
} }
} }
setInputGain = (val: number) => { setInputGain = (val: number) => {

View File

@ -41,6 +41,8 @@ export const F0Detector = {
} as const } as const
export type F0Detector = typeof F0Detector[keyof typeof F0Detector] export type F0Detector = typeof F0Detector[keyof typeof F0Detector]
export const ServerSettingKey = { export const ServerSettingKey = {
"srcId": "srcId", "srcId": "srcId",
"dstId": "dstId", "dstId": "dstId",
@ -62,16 +64,6 @@ export const ServerSettingKey = {
export type ServerSettingKey = typeof ServerSettingKey[keyof typeof ServerSettingKey] export type ServerSettingKey = typeof ServerSettingKey[keyof typeof ServerSettingKey]
export type Speaker = {
"id": number,
"name": string,
}
export type Correspondence = {
"sid": number,
"correspondence": number,
"dirname": string
}
export type VoiceChangerServerSetting = { export type VoiceChangerServerSetting = {
srcId: number, srcId: number,
dstId: number, dstId: number,
@ -89,7 +81,6 @@ export type VoiceChangerServerSetting = {
recordIO: number // 0:off, 1:on recordIO: number // 0:off, 1:on
inputSampleRate: InputSampleRate inputSampleRate: InputSampleRate
} }
export type ServerInfo = VoiceChangerServerSetting & { export type ServerInfo = VoiceChangerServerSetting & {
@ -98,9 +89,6 @@ export type ServerInfo = VoiceChangerServerSetting & {
pyTorchModelFile: string, pyTorchModelFile: string,
onnxModelFile: string, onnxModelFile: string,
onnxExecutionProviders: OnnxExecutionProvider[] onnxExecutionProviders: OnnxExecutionProvider[]
speakers: Speaker[],
correspondences: Correspondence[],
} }
export const DefaultServerSetting: ServerInfo = { export const DefaultServerSetting: ServerInfo = {
@ -125,32 +113,7 @@ export const DefaultServerSetting: ServerInfo = {
configFile: "", configFile: "",
pyTorchModelFile: "", pyTorchModelFile: "",
onnxModelFile: "", onnxModelFile: "",
onnxExecutionProviders: [], onnxExecutionProviders: []
//
speakers: [
{
"id": 0,
"name": "user"
},
{
"id": 101,
"name": "ずんだもん"
},
{
"id": 102,
"name": "そら"
},
{
"id": 103,
"name": "めたん"
},
{
"id": 104,
"name": "つむぎ"
}
],
correspondences: [],
} }
@ -224,6 +187,15 @@ export const BufferSize = {
} as const } as const
export type BufferSize = typeof BufferSize[keyof typeof BufferSize] export type BufferSize = typeof BufferSize[keyof typeof BufferSize]
export type Speaker = {
"id": number,
"name": string,
}
export type Correspondence = {
"sid": number,
"correspondence": number,
"dirname": string
}
export type VoiceChangerClientSetting = { export type VoiceChangerClientSetting = {
audioInput: string | MediaStream | null, audioInput: string | MediaStream | null,
sampleRate: SampleRate, // 48000Hz sampleRate: SampleRate, // 48000Hz
@ -232,7 +204,8 @@ export type VoiceChangerClientSetting = {
noiseSuppression: boolean, noiseSuppression: boolean,
noiseSuppression2: boolean noiseSuppression2: boolean
speakers: Speaker[],
correspondences: Correspondence[],
inputGain: number inputGain: number
outputGain: number outputGain: number
} }
@ -241,7 +214,29 @@ export const DefaultVoiceChangerClientSetting: VoiceChangerClientSetting = {
audioInput: null, audioInput: null,
sampleRate: 48000, sampleRate: 48000,
bufferSize: 1024, bufferSize: 1024,
speakers: [
{
"id": 0,
"name": "user"
},
{
"id": 101,
"name": "ずんだもん"
},
{
"id": 102,
"name": "そら"
},
{
"id": 103,
"name": "めたん"
},
{
"id": 104,
"name": "つむぎ"
}
],
correspondences: [],
echoCancel: true, echoCancel: true,
noiseSuppression: true, noiseSuppression: true,
noiseSuppression2: false, noiseSuppression2: false,

View File

@ -1,6 +1,6 @@
import { useState, useMemo, useEffect } from "react" import { useState, useMemo, useEffect } from "react"
import { INDEXEDDB_KEY_CLIENT, INDEXEDDB_KEY_STREAMER, AudioStreamerSetting, DefaultAudioStreamerSetting } from "../const" import { INDEXEDDB_KEY_STREAMER, AudioStreamerSetting, DefaultAudioStreamerSetting } from "../const"
import { VoiceChangerClient } from "../VoiceChangerClient" import { VoiceChangerClient } from "../VoiceChangerClient"
import { useIndexedDB } from "./useIndexedDB" import { useIndexedDB } from "./useIndexedDB"
@ -11,7 +11,7 @@ export type UseAudioStreamerSettingProps = {
export type AudioStreamerSettingState = { export type AudioStreamerSettingState = {
audioStreamerSetting: AudioStreamerSetting; audioStreamerSetting: AudioStreamerSetting;
clearSetting: () => Promise<void> clearSetting: () => Promise<void>
setSetting: (setting: AudioStreamerSetting) => void updateAudioStreamerSetting: (setting: AudioStreamerSetting) => void
} }
@ -48,30 +48,27 @@ export const useAudioStreamerSetting = (props: UseAudioStreamerSettingProps): Au
///////////// /////////////
// const setServerUrl = useMemo(() => { const updateAudioStreamerSetting = useMemo(() => {
// return (url: string) => { return (_audioStreamerSetting: AudioStreamerSetting) => {
// if (!props.voiceChangerClient) return
// props.voiceChangerClient.setServerUrl(url, true)
// settingRef.current.mmvcServerUrl = url
// setSetting({ ...settingRef.current })
// }
// }, [props.voiceChangerClient])
const setSetting = useMemo(() => {
return (setting: AudioStreamerSetting) => {
if (!props.voiceChangerClient) return if (!props.voiceChangerClient) return
_setAudioStreamerSetting(setting) for (let k in _audioStreamerSetting) {
setItem(INDEXEDDB_KEY_CLIENT, setting) const cur_v = audioStreamerSetting[k]
props.voiceChangerClient.updateAudioStreamerSetting(setting) const new_v = _audioStreamerSetting[k]
if (cur_v != new_v) {
_setAudioStreamerSetting(_audioStreamerSetting)
setItem(INDEXEDDB_KEY_STREAMER, _audioStreamerSetting)
props.voiceChangerClient.updateAudioStreamerSetting(_audioStreamerSetting)
break
}
}
} }
}, [props.voiceChangerClient]) }, [props.voiceChangerClient, audioStreamerSetting])
console.log("AUDIO STREAMER SETTING", audioStreamerSetting)
return { return {
audioStreamerSetting, audioStreamerSetting,
clearSetting, clearSetting,
setSetting, updateAudioStreamerSetting,
} }
} }

View File

@ -1,4 +1,5 @@
import { useEffect, useMemo, useRef, useState } from "react" import { useEffect, useMemo, useRef, useState } from "react"
import { AudioStreamer } from "../AudioStreamer"
import { VoiceChangerClient } from "../VoiceChangerClient" import { VoiceChangerClient } from "../VoiceChangerClient"
import { AudioStreamerSettingState, useAudioStreamerSetting } from "./useAudioStreamerSetting" import { AudioStreamerSettingState, useAudioStreamerSetting } from "./useAudioStreamerSetting"
import { ClientSettingState, useClientSetting } from "./useClientSetting" import { ClientSettingState, useClientSetting } from "./useClientSetting"
@ -118,10 +119,10 @@ export const useClient = (props: UseClientProps): ClientState => {
const clearSetting = async () => { const clearSetting = async () => {
await clientSetting.clearSetting() await clientSetting.clearSetting()
await streamerSetting.clearSetting()
await workletSetting.clearSetting() await workletSetting.clearSetting()
await serverSetting.clearSetting() await serverSetting.clearSetting()
} }
console.log("AUDIO STREAMER SETTING USE CLIENT", clientSetting, streamerSetting)
return { return {
// 各種設定I/Fへの参照 // 各種設定I/Fへの参照

View File

@ -62,10 +62,17 @@ export const useClientSetting = (props: UseClientSettingProps): ClientSettingSta
// 設定 // 設定
///////////// /////////////
const updateClientSetting = useMemo(() => { const updateClientSetting = useMemo(() => {
return (clientSetting: VoiceChangerClientSetting) => { return (_clientSetting: VoiceChangerClientSetting) => {
if (!props.voiceChangerClient) return if (!props.voiceChangerClient) return
// storeSetting(clientSetting) for (let k in _clientSetting) {
// props.voiceChangerClient.updateClientSetting(clientSetting) const cur_v = clientSetting[k]
const new_v = _clientSetting[k]
if (cur_v != new_v) {
storeSetting(_clientSetting)
props.voiceChangerClient.updateClientSetting(_clientSetting)
break
}
}
} }
}, [props.voiceChangerClient, clientSetting]) }, [props.voiceChangerClient, clientSetting])

View File

@ -90,9 +90,9 @@ export const useServerSetting = (props: UseServerSettingProps): ServerSettingSta
const cur_v = serverSetting[k] const cur_v = serverSetting[k]
const new_v = setting[k] const new_v = setting[k]
if (cur_v != new_v) { if (cur_v != new_v) {
// console.log("update server setting!!!4", k, cur_v, new_v) console.log("update server setting!!!4", k, cur_v, new_v)
const res = await props.voiceChangerClient.updateServerSettings(k, "" + new_v) const res = await props.voiceChangerClient.updateServerSettings(k, "" + new_v)
// console.log("update server setting!!!5", res) console.log("update server setting!!!5", res)
setServerSetting(res) setServerSetting(res)
setItem(INDEXEDDB_KEY_SERVER, res) setItem(INDEXEDDB_KEY_SERVER, res)