0

私はかなり長い間メトロノームアプリに取り組んできました。Apple のサンプル メトロノーム アプリケーションに従って、(優先度の高い) バックグラウンド スレッドでタイマーを使用してシステム サウンドを再生しました。私の結果は大丈夫ですが、完璧には程遠いです。私が直面しているいくつかの問題は次のとおりです。

  • アプリは時間を正確に記録しているように聞こえますが、実際には時間を記録していません
  • サウンド スレッドの実行中は、メイン スレッドが非常に遅くなるため、メイン スレッドで多くのことを行うことができません。
  • デバイスのロック ボタンまたは音量ボタンを押すと、テンポが狂ってしまいます。
  • 電話が無音の場合、システム サウンドは再生されません

昨日、アプリ ストアでメトロノームを購入しましたが、このアプリには上記の問題がまったくないことがわかりました。iPhoneをミュートしても再生が停止しなかったため、システムサウンドを使用していませんでした。

今、誰かがこのタスクのためのより優れた、より堅牢なフレームワークに向けて私を導くことができるかどうか疑問に思っています?

4

3 に答える 3

2

OSX オーディオ ライブラリは「コア オーディオ」と呼ばれます。オーディオ ハードウェアと Core Audio フレームワークを操作するには、いくつかの方法があります。OpenGLがグラフィック用であるのと同じように、オーディオへのクロスプラットフォーム標準アプローチであるOpenAL(別のコメントで述べたように)があります。生の PCM オーディオをリアルタイムで提供できる、オーディオ ハードウェアへのコールバック ベースのインターフェイスである Audio Unit もあります。Audio Units は非常に時間に制約があるため、メトロノミック リズムを探している場合は、Audio Units がそれを実行できます。AudioQueue と呼ばれる Audio Units の上にもレイヤーがあり、リアルタイムで再生するオーディオ ストリームをスケジュールできます。AudioQueue の利点の 1 つは、MP3 や AAC などの圧縮形式を自動的にデコードできることです。

iPhone のさまざまなオーディオ フレームワークの詳細については、ドキュメントの「Core Audio Overview」を検索してください。

于 2009-10-29T15:09:04.897 に答える
1

ここから炎を上げますので、気に入らない方はコメントをお願いします。しかし、実際にアップルが提供するドキュメントを見ましたか?

「オーディオ入門」ページのドキュメントには、オーディオを再生する複数の方法がリストされており、1つは「I / Oレイテンシが最小のサウンドを再生する、またはオーディオの入力と出力を同時に提供する...」と明示的に述べています(おそらく違反しているここでNDAは何でも)

ここで質問する前に、少なくともドキュメントでピークに達します

于 2009-10-29T15:20:56.833 に答える
1

OpenAL を使用してサウンドを操作できます。低レベルの API を使用し、高速に動作します。また、Apple の AudioSessionProgrammingGuide もお読みください。そこでは、考えられる質問に対する多くの回答が見つかります。

于 2009-10-29T10:20:52.000 に答える