これを可能にする可能性があるとして、NAudio を指摘されました。ただし、できない場合は、できるライブラリの提案をいただければ幸いです。私は現在 C#/WPF で作業していますが、他の C/C++ ライブラリを快適に呼び出すことができます。
オーディオ サンプル (モノラル) の連続バッファを受信しています。タイプ: 16 ビットの符号付き整数。レート: 16kHz。1 ~ 2 時間のバッファ データ (230 MB) を保持する必要があります。このバッファをディスクに保存して、後で取得できるようにします。
キャプチャ中にこのバッファの一部を再生できるようにする必要があります。例:
@0s, Buffer.StartRecording()
@30s, handle = Buffer.Play(20,25) //Plays the buffer from 20 - 25 s
@50s, handle1 = Buffer.Play(20,25)
@51s, handle2 = Buffer.Play(20,25) //Playing two parts of the buffer at the same time.
@52s, handle1.Stop() //Buffer1 stops playing after having played for 2 seconds.
まだ書き込みが終わっていないサウンドの再生を開始できるはずです。
@0s, Buffer.StartRecording()
@25s, handle = Buffer.Play(20,30) //Plays the buffer from 20 - 30 s
@30s, //Buffer has played halfway through (currently, play marker is at 25 s
@35s, //Buffer playing finishes.
再生バッファの一部をマスクできるようにする必要があります。例:
bufferMaskStep = 1 //seconds
bufferMask = [1, 0, 0.5, 1, 0.1] //the volumes at each time step
Buffer.Play(20, 25, bufferMask, bufferMaskStep)
NAudio が提供しているようですがWaveStream
、WaveStream.Write
サポートされていないようです。自分でバイトバッファへの追加を管理し、再生したいときにそこからセクションをコピーすることはできましたが、すぐに使える解決策があるかどうか疑問に思っています。
やっていることの要点は、ループペダルを作ることです。