2012-10-26 2 views
2

자바 스크립트로 웹 오디오 API를 사용하고 있습니다.Chrome에서 지연되는 웹 오디오 API

나는 오실레이터를 생성하여 볼륨 (gainNode)에 연결하고 대상에 연결합니다.

확인. 좋은.

나는 지연 효과를 원한다. 오실레이터와 볼륨 사이에 붙인다.

글쎄, 그건 작동하지 않는다, 나는 단지 지연을 듣는다. 그것은 깨끗합니다.

좋아, 그래서 볼륨에 osc를 osc에 연결하고 osc를 볼륨에 연결 한 다음 대상 볼륨을 연결합니다.

이제 왜곡 된 것처럼 보입니다.

osc를 대상으로 볼륨까지 지연 시키려고했는데 osc를 대상으로하므로 대상에 두 개의 연결이 있습니다. 그것도 왜곡됩니다.

이것은 크롬에있는 것입니다.

iOS6에서 약간의 시간이 걸렸지 만 iOS6에서 올바르게 작동하는 것 같습니다. 사파리에 대해 모르겠다.

http://cloudmusiccompany.appspot.com/watch.jsp으로 이동하여 빨간색과 그림을 클릭하여 사용해보세요. 그것은 정상적인 사인파입니다. 이제 흰색을 클릭하고 그릴 때와 지연이 같고 크롬 (우분투)이 왜곡됩니다. Safar에 대해 모르겠다.

분명히 당신은 자바 스크립트 때문에 링크에서 전체 소스를 볼 수 있습니다.

관련 자료 :

function makeNewChannel(color){ 
    var info = getInstrumentInfo(color); 
    var chan = {osc: acontext.createOscillator(), 
    freqs: [], 
    times: [], 
    pxdata: [], 
    i: 0, 
    muted: true, 
    finishedLoop: false, 
    volume: acontext.createGainNode(), 
    gate: acontext.createGainNode(), 
    delay: acontext.createDelayNode(), 
    delayGain: acontext.createGainNode(), 
    mute: function(){ 
     this.muted = true; 
     this.volume.gain.value = 0; 
    }, 
    unmute: function(){ 
     this.muted = false; 
     this.volume.gain.value = player.defaultGain/(info.soft ? 2 : 1); 
    } 
    } 
    chan.osc.type = info.type; 

    //  chan.osc.connect(chan.gate); 
    chan.osc.connect(chan.volume); 

    chan.delayGain.gain.value = player.defaultGain ; 
    /* ugh , the wet sounds ok, but somehow its distorting or doubling the dry signal 
    * although it seems ok on iphone? 
    * */ 
    if (info.delay){ 
    chan.delay.delayTime.value = 0.5; 
    chan.volume.connect(chan.delay) 
    chan.delay.connect(chan.delayGain); 

    chan.delayGain.connect(acontext.destination); 

    } 
    chan.volume.gain.value = 0; //player.defaultGain; 
    chan.gate.gain.value = 0; 
    chan.volume.connect(acontext.destination); 
    chan.osc.frequency.value = 0; 

    chan.osc.noteOn(0); 
    return chan; 
} 
+0

소스에서 라우팅을 추출 하시겠습니까? 그것을 찾으려면 계속 읽어 봐야 할 것 같습니다. –

+0

죄송합니다. 저는 컴퓨터에 올 때 시도 할 수 있도록 방금 내 전화에서 게시했습니다. 관련 방법은 makeNewChannel입니다. – MikeHelland

+0

iOS6 장치를 사용하는 사람이 명확한 지연을 가지고 있는지, 크롬이 왜곡 된 것을 (위의 웹 페이지에서 흰색으로 그려서) 확인할 수 있다고 생각합니다. Safari 6. 죄송합니다. 모든 플랫폼에서 직접 테스트해야한다는 것을 알고 있습니다. Mac에 액세스 할 수 없습니다. – MikeHelland

답변

2

난 그냥 윈도우에서 크롬에서 사용할 수있는 기회를 가지고 있었고, 그것을 잘 작동합니다. 지연이 있어야하는 것처럼 들립니다.

이것은 Linux 버전의 버그입니다 (크롬)

1

당신은 아마 바로 상황에 맞는 목적지 전에 압축기를 추가하여이 문제를 해결 할 수있다. 모든 경로가이 경로에 연결되어야하며 압축기가 대상에 연결됩니다.

https://dvcs.w3.org/hg/audio/raw-file/tip/webaudio/specification.html#DynamicsCompressorNode

+0

나는 그것을 시도했다. 특히 문서가 그것을 사용했기 때문에, 나는 동일한 g1, s1 스키마도 사용했기 때문이다. 하지만 같은 효과. 그리고 컴프레서 또는 게인이 끝나면 나는 그들이 너무 다른 행동을 할 것이라고 기대하지 않을 것입니다. 분명히 그들은 다른 목적을 가지고 있지만 분명히 channelSplitter와 Merger를 시도했습니다. – MikeHelland

관련 문제