我尝试通过 naudio 和 ASIO 播放 32 位字节数组。但我无法让它运行。输出信号失真。对于 naudio 和 WASAPI,相同的转换方法适用于 32 位。
样本转换:
var newAmp = (int)Math.Round(amp * (Math.Pow(2, 32) / 2));
var buffer = BitConverter.GetBytes(newAmp);
通过 naudio 和 ASIO 播放和录制:
var waveToneClass = new WaveTone(48000, 32, playBuffer, true, 1);
var stream = new BlockAlignReductionStream(waveToneClass);
asio_outin = new AsioOut(nameOfDriver);
asio_outin.ChannelOffset = 0;
asio_outin.InputChannelOffset = 0;
asio_outin.InitRecordAndPlayback(stream, 1, 48000);
asio_outin.AudioAvailable += ASIO_dataAvailable;
asio_outin.Play();
和:
private AsioOut asio_outin = null;
使用 16 位和相同的方法,我得到一个干净的信号。但是对于非常低的输出电平和高增益,我会得到伪像,这就是 32 位的原因。
NAudio v1.7.3.0 / Windows 7 / .Net 4.0
我的失败是什么?