一対のサーボを制御するためのパルス幅変調オーディオ信号を生成するために naudio を使用しています。現在、IWaveProvider インターフェイスを実装するMark Heath が作成した WaveProvider32 クラス ( http://mark-dot-net.blogspot.com/2009/10/playback-of-sine-wave-in-naudio.html ) を使用しています。サンプルレートは 44100 です
オーディオ信号は基本的にブロック N 幅で、信号の最初の部分はすべての値が高く、ブロックの残りの部分では値が低くなります。読み取り操作はブロックの幅よりも多くのサンプルを要求するため、バッファがいっぱいになるまで信号を繰り返します。私が抱えている問題は、バッファの長さが信号ブロックの幅の倍数ではないことです。そのため、最後のブロックの一部が切り取られ、サーボにねじ込まれ、それがけいれんします。私はそれを追跡し、次の読み取りの開始をオフセットするためにいくつかのコードの空想を行うことができることを認識していますが、WaveProvider が一度に提供する必要がある値の数を設定して複数にすることができれば、より簡単になります。信号ブロックサイズの(または正確な幅かもしれません)。
それは可能ですか?