首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用NAudio和ASIO播放32位音频

使用NAudio和ASIO播放32位音频
EN

Stack Overflow用户
提问于 2016-08-30 13:56:07
回答 1查看 368关注 0票数 0

我尝试通过naudio和ASIO播放一个32位字节数组。但是我不能让它运行起来。输出信号失真。同样的转换方法适用于32位的naudio和WASAPI。

示例转换:

代码语言:javascript
复制
var newAmp = (int)Math.Round(amp * (Math.Pow(2, 32) / 2));
var buffer = BitConverter.GetBytes(newAmp);   

通过naudio和ASIO播放和录制:

代码语言:javascript
复制
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();

通过以下方式:

代码语言:javascript
复制
private AsioOut asio_outin = null;

使用16位和相同的方法,我得到了一个干净的信号。但是对于非常低的输出电平和高增益,我得到了伪像,这就是使用32位的原因。

NAudio v1.7.3.0 /Windows7/ .Net 4.0

我的失败是什么?

EN

回答 1

Stack Overflow用户

发布于 2016-09-01 04:12:46

当使用32位音频时,有许多不同的ASIO“采样类型”可用,因为它通常只是将24位或20位音频放在32位整数中的某处。所以我怀疑可能是使用了错误的样本类型。或者,您实际上正在生成同样是32位的IEEE浮点样本(这也是WASAPI喜欢使用的)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39219727

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档