voice-changer/client/demo/src/hooks/useWorkletSetting.ts

51 lines
1.5 KiB
TypeScript
Raw Normal View History

2023-01-11 22:52:01 +03:00
import { DefaultWorkletSetting, VoiceChangerClient, WorkletSetting } from "@dannadori/voice-changer-client-js"
2023-01-12 12:06:15 +03:00
import { useState, useMemo, useEffect } from "react"
2023-01-11 22:52:01 +03:00
export type UseWorkletSettingProps = {
voiceChangerClient: VoiceChangerClient | null
}
export type WorkletSettingState = {
setting: WorkletSetting;
setSetting: (setting: WorkletSetting) => void;
}
export const useWorkletSetting = (props: UseWorkletSettingProps): WorkletSettingState => {
const [setting, _setSetting] = useState<WorkletSetting>(DefaultWorkletSetting)
const setSetting = useMemo(() => {
return (setting: WorkletSetting) => {
if (!props.voiceChangerClient) return
props.voiceChangerClient.configureWorklet(setting)
_setSetting(setting)
}
}, [props.voiceChangerClient])
2023-01-12 12:06:15 +03:00
//////////////
// デフォルト設定
/////////////
useEffect(() => {
const params = new URLSearchParams(location.search);
const colab = params.get("colab")
if (colab == "true") {
setSetting({
numTrancateTreshold: 300,
volTrancateThreshold: 0.0005,
volTrancateLength: 32,
})
} else {
setSetting({
numTrancateTreshold: 150,
volTrancateThreshold: 0.0005,
volTrancateLength: 32,
})
}
}, [props.voiceChangerClient])
2023-01-11 22:52:01 +03:00
return {
setting,
setSetting
}
}