2017-10-27 15 views
0

나는 setTargetAtTime()의 소리를 듣고 싶습니다. 그래서 이것을하고 싶습니다 :WebAudio setTargetAtTime : 수식을 초로 변환하는 수식

gainNode.gain.setTargetAtTime(0, audioContext.currentTime, timeConst) 
oscillator.stop(audioContext.currentTime + timeConstToSeconds(timeConst)); 

사운드가 기능적으로 들리지 않는 경우 오실레이터가 멈추도록하십시오. 효과적인 timeConstToSeconds() 기능은 무엇입니까?

그리고/또는 역 연산의 효과적인 공식은 무엇입니까? (입력 초, 시간 상수를 반환합니다.)

+0

왜 setTargetAtTime 대신 ['linearRampToValueAtTime'] (https://developer.mozilla.org/en-US/docs/Web/API/AudioParam/linearRampToValueAtTime)을 사용합니까? – Kaiido

+0

페이드 사운드가 약간 다르기 때문에 setTarget 사운드가 마음에 들어요. 또한 다른 브라우저는 자동화 매개 변수를 추적하는 측면에서 다르게 수행되는 것 같습니다. (그래도 알아낼 수 있습니다.) –

+1

브라우저마다 다를 경우 브라우저에 버그를 신고하십시오. 그들은 그것에 대해 모르는 경우 고정받을 수 없습니다. –

답변

1

를 사양은 setTargetAtTime 작품을 정확하게하는 방법을 알려줍니다 https://webaudio.github.io/web-audio-api/#dom-audioparam-settargetattime

거친 일반적으로는, 지수 방식의 이러한 종류는 일반적으로 5 후 최종 값에 수렴하는 것으로 간주된다 10 개 시간 상수, 그래서

function timeConstToSeconds(t) { return 10*t; }

당신은 충분히 가까이로 간주 무엇을위한 다른 적절한 값으로 변경 10.