2014-10-01 2 views
2

나는 OscillatorNode를 사용하여 100hz 톤을 재생하는 간단한 synth를 가지고 있습니다. 내 synth 사파리 iPad 4 ios 7.1.1, 내가 시도한 다른 모든 브라우저 (크롬 iPad 4, 사파리 ipad 2 ios 7.1.1, 사파리 아이폰 5, 내 Mac에 사파리에 비해 전체 단계에 대해 플랫입니다). 필자는 out-of-tune 브라우저 인 iPad 4 safari의 샘플 속도가 44100hz임을 확인했습니다. 조정 된 브라우저는 4400hz와 같은 샘플 속도를보고합니다.웹 오디오 API - iPad4 사파리가 부족합니다.

내 코드는 매우 간단하며 이것이 내 프로그래밍 오류 일 수있는 방법을 모르겠다. 특히 iPad 2와 iPad 4가 동일한 OS (아마도 동일한 사파리 버전)를 실행하고 있다고 생각합니다. 기묘한, 저수준과 하드웨어에 의존하는 뭔가가 진행되고있는 것처럼 보입니다.

이 것이 알려진 문제입니까? 그렇다면이를 테스트하거나 그 문제를 해결할 수있는 방법이 있습니까? 죽은 간단한 오실레이터 테스트 -

===== 편집 ======== 다음은 예 (사파리 전용)입니다. 이 때문에 한 44.1kHz의에서 재생 장치와 48kHz의에서 재생, 다른 하나는 아마도 http://www.morganpackard.com/webaudio_test/OscillatorTest.html

 var context = new webkitAudioContext(); 
     var osc = context.createOscillator(); 
     osc.connect(context.destination); 
     osc.frequency.value = 440; 
     osc.start(0); 
+0

샘플 코드를 게시 할 수 있습니까? – cwilso

+0

@cwilso 오늘 밤 샘플 코드를 게시하려고합니다. – morgancodes

답변

1

내 아이 패드 4에 내 아이폰 5S에 1 피치, 다른 피치로 재생합니다. 아마도 샘플 속도의 변화와 샘플 속도의 잘못된보고를 막는 브라우저 버그가있을 것입니다.

Android의 Chrome은 기록 및 재생 샘플링 속도가 동일해야하는 것과 유사한 문제가 있습니다. 온보드 마이크에서 녹음 할 때 일반적으로 발생하는 것이 아니기 때문에 오디오 녹음이 항상 조용한 것처럼 보일 수 있습니다.

+0

나에게 합리적인 가설처럼 들립니다. 나는 컨텍스트의 현재 시간이 맞는지 또는 정규 javascript 클럭보다 뒤떨어 지는지 (예 : 오디오 컨텍스트 시계가 샘플을 계산하여 작동한다고 가정)를 검사하여이를 테스트 할 수 있다고 생각합니다. 이 버그를 테스트하는 방법에 대한 다른 생각은 없습니까? 자바 스크립트가 하드웨어 샘플 속도를 쿼리하는 방법이 있다고 상상하지 못합니다. – morgancodes

+1

@morgancodes 1 초마다 신호음을 울릴 수 있으며 신속하게 위상이 떨어지는 것을들을 수 있습니까? 기술적으로, 피치를 벗어난 테스트는 이미 꽤 좋은 테스트입니다. 이 차이를 측정하여 44.1kHz/48kHz와 같은지 확인할 수 있습니다. – Brad

+0

좋은 데모처럼 들리지만 버그가 있음을 보여줍니다. 런타임 테스트/해결 방법을 설계하는 데 관심이있을 것입니다. 따라서 조정되지 않은 이러한 장치 중 하나가 발생하면 즉시 조정할 수 있습니다. 저는 여러 개의 장치가 동일한 물리적 공간에서 오디오를 재생하는 응용 프로그램을 만드는 데 특히 관심이 있습니다. 매 10 번째 장치가 돌이킬 수 없을 정도로 조정되지 않는 경우에는 불량합니다. – morgancodes

관련 문제