web-audio api - iPad4 safari不符合规格?
我有一个简单的合成器,使用OscillatorNode播放100hz音调。与我尝试过的所有其他浏览器(铬版iPad 4,safari ipad 2 ios 7.1.1,safari iPhone 5,我的mac上的chrome和safari)相比,我的合成器在safari iPad 4 ios 7.1.1上保持了整整一步)。我已验证失调浏览器iPad 4 safari的采样率为44100hz。 In-tune浏览器报告相同的采样率,4400hz。web-audio api - iPad4 safari不符合规格?
我的代码很简单,我不明白这可能是我的一个编程错误。特别是考虑到iPad 2和iPad 4运行相同的操作系统(可能是Safari的相同版本)。看起来似乎有些奇怪的,低级的和依赖于硬件的事情正在发生。
这是一个已知的问题?如果是这样,是否有任何方法来测试或解决它?
=====编辑========
下面是一个例子(野生动物园只) - 死简单的振荡测试。在我的iPhone 5S一个音调,不同的音调播放上我的iPad 4 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);
这可能是由于在一台设备在44.1播放和其他播放以48kHz。可能有一个浏览器错误阻止了采样率的变化,以及随后的采样率误报。
Android上的Chrome有一个类似的问题,即记录和回放采样率必须相同。由于这通常不会发生在从车载麦克风录音时,因为虽然看起来录音音频始终保持沉默。
听起来像一个合理的假设给我。我想我可以通过检查上下文的当前时间是否正确,或者它是否落后于正常的JavaScript时钟(假设音频上下文时钟通过对样本进行计数)来进行测试。有关我如何测试此bug的其他想法?我不认为有一种方法可以用来查询硬件采样率。 – morgancodes 2014-10-01 18:42:08
@morgancodes您是否可以每隔一秒左右发出一声哔哔声,并听取它们快速失灵的相位?从技术上讲,你对他们不合格的测试已经是一个相当不错的测试。你可以测量这个差异,看看它是否等于44.1kHz/48kHz。 – Brad 2014-10-01 21:23:14
这听起来像一个很好的演示,以说明有一个错误。我有兴趣设计一个运行时测试/解决方案,以便当我遇到这些设备不符合要求时,我可以随时进行调整。我特别感兴趣的是构建一个应用程序,其中多个设备在相同的物理空间中播放音频,如果每第十个设备都无法调整,那将是一件坏事。 – morgancodes 2014-10-02 16:14:54
你可以发布你的示例代码? – cwilso 2014-10-01 17:45:23
@cwilso今晚将尝试发布示例代码。 – morgancodes 2014-10-01 18:20:54