2014.07.31 Thursday
Coconutは正確さを追求したメトロノームアプリです
Coconutは、正確さにこだわったメトロノームアプリです。
設計段階からいくつかのタイミング調整アルゴリズムを試作し、
計測や実際に耳で聴くことを繰り返し、
最も安定していたアルゴリズムを採用しました。
さらには、iOS内での未知のオーバーヘッドが発生していたとしても
その影響をできる限り削減するように、シンプルなUIを採用しています。
今回、Coconutのメトロノームの正確性がわかるように、
改めてメトロノームの誤差を測定してみました。
測定には、Coconutのメトロノームと同じアルゴリズムを採用した、
Earl Greyのメトロノームを利用しました。
(精度測定用のコードを埋め込んであるため)
測定環境
・iOS 7.1.1
・iPhone5
・機内モードOFF(キャリア通信可能状態)
・メトロノームはEarl Greyのものを使用(同じアルゴリズムを採用)
・メトロノームの速さ 180bpm (3Hz)
iOS内の計測では、1拍の誤差は1/1000000000秒以下、
1分間の累積誤差は1/100000000秒以下と、
非常に正確に動作していることがわかりました。
人の可聴音域上限である20kHzの音の1周期が0.00005秒ですから、
今回測定された誤差は、人間の耳では判別できないでしょう。
今回の測定には、iOS内部のクロックを利用していますので、
実際にはiOS内部のクロックの誤差や、
音を再生するハードウェア(DAC等諸々)での誤差が加わることになりますが、
後者のものは遅延は生じても、誤差(分散)は少ないのではないかと想像されます。
iOSで利用しているクロックも、おそらくは携帯電話の通信制御
やその他無線通信の制御にも影響してくると思いますので、
かなり精度は高いのではないかと思います。
最近の高速通信における変調復調には、
位相レベルでの高度な制御が求められます。
いずれにせよ、Coconutのメトロノームは、
iPhoneにおいて実現可能なほぼ最高の正確さを持っているといえるでしょう。
また、Coconutのアルゴリズムでは、
常にメトロノームの動作状態を監視しています。
万一iPhoneの過負荷などにより、ソフトウェアが補正したタイミングで
ハードウェアが音を鳴らすことが困難と判断された場合や、
ソフトウェアでの補正が限界を超えてできない場合は、
動作を停止して警告を表示するようにしています。
そのため、Coconutが動作して音が鳴っている限り、
メトロノームは正確に音を刻んでいる状態です。
シンプルで、正確なメトロノームアプリCoconutを是非ご利用ください。
Coconutは、次のリンクよりダウンロードできます。