私は、通常、サイズが約 50 MB の大きなオーディオ マルチサンプルを使用する必要があるアプリケーションを作成しています。1 つのファイルには約 80 の個別の短いサウンド レコーディングが含まれており、アプリケーションでいつでも再生できます。このため、すべてのオーディオ データがメモリにロードされ、すばやくアクセスできます。
ただし、これらのファイルのいずれかをロードする場合、メモリに格納するのに数秒かかることがあります。つまり、プログラムが一時的にフリーズした場合です。これを回避する良い方法は何ですか?Windows および OS X と互換性がある必要があります。この時点でフリーズします。myMultiSampleClass->open();
多くの動的メモリ割り当てと、ifstream を使用したファイルからの読み取りを行う必要があります。
私は2つの可能なオプションを考えました:
ファイルを開き、別のスレッドでメモリにロードして、アプリケーション プロセスがフリーズしないようにします。これを行うためにBoostライブラリを調べましたが、実装する準備が整う前にかなり多くのことを読む必要があります. 私がする必要があるのは、スレッドで open() 関数を呼び出し、その後スレッドを破棄することだけです。
一度にファイル全体をメモリにロードしないようにするためのスキームを考え出します。いわば、その場でロードするだけです。問題は、任意のサンプルがいつでもトリガーされる可能性があることです。他のソフトウェアでこの種のシステムが導入されていることは知っていますが、それがどのように機能するかはわかりません。個々のコンピューターの仕様に大きく依存します。私のコンピューターでは問題なく動作する可能性がありますが、遅い HDD/メモリを使用している人は非常に悪い結果になる可能性があります。私が持っていた 1 つのアイデアは、各オーディオ録音の x サンプルをメモリにロードし、再生する必要がある場合は、残りのオーディオをメモリにロードしながら、既存のサンプルの再生を開始することでした。
アイデアや批判はありますか?前もって感謝します :-)