某一天偶然想到要再linux系统中实现类似于Windows 中ASIO的输出,于是就找到了ALSA这个linux中的高级声音体系,在这个体系中,使用alsa-utils即可调用各种高级API
那么也就是说在一些可以使用ALSA的软件中也可以根据这些方法调用外部USB声卡。因此我就做了以下尝试。
配置Clementine,选择ALSA模式,Output Device留空,此时声音仍然从系统默认的扬声器中输出,于是我尝试输入ATPHA100(我的USB-DAC的型号),发现此时显示找不到设备。那么正确的名称是什么呢,我在/dev/snd中搜索了以下发现了一些类似pcmC0D0p命名方式的设备,我尝试用这些名称调用声卡,但是最终发现,这些名称仍然不可以正确调用到我的USB-DAC。此时我注意到,在Output Device的介绍中有提到”front”这样的关键词,我尝试搜索了以下,这个是设定音频输出模式的,包括环绕声模式等。于是我搜索了一下如何查询并设定输出模式,并找到了以下命令:
aplay -L | grep :CARD
输入命令后我得到了以下信息:
front:CARD=PCH,DEV=0 surround40:CARD=PCH,DEV=0 surround41:CARD=PCH,DEV=0 surround50:CARD=PCH,DEV=0 surround51:CARD=PCH,DEV=0 surround71:CARD=PCH,DEV=0 iec958:CARD=PCH,DEV=0 dmix:CARD=PCH,DEV=0 dmix:CARD=PCH,DEV=1 dsnoop:CARD=PCH,DEV=0 dsnoop:CARD=PCH,DEV=1 hw:CARD=PCH,DEV=0 hw:CARD=PCH,DEV=1 plughw:CARD=PCH,DEV=0 plughw:CARD=PCH,DEV=1 sysdefault:CARD=ATPHA100 front:CARD=ATPHA100,DEV=0 surround40:CARD=ATPHA100,DEV=0 surround41:CARD=ATPHA100,DEV=0 surround50:CARD=ATPHA100,DEV=0 surround51:CARD=ATPHA100,DEV=0 surround71:CARD=ATPHA100,DEV=0 iec958:CARD=ATPHA100,DEV=0 dmix:CARD=ATPHA100,DEV=0 dsnoop:CARD=ATPHA100,DEV=0 hw:CARD=ATPHA100,DEV=0 plughw:CARD=ATPHA100,DEV=0
配合文档介绍发现了,我所需要的直接输出就是Direct hardware device without any conversions.我将”hw:CARD=ATPHA100,DEV=0″填写到Output Device文本框中,确认,然后再一次尝试播放音乐,此时声音就能顺利的从DAC中输出了。
通过这次调试,我初步了解了ASLA的运用以及部分原理,并且可以正确输出音频。