在我关于如何在家里设置基于 Linux 的音乐服务器的文章中,我提到我有两台 CuBox-i4 立方体计算机,使用 Volumio 音乐系统,为我的家提供音乐服务。我还提到,其中一台使用了 AudioQuest DragonFly 数模转换器(DAC),将比特流输出到放大器和扬声器。最后,我提到 DragonFly 和 Volumio 并非完全兼容。这种组合偶尔会在模拟输出中引入高音量咔哒声噪音,听起来完全像是在清洁不良的唱片上听到的那种爆音。
因为我愿意花时间和精力清洁唱片以减少这些噪音,所以花时间调查 CuBox-DragonFly 组合,看看是否有可能“清理干净”对我来说似乎也是合理的。我将在这里分享我的一些经验,希望读者能从整个悲惨的故事中受益。谁知道呢——也许有人会读到这篇文章,并本着开源社区的真正精神,用一个解决方案来启发我们所有人。
故障排除故事
首先,我想验证 DragonFly 是否可以在另一个 Linux 环境中正常工作,因此我在我的笔记本电脑上进行了测试,目前运行的是 Ubuntu 15.10,内核版本为 4.2.0。我使用了我目前最喜欢的音乐播放器 QuodLibet,配置为将音频直接发送到 ALSA,以避免任何比特率或字长的转换。听起来很棒:没有咔哒声,没有爆音,dmesg 没有消息表明任何类型的不兼容性。查看 /proc/asound/DragonFly/stream0
,我看到证据表明,当播放 44.1KHz/16 位文件时,一切都按预期工作
Playback: Status: Running Interface = 1 Altset = 1 Packet Size = 336 Momentary freq = 44100 Hz (0x2c.1998) Feedback Format = 10.14 Interface 1 Altset 1 Format: S24_3LE Channels: 2 Endpoint: 1 OUT (ASYNC) Rates: 44100, 48000, 88200, 96000
同样,96KHz/24 位音乐似乎也能正常工作。
鉴于 DragonFly 并非完全没救,该怎么办?对我来说,至少最明显的做法是寻找内核更新的东西。最近,我一直在关注 Archphile,另一个面向音乐的极简 Linux 发行版。与基于 Debian 的 Volumio 不同,Archphile 基于 Arch Linux。多年来,我一直坚持使用 Ubuntu,偶尔尝试其他 Debian 发行版,偶尔也尝试 Fedora,但我还没有真正进行过实验。这可能是“一石二鸟”的事情之一。Archphile 仍然使用 3.14 内核,但它比 Volumio 自带的内核更新。我决定试一试。
Archphile 的安装非常简单。我使用 Gnome Disks 格式化了一张 32GB 的 microSD 卡,并安装了 Archphile ISO。我使用 Gnome Partition Editor (GParted) 扩展了安装分区,使其占用更多的 microSD 卡空间。我在 CuBox-i4 中安装了 microSD 卡,连接了键盘和显示器,并启动了系统。一切正常。Archphile 的配置步骤 非常简单:更改 root 密码、区域设置和 NTP 服务器。我使用的是有线连接,所以不需要处理无线网络。(我也应该取消此单元上的 DHCP,但也许稍后)。我创建了一个非 root 用户帐户,编辑了 /etc/fstab
以安排挂载包含音乐的硬盘驱动器,修改了 /etc/mpd.conf
文件以将 DragonFly 引入 Archphile 并激活硬件混音器,然后我就可以开始了。
我测试了结果,咔哒声更多了。是时候做更多的侦探工作了。
互联网上有很多关于“咔哒声和爆音”的讨论。很多链接都与 Raspberry Pi、USB 连接的 DAC 以及播放更高分辨率的音乐有关。
在我的情况下,虽然我没有进行明确的研究。我似乎在播放 44.1KHz/16 位文件时遇到的问题比 96/24 文件更多。我一直在想这是否是因为 DragonFly 似乎只提供 24 位格式选项。我尝试过使用“plughw”与“hw”作为接口,但没有看到任何可靠的差异。mpd.conf(5) - Linux 手册页 内容全面,值得研究,Alsa Project wiki 也是如此。
最后,我花时间弄清楚如何使我在 CuBox-i4 上的参数看起来与笔记本电脑上的参数相同。为了实现这一点,我发现我需要在 /etc/mpd.conf
文件中设置两个参数,特别是在 audio_output
节中
period_time "10000" buffer_time "200000"
现在,当播放 44.1KHz/16 位或 96KHz/24 位文件时,/proc/asound/DragonFly/pcm0p/sub0/hw_params
文件在两个系统上看起来都相同。
通过该配置更改,我已经听了四首 96/24 的曲目,没有听到任何咔哒声。但是,我仍然在 44.1/16 的文件中听到偶尔的咔哒声,每首歌可能出现 1-5 次。令人沮丧!当播放开始时,我仍然在 dmesg 中看到以下消息:2:1:1: cannot get freq at ep 0x1。
我已经在相关的内核源代码中查找了这一点;注释似乎表明该设备不支持读取,但周围的代码看起来并没有因此而做一些不祥的事情。mpd
手册页包括关于 mpd
手册页中较小和较大 _time
值的建议。因此,还有一些东西需要追踪。(您有其他建议吗?如果有,请在评论中告诉我。)
让我们以音乐结束
2015 年 11 月,我购买了 达尼丁合唱团 演奏的莫扎特《安魂曲》,由 Linn Records 录制和销售。
我喜欢从 Linn 购买音乐,因为他们不强迫我安装任何东西来下载我的音乐,而且因为他们提供各种比特率、分辨率和格式的所有内容。当然,我总是选择 FLAC。通常我会购买 96KHz/24 位的文件(如果可用),但在这种情况下,我被 180 克的黑胶唱片所吸引。
达尼丁合唱团对这部作品的演绎非常精彩,我看到他们理所当然地受到了 众多音乐评论家的赞誉。我有一个 BBC 交响乐团在科林·戴维斯指挥下的早期录音,多年前,我有幸在巴黎 圣日耳曼德佩教堂 的一个寒冷的冬夜聆听了现场演出。当然,莫扎特的《安魂曲》也在电影 《莫扎特传》 中扮演着关键角色,这是一部精彩的、粗俗且不敬的关于莫扎特生平的作品。
我对古典音乐的品味非常具体,“伟大的曲目”中的大部分都让我感到冷淡。一位来访的朋友曾经评论说,在看过我的古典 CD 收藏后,他说他以前从未在任何人的书架上见过这么多巴赫和这么少的贝多芬。尽管如此,我还是向任何人推荐莫扎特的《安魂曲》,无论他们对古典音乐的偏好和容忍度如何——也许特别是对于那些尚未找到很多他们喜欢的古典音乐的人。
对于那些不了解《安魂曲》故事的读者来说,莫扎特在去世前没有完成这首作品的创作,这部作品由他的朋友弗朗茨·克萨韦尔·苏斯迈尔完成,这样莫扎特的遗孀康斯坦茨就可以从赞助人那里索取剩余的作曲报酬。显然,莫扎特确定了作品的整体设计并制作了其中一些部分的样稿,但苏斯迈尔(以及可能还有其他人)被留下了相当多的作曲(编码)工作要完成(而且,我想象,还有测试和 QA)。根据维基百科,并且正如莫扎特时代普遍存在的那样,音乐在某种程度上是模块化的,组件经常在其他作品中重复使用,从而表明开源和可重用软件的原则曾经是作曲家工具箱的一部分。
事实上,我想我现在就听听《安魂曲》,看看我是否能听到任何咔哒声...
评论已关闭。