我尝试通过naudio和ASIO播放一个32位字节数组。但是我不能让它运行起来。输出信号失真。同样的转换方法适用于32位的naudio和WASAPI。
示例转换:
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 /Windows7/ .Net 4.0
我的失败是什么?
发布于 2016-09-01 04:12:46
当使用32位音频时,有许多不同的ASIO“采样类型”可用,因为它通常只是将24位或20位音频放在32位整数中的某处。所以我怀疑可能是使用了错误的样本类型。或者,您实际上正在生成同样是32位的IEEE浮点样本(这也是WASAPI喜欢使用的)。
https://stackoverflow.com/questions/39219727
复制相似问题