井原プロダクトのBLOG

Since 2013。個人でアプリ作っています。

正確なメトロノームアプリの作成

以下は127bpmにおいて音を鳴らすべき時間の理論値と、実際に出すタイミングを比較してみたものです。

基本的なエンジン部分は、ほぼこちらの作りと同じで、実行結果は、Dataの通り誤差が1ms以内に収まるようになりました。0.002の差があるのに、結果が0.001というのは、1ms以下の数値が丸まっていると思われ。

http://stackoverflow.com/questions/4485072/accurate-timing-in-ios

2014-12-11 15:19:49.127 Metronome[5286:1146464] 理論=0.000 実際=0.000 差分=0.000
2014-12-11 15:19:49.685 Metronome[5286:1146464] 理論=0.529 実際=0.530 差分=0.001
2014-12-11 15:19:50.219 Metronome[5286:1146464] 理論=1.057 実際=1.059 差分=0.001
2014-12-11 15:19:50.753 Metronome[5286:1146464] 理論=1.586 実際=1.587 差分=0.001
2014-12-11 15:19:51.263 Metronome[5286:1146464] 理論=2.115 実際=2.115 差分=0.001
2014-12-11 15:19:51.797 Metronome[5286:1146464] 理論=2.643 実際=2.643 差分=0.000
2014-12-11 15:19:52.331 Metronome[5286:1146464] 理論=3.172 実際=3.173 差分=0.001
2014-12-11 15:19:52.865 Metronome[5286:1146464] 理論=3.700 実際=3.702 差分=0.001
2014-12-11 15:19:53.375 Metronome[5286:1146464] 理論=4.229 実際=4.230 差分=0.001
2014-12-11 15:19:53.909 Metronome[5286:1146464] 理論=4.758 実際=4.758 差分=0.000
2014-12-11 15:19:54.443 Metronome[5286:1146464] 理論=5.286 実際=5.288 差分=0.001
2014-12-11 15:19:54.978 Metronome[5286:1146464] 理論=5.815 実際=5.815 差分=0.000


だがしかし!

聞いた感じ、微妙に正確じゃないんです。これって人の感覚が1msを感知しているというより、オーディオ側のレスポンスが揺らいでるって事だよね orz

ということで、3種類試してみました。

  • AVAudioPlayerによる再生(これが今までの)
  • SystemSound Playerによる再生
  • OpenALを用いた再生

結果、、、、どれも同じ(爆)


おそらく別のアプローチが必要ですね。