私のアプリケーションには約60のサウンドサンプルがあります。私はそれを時間通りに正確に再生する必要があります。 5ms後になります。サウンドはユーザーの操作に応じて再生する必要があります。だから私は次に何が再生されるのか分からない。すべてのサウンドのSoundEffectInstanceを事前に準備していたと思いました。 SoundEffectInstanceの作成には時間とメモリが必要ですか? SoundEffectの完全なコピーか、ポインタ情報かSoundEffectInstancesを事前に作成するとアプリケーションを改善できますか? XNAでできるだけ早くサンプルを再生する方法はありますか?できるだけ早くサウンドを再生するには?
答えて
SoundEffect
には、実際の波形データが含まれています。大量のメモリを消費します(波形データに必要な分だけ)。
SoundEffectInstance
は再生(位置、音量など)に関するデータと、再生を行うために割り当てられた「音声」に対するハンドルを含む小さなオブジェクトです。
SoundEffect.Play
を使用すると、内部でSoundEffectInstance
が作成されます。また、これらのインスタンスをプールすることもできます。後続の呼び出しで再作成する必要はありません。
SoundEffectInstance
を作成するには、時間とメモリが必要です。 30FPS(フレームあたり33ms)で動作するゲームのサウンドエフェクトについては、レイテンシは知覚できないはずです。
どこでも5msの事項、一緒に異なるサウンドエフェクトを混合することにより、配列決定した音楽を再生しようとしている場合は、DynamicSoundEffectInstance
を使用して、独自のオーディオミキサーを実装する必要があります。これにより、サウンドがサンプルに同期されることが保証されます。
あなたはリアルタイム再生可能な「楽器」のいくつかの種類を作成しようとしている、とあなたがダウン5msのにあなたの入力から出力の待ち時間を取得しようとしている場合は - そして今、あきらめます。 5msは不条理に悪く、通常は専門の機器とソフトウェアが必要です。
入力から出力までの待ち時間をできるだけ短くする必要がある場合は、入力をフレームごとに1回よりも頻繁にポーリングできます。そしておそらくDSEIを使うべきでしょう。私は、DSEIが設定可能な再生バッファサイズを持っているかどうかはわかりませんが、そうであれば、オーディオグリッチを導入することなくできるだけ小さくする必要があります。
ユーザーがセットを選択すると、それらのサウンドエフェクトをディクショナリにロードする必要があります。そのため、後でアクセスする方が早くなります。
しかし、すべてのサウンドエフェクト、特に特定の画面またはセットでは不要なサウンドエフェクトを読み込む必要はありません。さらに、必要のないサウンドエフェクトをアンロードする必要があります。
ロードするサイズと数量によっては、これらのサウンドエフェクトをロードするのに時間がかかります。私はあなたのゲームでコンテンツをロード/アンロードするための基本的な読み込み画面を作成することをお勧めします(ほとんどのゲームはそうです)。サウンド効果を短く保つ必要があるのは、ポインタだけでなく、メモリ内にsoundeffect(wav形式のと思いますか?)をロードすることです。
既にロードされているサウンドエフェクトは、非常に速く再生されます(遅延は知覚できません)。メモリ使用量を犠牲にして、プリロードすると、アプリケーションのパフォーマンスがに増加します()。
すべてのサウンドまたはSoundEffectだけにSoundEffectIstanceオブジェクトをプリロードする必要がありますか? – xander27
私はそこに[リンク](http://msdn.microsoft.com/en-us/library/microsoft.xna.framework.audio.soundeffect.aspx)が見つかりました** "SoundEffectから作成されたすべてのSoundEffectInstanceオブジェクトはメモリリソースを共有します"**。だから、私は任意の数の 'SoundEffectInstance'を作成することができます – xander27
- 1. JS「できるだけ早く」状態
- 2. PageTransformerをできるだけ早くPagerViewに適用する
- 3. NETCoreでサウンドを再生するには?
- 4. Xamarin.Formsでサウンドを再生するには?
- 5. ZeroClipboardでサウンドを再生するには?
- 6. UUIDの変更をできるだけ早く検出する
- 7. できるだけ早くサービスをインスタンス化する
- 8. R - できるだけ早くデータフレームを初期化する
- 9. できるだけ早くXMLを解析する
- 10. できるだけ早くHTTPリクエストを送信する
- 11. できるだけ早くCreateFileを作成する方法
- 12. サウンドを再生する再生ボタンを作成するには?
- 13. Cでできるだけ早くメモリを埋める方法#
- 14. できるだけ早く配列にデータをパック
- 15. できるだけ早くリクエストと結果を得る
- 16. できるだけ早く完全なディレクトリツリーを削除するには? Pythonの
- 17. NUnitでできるだけ早くlog4Netを初期化してください。
- 18. MonoTouch:サウンドを再生する
- 19. 返信リクエストHttpModulesをできるだけ早く
- 20. AVAudioPlayerではなくSKActionで再生するサウンド
- 21. JavaでTTSアプリケーションをできるだけスムーズに再生する
- 22. Androidでストリングに基づいたサウンドを再生&再生する
- 23. 大きなファイルをAndroidでできるだけ早くコピーする
- 24. できるだけ早くいくつかのビデオフレームを取得する
- 25. java.midi.sequencerでサウンドを再生できない
- 26. AVDでサウンドを再生できない
- 27. できるだけ早くウェブサイトの入手方法
- 28. ctypesデータをできるだけ早くPython文字列に変換する
- 29. できるだけ早くデータベースにExcelファイルを処理して保存する
- 30. Perlスクリプトでサウンドを再生する
アプリケーションのすべてのサウンドが必要な場合や、異なる画面に割り当てられているサウンドがある場合はありますか? – Msonic
60音ずつのセットはほとんどありません。ユーザーはセットを選択してからセットの任意のサウンドになる可能性があります – xander27