SonicSYNCの概要

SonicSYNCとは

発音遅延を極限まで小さくする機能です。
CRI ADX2内部では余計なバッファリングを行わず、プラットフォームのオーディオドライバのバッファ更新タイミングに同期して音声出力を行います。
従来に比べて、最大約50%の改善が見込まれます。

利用方法

「プロジェクト設定 > CriWare > Atom > SmartPhone Use SonicSYNC」チェックボックスにチェックを入れることで、本機能が有効になります。
criware_ue4_atom_sonicsync_checkbox.jpg

注意事項

プラットフォームの対応状況について

本機能は下記のプラットフォームのみに対応しています。
  • Android
  • iOS

従来方式からの移行について

発音遅延の減少により、従来の描画ではタイミング差が発生します。
そのため、新しい遅延値をベースに再度各種タイミングの調整を行う必要があります。
特に発音遅延の影響の受けやすい音楽ゲームでは、描画や判定の再調整を推奨します。
また、発音遅延のパフォーマンスは一定ではありません。
プラットフォーム次第では、バックグラウンド音声再生やBluetooth接続を使用すると、システム要因によってパフォーマンスが低下する可能性があります。
詳細は下記ぺージを参照してください。

音途切れの発生リスクのある処理について

負荷の高いバスエフェクトの使用

特に下記エフェクトは処理負荷が大きく、音途切れの発生する可能性が高いです。
  • ピッチシフタ
  • リバーブ
  • I3DL2リバーブ
  • ヘッドホンバーチャルサラウンド
ピッチシフタ以外を単体で使用した場合では、音途切れするほどにはなりません。
その代わり、使用するエフェクトの組み合わせに気を付ける必要があります。
また、上記以外のエフェクトについても、同時に大量のエフェクトを使用した場合、音途切れが発生するリスクが高まります。
ピッチシフタの負荷軽減策等については検討中です。

ライブラリ内部の排他制御が行われる処理の実行

下記処理を実行すると、OSのオーディオスレッドとの間で排他制御が行われるため、処理時間が長い場合は音途切れの原因になります。
  • ボイスプールの作成・破棄
  • Manaプレイヤーの作成・破棄
  • ACBおよびAWBのロード・リリース
  • DSPバス設定のアタッチ・デタッチ
  • FCriWareApi::criAtom_Lock を使用した長時間のロック
可聴ノイズを回避するために、上記操作を無音のタイミングで行うことを推奨します。

音途切れの発生原因の特定について

従来方式では音途切れ発生時に警告が発生しますが、SonicSYNCが有効な場合は発生しません。
SonicSYNCでの音途切れは、Atomライブラリ内部のサウンドバッファの枯渇が原因ではなく、オーディオ出力スレッドが定期的に動作出来ないことが原因となるためです。
もし音途切れが激しい場合、以下のAPIを用いて再生に使用しているASRラックの負荷を計測してください。
  • FCriWareApi::criAtomExAsrRack_ResetPerformanceMonitor
  • FCriWareApi::criAtomExAsrRack_GetPerformanceInfo
上記APIを使用すると、オーディオ処理の実行間隔を取得できます。
「処理時間の平均値」が大きくなりすぎている場合、エフェクト処理が多いか端末自体の性能が不足している可能性があります。
※端末差がありますが、2000マイクロ秒以上かかっている場合は音途切れのリスクが高いです。
「処理間隔の最大値」が「処理間隔の平均値」を大きく上回ることが多い場合、音声出力スレッドの実行が阻害されている可能性があります。
音声出力スレッドの実行を阻害している原因としては、処理可能なスレッドが不足していることやバックグラウンドプロセスなどの影響が考えられます。
より詳細な原因特定を行うためには、スレッドの動作状況を確認できる各プラットフォームの開発環境にて提供されているプロファイラーを使用して下さい。
具体的なバックグラウンドの処理状況やスレッドの阻害状況を確認することが可能です。
特定の端末にて負荷に関係なく発生する問題については、お手数ですが弊社のテクニカルサポートにお問い合わせください。

プラットフォーム別の特記事項

プラットフォームにおける実際の性能や注意事項などは、以下のページを参照してください。