新BeatMaster、メトロームエンジン部分の精度検証が終了し開発ロジックを決定の巻(後編)
こんにちは、安田陽です。リズム感をスパルタトレーニングするiOSアプリ「BeatMaster」シリーズの再生プロジェクトが2月1日からスタートして今日でちょうど1ヶ月。想像以上のスピードで(いまのところ、ですが)進んでいまして、プロジェクトリーダーの私としてはかなり嬉しい状況です。
さて、前回からの続きを書かせて頂きたいと思うのですが、結局、ポイントは「メトロノームアプリの場合、時間の計測をプログラムでソフトウェア的に行なうべきではない」という部分ですね。
全然正確じゃなかったXcodeのメトロノームサンプル(^^;
実はいまから10年前、初代BeatMasterを開発していたときのXcodeの中に、まさしく「メトロノームアプリ」のサンプルソースコードが入っておりました。で、それを見つけて「おぉー、なんてラッキー♡」と喜んだわけですが、実際に動かしてみると「ん??? なんか微妙…このメトロノーム、あんまり正確じゃないんですけど???!!!」という事態になりました。
つまり、スマホアプリ開発において、プログラムで「超〜正確な時間計測」を行うのって、実はそんなに簡単ではなかったんですね。厳密なレベルで見ると、やはりどうしても他のタスクの邪魔が入ってしまうのですトホホ…
超〜正確なメトロノームアプリの作り方
ではどうすればいいのか?ですが、ヒントは「itunesなどで音楽を聴く場合は、曲の再生が速くなったり遅くなったりすることはない」というところにあるような気がしています。つまり、正確なメトロノームパルスを鳴らしたければ、ソフトウェア的に時間を計測して鳴らすのではなく、オーディオとしてパルスを鳴らす、という発想ですね。
その方法でコーディングした結果、かのSteinberg社がリリースしているメトロノームアプリと同等の精度を実現できました。それがどのくらいの精度かと言いますと「5分鳴らし続けて、ズレは数百マイクロ秒」という感じです。ちなみにマイクロ秒というのは「100万分の1」という単位になっています。
↑独自開発のメトロノームエンジンで5分鳴らし続け、その波形を取り込んで精度をチェックの図。
新BeatMasterのサンプルアプリ、できました
そんな感じで開発を進めていまして、いまのサンプルアプリの状態がこちら↓↓↓
ハイ、基本的な動きはある程度できている感じです。テンポ設定もできますし、BeatMasterのコンセプトである「メトロノームをウラ拍で鳴らす + オモテ拍をタップしその精度を計測」という動きもできています。
課題は画面をタップしたときのレイテンシー
ただ、オモテ拍をタップしたときのレイテンシーが気になる状態のため、そこはこれからの課題ですね〜。反応スピードを上げるには、恐らくもっと低レベルな、つまりハードに近いレベルでのコーディングが必要になるのでは?とエンジニアSHRED氏と話しています。これって結構ハードル高いかも?ドキドキ。
という状況ですが、次回はいま制作中のUI(ユーザーインターフェイス)デザインについてお伝えする予定です。お楽しみに!
この記事が気に入ったらサポートをしてみませんか?