mirror of
https://github.com/w-okada/voice-changer.git
synced 2025-02-12 04:55:22 +03:00
37 lines
1.1 KiB
TypeScript
37 lines
1.1 KiB
TypeScript
![]() |
import { useEffect, useState } from "react"
|
||
|
|
||
|
export type AudioConfigState = {
|
||
|
audioContext: AudioContext | null
|
||
|
}
|
||
|
|
||
|
export const useAudioConfig = (): AudioConfigState => {
|
||
|
const [audioContext, setAudioContext] = useState<AudioContext | null>(null)
|
||
|
|
||
|
useEffect(() => {
|
||
|
try {
|
||
|
const ctx = new AudioContext()
|
||
|
setAudioContext(ctx)
|
||
|
} catch (e) {
|
||
|
console.warn(e)
|
||
|
// If crate ctx failed, wait for user jesture.
|
||
|
const createAudioContext = () => {
|
||
|
console.log("click window")
|
||
|
const ctx = new AudioContext()
|
||
|
document.removeEventListener('touchstart', createAudioContext);
|
||
|
document.removeEventListener('mousedown', createAudioContext);
|
||
|
setAudioContext(ctx)
|
||
|
}
|
||
|
document.addEventListener('touchstart', createAudioContext);
|
||
|
document.addEventListener('mousedown', createAudioContext);
|
||
|
}
|
||
|
}, [])
|
||
|
|
||
|
console.log("AUDIO CONTEXT", audioContext)
|
||
|
|
||
|
const ret: AudioConfigState = {
|
||
|
audioContext
|
||
|
}
|
||
|
|
||
|
return ret
|
||
|
|
||
|
}
|