搭建基于普通声卡的播放程序
搭建基于普通声卡的播放程序
1
基于成本考虑,有的企业/个人会用普通声卡来代替NI板卡搭建程序。
很多普通声卡不止在成本上有一定优势,其在性能上(线性度,失真,底噪,直流等)也比NI板卡差不了很多。
接下来就WDM驱动下的声卡,我们根据范例展开讲解。
2
第一步:调用声卡播放采集相关范例
在图形与声音—声音---输出面板内,有声音配置,采集,播放等相关vi,如下:
也可以直接打开labview自带的范例,在 labview\examples\sound2\sound2.llb里,里面集成了持续声音输入,有限声音输出,持续声音输出等多个可运行程序:
打开GenerateSound.vi,我们在此基础上做播放程序的修改。
前面板:
程序框图:
第二步:将device ID与声卡名称联系起来
打开任何一个labview自带的声卡范例,会发现配置声卡的设备处连接的都是device id,是一个U32数值,该值代表声音操作时使用的输入/输出设备,非常得不直观!
我通过一些渠道找到了可以将设备真实名称与deviceid挂钩的库函数,编写成了如下返回设备输入和输出端口名称的程序:
直接运行后的结果如下:
从而将0这个不直观的数值与扬声器(输出)/内装麦克风(输入)等直观的名称给联系起来了,感兴趣的话可以私信我了解更多,这一部分是很多讲解声卡播放采集的程序都没有的。
第三步:配置L/R/Mono输出
对于WDM驱动下的普通声卡来说,device ID对应着声卡的L/R两个声道,也即默认两个通道均有输出。
在实际使用中,我们可能只需要L通道输出,或者只需要R通道输出,或者LR同时输出,因此需要对输出做一定配置。
前面板添加L,R,Mono可选的枚举控件:
程序框图中对L,R枚举选择分支做不同处理,选择L时,将R通道的输出配置为0数组输出:
选择R时,将L通道的输出配置为0数组输出:
第四步:搭建程序
调用了while循环+事件结构,搭建了两个事件分支:设备刷新,播放。
设备刷新分支如下,用于刷新WDM驱动下的普通声卡所有通道,名称和ID会返回在WDM通道中。
播放分支如下,点击播放,切换L,R通道选择,体会下声卡L,R不同通道的输出。
给自己先顶一个