CRIWARE Unity Plugin Manual  Last Updated: 2022-08-24
SonicSYNC

SonicSYNCとは

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

利用方法

CriWareInitializer の各プラットフォーム初期化コンフィグの「Enable SonicSYNC」チェックボックスを有効にしてください。

注意事項

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

本機能は一部のプラットフォームのみに対応しています。
非対応のプラットフォームについては、今後のアップデートをお待ちください。

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

発音遅延の減少により、音声と描画との同期に対してタイミングのズレが発生します。
そのため、新しい遅延値をベースに再度各種タイミングの調整を行う必要があります。
特に発音遅延の影響の受けやすい音楽ゲームでは、描画や判定の調整を推奨します。

また、発音遅延のパフォーマンスは一定ではありません。
プラットフォーム次第では、バックグラウンド音声再生やBluetooth接続を使用すると、システム要因によってパフォーマンスが低下する可能性があります。
詳細は「 プラットフォーム別の特記事項 」を参照してください。

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

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

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

ピッチシフタの負荷軽減策等については検討中です。

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

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

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

従来方式では音途切れ発生時に警告が発生しますが、SonicSYNCが有効な場合は発生しません。
SonicSYNCでの音途切れはAtomライブラリ内部のサウンドバッファの枯渇が原因ではなく、オーディオ出力スレッドが定期的に動作出来ないことが原因となるためです。

音切れが激しい場合、以下のAPIを用いて再生に使用しているASRラックの負荷を計測してください。
  • CriAtomExAsrRack.ResetPerformanceMonitor
  • CriAtomExAsrRack.ResetPerformanceMonitorByRackId
  • CriAtomExAsrRack.GetPerformanceInfo
  • CriAtomExAsrRack.GetPerformanceInfoByRackId
上記APIを使用すると、オーディオ処理の実行間隔を取得できます。

「処理時間の平均値」が大きくなりすぎている場合、エフェクト処理が多いか端末自体の性能が不足している可能性があります。
※端末差がありますが、2000マイクロ秒以上かかっている場合は音途切れのリスクが高いです。

「処理間隔の最大値」が「処理間隔の平均値」を大きく上回ることが多い場合、音声出力スレッドの実行が阻害されている可能性があります。
音声出力スレッドの実行を阻害している原因としては、処理可能なスレッドが不足していることやバックグラウンドプロセスなどの影響が考えられます。

より詳細な原因特定を行うためには、スレッドの動作状況を確認できる各プラットフォームの開発環境にて提供されているプロファイラーを使用してください。
具体的なバックグラウンドの処理状況やスレッドの阻害状況を確認することが可能です。
特定の端末にて負荷に関係なく発生する問題については、お手数ですが弊社のテクニカルサポートにお問い合わせください。

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

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