2016-05-15 20 views
0

私はメトロノームアプリを作ろうとしており、BeatKeeperアプリ/ githubレポからコアコードを借りてきました。メトロノームがビートを演奏しているときにUIを同期しようとすると問題が発生します。 BeatKeeperレポはこの問題に対処しようとしますが、解決策は不足しています。私も2つの方法で試しましたが、何も効果がありませんでした。AudioTrackストリーミングとメトロノームUIの同期

私はAudioTrackクラスを使ってオーディオを書きました(これはスネアサウンドです)。オーディオはwavファイルからインポートされます。毎分ビートが与えられたら、書き込まれるべきスネアサンプルの数を計算し、残りのサンプルに0(無音の場合)を入力します。だから、ビートごとにスネアサンプルとそれからサイレントサンプルをAudioTrackに書き込みます。スネアサンプルを作成した後、現在のビートのTextViewを更新するUIスレッドに(Handlerを使用して)メッセージを送信します。しかし、2つは同期していません。

誰でもこれを行う方法を知っていますか?私はこれを完全に行ういくつかのメトロノームアプリ(Mobile MetronomeMetronome Beats)を逆コンパイルしました。コードを覗いて、私はAudioTrackのインポートを見つけましたので、AudioTrackでこれが可能であると仮定しています。

コードを共有するために非常に素朴なボーンアプリケーション/ githubレポを作成しました。 Metronomeクラスは、魔法の発生場所です。 branchも作成し、AudioTrackのNotificationMarkerPositionを使用してUIをいつ更新するかを試みました。リスナーを使用して、私は現在の頭の位置を使用し、イベントが発生するたびに新しいマーカーを追加して永遠のビートイベントを取得します。しかし、その試行は数回のビートの後にドリフトし始めます。私はドリフトを考慮して修正しようと試みたこともありますが、それはどちらもうまくいかないのです。

私は通常、質問にコードを掲示するのが通例だと知っていますが、レポは私にとってもっと実用的だったようです。必要であればコードを投稿することもできます。私は、UIに同期したメトロノームを作るための助言/提案や代替案をお待ちしております。

答えて

0

このプロジェクトについてどうやってですか? https://github.com/felixpalmer/android-visualizer

これは、コアとしてVisualizerを使用します。

+0

Visualizerの経験があり、それが私のユースケースでうまくいくと思われるのですか、それとも単なる提案ですか?私はオーディオプログラミングに関する多くの経験はありませんが、これまで私は特定のユースケースでビジュアライザーを使用している人は見ていませんでした。 私はそれを試してみるのですが、私はただ私の期待を測りたいと思っていました。ありがとう – blinkmacalahan

+0

ちょうど提案。 –

関連する問題