Я использую naudio для генерации звуковых сигналов с широтно-импульсной модуляцией для управления парой сервоприводов. В настоящее время я использую класс WaveProvider32, который написал Марк Хит (http://mark -dot-net.blogspot.com / 2009/10 / play-of-sine-wave-in-naudio.html ), который реализует интерфейс IWaveProvider. Частота дискретизации составляет 44100
Аудиосигнал в основном представляет собой блок шириной N, где в первой части сигнала все значения высокие, а для остальной части блока значения низкие. Поскольку операция чтения запрашивает больше выборок, чем ширина блока, я просто повторяю сигнал, пока не заполню буфер. У меня проблема в том, что длина буфера не кратна ширине моего сигнального блока, поэтому часть последнего блока обрезается, какие винты с сервоприводом и заставляет его дергаться. Я понимаю, что мог бы сделать некоторую причудливость кода, чтобы отследить его и компенсировать начало следующего чтения, но мне было бы проще, если бы я мог установить количество значений, которые WaveProvider должен был предоставить одновременно, чтобы я мог сделать его кратным (или может быть точная ширина) размера блока сигнала.
Это возможно?