CRI ADX  Last Updated: 2024-09-25 17:41 p
SonicSYNC

SonicSYNCとは

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

利用方法

Atom ライブラリ初期化時に指定する CriAtomExConfig::thread_model に対して、以下を指定してください。
注意
マルチ以外の他のスレッドモデルでは SonicSYNC を利用することは出来ません。

注意事項

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

本機能は一部のプラットフォームのみに対応しています。
当該プラットフォームが対応しているかどうかは「 機能一覧と実装状況 」を参照してください。

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

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

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

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

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

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

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

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

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

よくある問い合わせ

SonicSYNCを使用することで追加の料金などは発生しますか?

発生しません。

SonicSYNC対応版のライブラリに更新するのですが、古いデータをそのまま使用可能ですか?

Atomライブラリはデータの互換性を維持していますので、古いCRI Atom Craftで作成したデータを新しいライブラリで使用することが可能です。

プラットフォームのAPIで指定していたバッファリング時間の設定はどのように働きますか?

SonicSYNCが有効な場合は無視されます。無効な場合は従来通りの動作となります。

メモリ再生の遅延面での優位性はSonicSYNCの有効で変化しますか?

変化しません。SonicSYNCを有効にしてもメモリ再生よりストリーム再生の方が再生遅延は大きくなります。

CPU負荷はSonicSYNCの使用で変化しますか?

処理の粒度が細かくなることで関数呼び出しのオーバーヘッドが微増していますが、大きな変化はありません。

メモリ使用量はSonicSYNCの使用で変化しますか?

ボイス単位でのバッファリング量を増やすため、微増しています。

○○の機能はSonicSYNCが有効でも使用できますか?

Android低遅延再生機能など一部の機能を除き、ほぼすべての機能が従来通りご利用いただけます。 使用できない機能がある場合は、以下のページに情報を記載しています。

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

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