找回密码
 立即注册

点击进入授权页面

只需一步,快速开始

QQ登录

只需一步,快速开始

查看: 763|回复: 2

在Linux系统下组建廉价的HiFi系统:让ALSA给USB DAC输...

[复制链接]

78

主题

535

帖子

557

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
557

活跃会员监督达人

VIP_高级会员

发表于 2015-1-18 23:20:58 | 显示全部楼层 |阅读模式
本篇文章是自己探索Linux系统下如何通过USB DAC达到CD回放效果的总结,将采用问答的形式来给HiFi爱好者们解释每一个概念。
1.问: CD音源的Hi-Fi的基本设备是?
答:CD机(信号源) + Pre-Amp前级放大(过滤信号,初步放大信号决定不同频率的声音特点)+ Power Amp功率放大或者耳机放大(放大信号以供给音箱/耳机,乃系统的噪音瓶颈) + 一对书架音箱/耳机
2. 问:我的音源大部分是FLAC/APE/320Kbps CBR,没有CD机,声卡输出的接口也和功放不一样,办公室里面也不可能用音箱,怎么才能有24bit/96khz?
答:你需要购买一款USB DAC(Digital-Analog Converter,数字信号转换成模拟信号,声卡的核心部件)和耳机放大器整合的设备,和一支适合你所听音乐风格的耳机。
3. 问:为什么要用USB DAC?
答:减少从电脑内部各种电子元件的干扰。无论从理论测试还是实际听感,大部分USB DAC的(信号/噪声)比都远胜笔记本电脑或者是台式机的主板的内置声卡。
4. 问:什么是ALSA?
答:Advanced Linux Sound Architecture,提供内核级别的转码,软件输入输出到dmix插件实现混音/重采样/声道分离。大部分USB DAC在Windows/OSX下的支持都不错,在Linux下我们只能用这个奇怪的ALSA了。
5. 问:如何安装ALSA?
答:大部分Linux distribution已经安装了ALSA,比如Archlinux/Fedora/Ubuntu。
6. 问:如何查看ALSA所管理的设备?
答:$ cat /proc/asound/cards
效果如下图:
BN5TtVfe0LGic9vN6ssxyHZoTpQ4NnKcGmKeplItss_WAgAAGQEAAEpQ.jpg
其中0是电脑自己的声卡,ALSA的配置文件中可用hw:0,0调用,1和2都是USB DAC,可分别用hw:1,0和hw:2,0调用,也可用括号中的DACE17和USB调用。
7. 问:如何在Linux下安装USB DAC?
答:如果是ALSA支持的设备,基本都是即插即用。Linux支持的入门级别的有nuForce uDAC2,Audioengine D1,FiiO E10,Audinst hud-MX1等;从2010年以后的主流Linux系统都支持USB 2设备,比如Asus Xonar Essence One和Cambridge Audio DACMagic+这类中端设备,支持非同步USB数据传输。
8. 问:如何保证ALSA输出给我的USB DAC正确的信号?
答:大部分人的无损音乐或者320Kbps的CBR都是16bit/44.1khz,其中44.1千赫兹是CD的标准采样率,但因为系统默认大部分声卡接受48khz的输入,都会重新采样至48khz,重采样会产生大量的噪声,最著名的hydrogenaudio论坛上的udial.wav测试音频(注意,这个是测试系统是否重采样,而不是耳机音箱,这个音频文件可能会损害你的音箱),如果是这个音频本身的44.1khz被重采样到48khz,你就会听到大量奇怪的声音伴随着电话拨号音。如果需要强制输出没有被重采样的数据流给USB DAC,我们可以编辑(1)全局控制dmix的alsa.conf
$ sudo gedit /usr/share/alsa/alsa.conf
然后找到48000的地方改成44100即可。
(2)用户自己的.asoundrc
$ sudo gedit ~/.asoundrc
这本身是一个空文件,启动时候会被alsa.conf调用,在里面加入
pcm.!default{
   type hw
   card USB
   device 0
}
card后面填写上cat /proc/asound/cards看到的代号,如果我想用E17就要填上DACE17;代表音频流会直接输入到USB设备里面靠USB设备硬件混音。
9. 问:如果我有24bit/96khz的音乐文件在Linux下如何播放?
答:使用任何Xine作为回放引擎的播放器。如果在.asoundrc中已经加入了USB DAC作为
10. 问:如何用dmix混音强制24bit/96hkz输出?
答:在.asoundrc中建立一个虚拟设备(这里是dmixer),通过dmix提升采样率之后输出到USB DAC:
pcm.!default {
        type plug
        slave.pcm "dmixer"
}
pcm.dmixer  {
          type dmix
          ipc_key 1024
          slave {
                  pcm "hw:1,0" #这里是你的USB DAC的硬件编号
          format S24_LE
           period_time 0
           period_size 1024
           buffer_size 8192
           rate 96000
         }
        bindings {
                0 0
                1 1
        }
}
ctl.dmixer {
        type hw
        card USB
        device 0
}
pcm.dsp {
        type plug
        slave.pcm "dmixer"     
}
ctl.mixer {
        type hw
        card USB
}
其中card后仍然使用你的USB DAC的硬件代号。下图是强制dmix软件提升采样到96khz的CPU占用情况:
5tIOWlNrF9Wbu_jPfmeoXl1jxY60DCFzXXQ6pt0UEZnaAwAAFgMAAEpQ.jpg
11. 问:如何查看我的USB DAC播放的数据流格式?
答:$ cat /proc/asound/card1/pcm0p/sub0/hw_params
card1一般是你的USB DAC,在敲asound的时候可以按tab看有哪些设备。

转自http://www.guokr.com/post/330397/



评分

参与人数 1积分 +3 收起 理由
芦苇荡1237 + 3 赞一个!

查看全部评分




上一篇:[转]用ALSA驱动声卡流程详解
下一篇:推荐下中央音乐学院教授的《音乐鉴赏》课程
爱音乐-无损音乐网

0

主题

96

帖子

1574

积分

高级会员

Rank: 4

积分
1574
发表于 2015-1-19 05:37:04 | 显示全部楼层
音质好可谓发烧友的至爱
回复 支持 反对

使用道具 举报

0

主题

10

帖子

23

积分

新手上路

Rank: 1

积分
23
发表于 2016-2-20 22:26:19 | 显示全部楼层
技术贴,向楼主学习,将来有淘汰下来的电脑可以用来播放音乐,安装Ubuntu系统试试。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册  

本版积分规则 敬告:回复前请认真阅读无损音乐网规则,严打灌水,违规封号,永不解封。


无损音乐网交流QQ群 | 删帖申请/友情链接/商务合作:wind[at]fbi.org.in | 小黑屋| 工业和信息化部备案号:  广告联系QQ986419005

GMT+8, 2016-12-10 18:40

Powered by 无损音乐网

一个非营利性的高端无损音源分享网站!

快速回复 返回顶部 返回列表