最新技术进展:Linux 音频 2008

作者:Dave Phillips

Linux 音频的世界涵盖了多个领域,从基本的桌面声音服务到嵌入式系统,从简单的互联网电话到专业录音棚的需求。本文概述了 Linux 音频世界及其当前的状态。

由于主题的广泛性,我将本文分为两部分。出于同样的原因,在这种概述中不可能深入讨论任何特定的程序。但是,我在 Linux Journal 网站 (www.linuxjournal.com) 的文章中涵盖了此处提到的许多程序,我建议读者参考这些文章以获取有关各个程序的更多详细信息。

一般评论

自从 1990 年代中期我首次体验 Linux 系统以来,Linux 中的声音支持取得了巨大的进步。主流发行版都具有出色的设备检测功能,包括声卡检测,并且典型的桌面音频功能在安装过程中是透明配置的。大多数发行版允许用户手动添加和配置额外的声音设备,但有些发行版可以自动检测和配置多个设备。安装后需要的任何配置都通过控制面板和其他用户友好的实用程序类似地处理。除了技术进步外,Linux 声音和音乐应用程序的数量和复杂性也在不断增长。我们现在拥有出色的媒体制作和播放软件,并且有充分的理由期待音频相关领域的持续发展。

软件类别

在此概述中,我区分了系统软件和应用软件这两大类。此处的系统软件包括内核声音系统以及使用户级程序工作的其他工具和实用程序。此软件通常与正常使用无关,实际上,典型用户甚至可能永远不会知道它。然而,这一层是完成繁重工作的地方,尽管它不浮华或性感,但它是 Linux 音频系统的核心。相比之下,应用软件包括通过发行版的菜单、工具栏和文件管理器呈现给用户的程序。这种软件是典型用户理解并在日常基础上使用的软件。

本文的第一部分涵盖了系统软件和各种其他音频相关软件领域。第二部分重点介绍 Linux 声音和音乐制作软件的现状。

系统软件

ALSA(高级 Linux 声音架构)为 Linux 内核提供核心音频和 MIDI 服务。这些服务包括随内核安装的设备驱动程序、程序员的库和 API、各种用户级工具和实用程序,以及某些 USB 和其他设备的固件。如果一个项目的开发反映在其更改日志中,那么 ALSA 显然是一个非常活跃的项目,具有稳定的增强和修复流,以及不断扩展的支持声卡和音频芯片组列表。

4Front Technologies 的开发人员以类似的方式改进了他们的 OSS(开放声音系统)Linux 包。2007 年,该公司宣布决定将该系统置于开源许可之下。因此,OSS 现在是一个免费的开源项目,完整地配备了源代码存储库、Bugzilla、wiki 和 GPL、BSD 和 CDDL 许可证的保护。但是,所有这些好处不仅适用于 Linux。OSS 包还为我们在 UNIX 系统(如 FreeBSD 和 Solaris)上的同志提供高质量的音频/MIDI 服务。

ALSA 和 OSS 提供了使您的声音硬件可供操作系统使用的设备驱动程序。有时他们通过查阅制造商提供的材料来创建这些驱动程序,有时他们会反向工程驱动程序。据我所知,只有 Audio Science 提供内部开发的 Linux 驱动程序。Audio Science 制造主要面向无线电广播公司的高质量音频硬件,并为其产品编写和提供原生 Linux 驱动程序。啊,如果 [制造商名称已删除] 也这么明智就好了。

桌面声音服务器

需要音频服务的正常桌面操作和活动包括系统声音、媒体播放器、互联网电话和简单录音。但是,普通用户现在期望在多任务系统中获得便利,例如透明的软件混音和相对无故障的性能。ALSA 的 dmix 插件提供软件混音,但并非所有发行版都想使用它。因此,Linux 桌面音频服务器默认位置的竞争仍然存在。GNOME 仍然使用 esd(Enlightened Sound Dæmon),而 KDE 仍然支持 aRts dæmon,但 PulseAudio 项目绝对是值得关注的新来者。PulseAudio 已经被采用为 OLPC XO 笔记本电脑和最新版本的 Ubuntu 的首选声音服务器,并且有理由相信它可能会超越 esd 和/或 artsd,成为典型用户声音相关活动的“真命天子”。

面向专业人士:JACK

专业音频制作的需求对声音服务器的性能提出了不同的要求。上述任何服务器都无法在资源需求量大的情况下实现无丢帧的性能——例如,高采样率和位深度的多声道录音——并且它们不能被认为适用于专业音频条件。幸运的是,Linux 拥有 JACK,这是一个真正专业的音频服务器和主传输系统。如果您计划使用 Linux 声音和音乐软件制作专业质量的音频,您需要了解 JACK。

JACK 的开发稳定,并继续扩展系统的功能。JackMIDI 在更多应用程序中出现,而 jackdmp 项目指明了 JACK 在多处理器架构上的未来方向。当前版本已经在 OS X 上运行,甚至已经成功移植到 Windows。当前支持的后端现在包括 ALSA、OSS、PulseAudio、FreeBob/FFADO(用于 FireWire 设备)和 CoreAudio(在 OS X 上)。

其他值得注意的系统软件

Erik de Castro Lopo 为 Linux 音频基础设施贡献了一些基本组件。他的 libsndfile 为程序员提供了一个全面的库,用于处理各种声音文件格式的文件 I/O,而他的 libsamplerate 已被广泛接受为高质量采样率转换的首选工具。这些库减轻了应用程序程序员编写用于非常常见任务的代码的负担,并且这两个软件包都是 Linux 音频软件世界中常见的依赖项。我也很高兴地报告说,这两个库目前都在维护中。

常用应用程序

典型用户最熟悉的声音相关软件包括媒体播放器、游戏和音频通信设备。在每种情况下,应用程序本身都不直接处理音频,而是依赖于内核的声音 API(即 ALSA)。这种依赖性使应用程序开发人员可以专注于功能,而不是如何与用户的声音硬件接口。

媒体播放器

Linux 音乐播放器是一把双刃剑。对于普通用户而言,Amarok、Banshee、Rhythmbox 和 XMMS 系列等程序可以很好地播放大多数音频格式(MP3、Ogg、WAV、AIFF 等)。AlsaPlayer 继续提供更轻量级的播放器,功能不那么丰富,但稳定且精通 JACK。JACK 感知是我个人对大多数当前音乐播放器的抱怨之一,但我有理由希望主流播放器能够理解它,并至少提供一个用于 JACK 连接的插件。而且,当我在做梦时,我也希望看到 Linux 媒体播放器采用 JACK 主控制系统。更典型的愿望清单包括真正的无缝播放和对海量收藏的支持。流行的播放器的开发团队非常了解这些请求,并且正在努力在未来的版本中解决它们。如图 1 所示,一些开发人员确实在向前迈进。

State of the Art: Linux Audio 2008

图 1. Amarok 通过 libxine 支持 JACK。

MPlayer 和 Xine 等多媒体播放器继续向前发展。这些项目已经成熟,许多用户严重依赖它们,不仅仅是 DVD 和视频文件播放。MPlayer(及其姊妹软件 MEncoder)是用于各种视频和音频任务的真正工具包,Xine 库被许多其他需要视频功能的应用程序使用。这两个程序都播放各种视频和音频格式,并且都包含用于用户友好 GUI 的挂钩。

唉,这个领域里有一条蛇在草丛中。视频播放器依赖于编解码器,这些编解码器为看似无穷无尽的视频格式提供支持,并且许多流行的格式都受到专利限制。这种情况的一个直接结果是在主流 Linux 发行版中包含这些编解码器的困难或不可能。一些发行版只是将用户指向一个存储库,他们可以在那里下载必要的软件包,但当然,如果可以将编解码器与播放器一起安装,那就更好了。但是,在专利法改革(至少在美国)发生之前,不可能有其他方法来提供该软件。

加密 DVD 的播放也存在问题。MPAA 似乎不再对 DCSS 软件的发行采取法律行动,但发行供应商仍然犹豫是否直接包含该软件。同样,用户通常被引导到互联网上的一个分发点,他们可以在那里获取观看合法购买的光盘所需的软件。虽然这些额外的步骤对于经验丰富的用户来说可能看起来微不足道,但对于新手来说,它们通常是令人困惑的,并且似乎是不必要的,尤其是在对法律后果几乎或根本不了解的情况下。然而,在专利限制和版权纠纷成为过去之前,如果用户期望获得功能齐全的媒体播放,那么额外的步骤将是必要的。

游戏声音

除了 PySolXScrabble 之外,我不太喜欢玩游戏。但是,我确实关注 Linux Game Tome 和 Linux Games 网站上的更新,并且 Linux 游戏和游戏开发的场景显然充满活力和活跃。以游戏为中心的编程工具包蓬勃发展;新游戏频繁出现(质量参差不齐是可预测的),甚至偶尔会出现来自 Windows 的移植。我从狂热的游戏玩家那里听到的常见批评是,Linux 是运行游戏的绝佳平台,但原生 Linux 版本的好游戏太少了。诚然,Windows 用户可以声称拥有大量仅适用于该平台的高质量游戏,但从这个涉猎者的角度来看,Linux 游戏世界是健康且发展良好的。

大多数当前维护的游戏开发工具包(ClanLib、Crystal Space 和 SDL)都支持 ALSA 和 OSS,但 Allegro 库也支持 JACK,我认为这非常酷。OpenAL 项目仍在开发中,但速度很慢。Creative Labs 和 Apple 已投资于系统的开发,主要针对 Vista 和 OS X,但似乎 3-D 和环绕声(5.1、7.1)在 Linux 版本中也得到了完全支持。

嵌入式设备

基于 Linux 的便携式硬件现在很常见,因此我们可以预期也会在这些设备中遇到正在工作的 Linux 声音系统。唉,我没有此类设备,无法直接评论该硬件中声音系统的实现和性能。但是,LinuxDevices.com 发布了一个方便的在线 Linux 驱动的音频/视频设备列表,其中大多数是媒体播放器、机顶盒、集成媒体电话等。该类别中两个值得注意的例外包括 Ron Stewart 令人惊叹的 Trinity,一个便携式 Linux 驱动的 DAW(图 2)和 Plugzilla,一个机架式独立音频插件播放器。我没有这两个单元,但应尽快对它们进行测试和评估。

State of the Art: Linux Audio 2008

图 2. Trinity DAW

模拟器和专有软件

Wine 项目已达到 1.0 发布阶段。在其众多优点中,我们发现了对各种音频/MIDI 后端的支持,包括 ALSA、JACK 和 OSS。一些适用于 Windows 的声音和音乐程序可以通过 Wine 完美运行,包括 Cockos Software 出色的 Reaper 音频/MIDI 音序器,这要归功于 wineasio 驱动程序的工作。当在 Wine 下运行符合 ASIO 标准的 Windows 应用程序(包括 VST/VSTi 插件)时,此驱动程序与 Wine 的 JACK 支持通信,从而产生令人惊讶的低延迟性能。但是,即使使用 wineasio,Windows 的主要音乐和声音软件包(Cubase、Logic、Finale 等)仍然不太可能在 Wine 下完美运行。这些程序往往是大型软件包,与操作系统的关系复杂,通常比 Wine 可以模拟的更复杂。

Ardi 的 Mac OS 模拟器 Executor 已经消失了,但至少还剩下两个不错的 Atari 模拟器。如果您想运行所有为 Motorola 68K CPU 编写的 1980 年代后期的 MIDI 音乐软件,XSteem 和 Hatari 将可以胜任。唉,Steem 项目似乎已暂停,但 Hatari 正在进行开发。

DOSemu 项目继续沿着稳定的发展轨道前进。最近的版本包括对模拟器的声音和音乐功能的重大改进,更好地将其功能与内核的 ALSA 系统集成。DOSBox 项目通过 SDL 音频库支持声音,特别强调游戏声音兼容性。支持 MIDI 输出,但当前版本缺少 MIDI 输入功能。

如果虚拟化提供相等或更好的性能,模拟器可能会成为遗物。我尚未在 VMware 或 VirtualBox 等环境中测试音乐和声音应用程序,但这些系统的规范通常包括通过虚拟化硬件对 ALSA 和 OSS 的支持。不幸的是,虚拟声音设备通常与 SoundBlaster16 或 Intel 无处不在的 AC97 音频编解码器兼容。这些设备足以满足低需求程序,但不适用于高端 Windows 音乐和声音软件。

一些大胆的商业声音和音乐软件公司提供了其软件包的 Linux 端口。Renoise 音轨器(图 3)有一个出色的原生 Linux 版本。Jorgen Aase 的 energyXT2 DAW(数字音频工作站)拥有相当多的 Linux 用户群,Garritan 最近宣布其下一代采样器引擎 Aria 将提供原生 Linux 版本。其他供应商,如 NCH Software (WavePad) 和 Cockos (Reaper),则宣传他们的程序可以通过 Wine 工作,并将其官方支持扩展到该环境。

State of the Art: Linux Audio 2008

图 3. Renoise 的原生 Linux 版本

这些软件包的数量很难构成来自主要 Windows 开发商的发布洪流,但这样的小溪流可能会壮大。越来越多的用户对 Linux 感兴趣,其中一部分用户将专注于其音频功能及其在声音和音乐制作中的应用。商业开发商有机会扩展到 Linux 世界,Linux 音频基础设施的稳固性为他们扫清了道路。我赞扬已经跨入 Linux 世界的公司,但这是否足以促使其他商业公司开发其软件的原生 Linux 软件包还有待观察。

开发工具和环境

Linux 音频基础设施为声音和音乐应用程序开发人员提供了精心设计和经过良好测试的编程接口,特别是如果他们使用 JACK 来处理音频(现在是 MIDI)I/O。替代方案包括 OSS API 和直接编程 ALSA,但 JACK 确实是更出色的解决方案。

关于 GUI 工具包:Qt 和 GTK 仍然是主要的参与者,但 FLTK 和 wxWidgets 也很受欢迎。GUI 工具包的这种多样性一直是插件开发人员的问题,尽管新兴的 LV2 规范可能会解决该问题。

Python 及其 GUI 绑定在某些类型的音乐应用程序中变得流行,Tcl/Tk 仍然是较小应用程序和快速原型设计的流行脚本语言,Java 程序员已向 Linux 音频软件库添加了大量出色的应用程序。Java 音频程序员还可以使用 JJack,这是一个用于 JavaSound API 的 JACK 音频驱动程序。目前,只有 Frinika 音序器使用了 JJack,但我希望看到它受到应有的关注。

JUCE 多平台开发环境为开发音频应用程序提供了出色的工具。JUCE 框架完全符合 JACK 标准,但不幸的是,到目前为止,它的采用一直很缓慢。当前的实现包括 Rick Taube 的 GraceCL(下一代算法音乐环境)、Kjetil Mattheussen 的 Mammut(大规模 FFT 音频转换器)和 Lucio Asnaghi 的 JOST 插件系统。这些程序都具有吸引人的 GUI 和出色的音频功能——这一切都归功于 JUCE 框架。

媒体优化的 Linux 发行版

音频/视频优化的 Linux 发行版正在蓬勃发展。突出的系统包括 Planet CCRMA、64 Studio、JAD、MusiX、Dynebolic 和 Ubuntu Studio。其中一些发行版包括用于制作 Live CD 的 ISO 映像,这些 Live CD 可用于在不将其安装到硬盘的情况下测试系统。它们都经过了低延迟性能的工程设计,并且目前都在维护中。这些发行版是 Linux 音频新手最好的朋友;强烈推荐给任何想要认真使用 Linux 上的音频/MIDI 的人。

社区

Ivica Ico Bukvic 是 Linuxaudio.org 的现任主管,该组织是“...一个非营利性自由软件项目和艺术家、公司、机构、组织和硬件供应商联盟,他们使用基于 Linux 内核的系统和相关的自由软件进行音频相关工作,重点是面向音乐、制作、录音和广播行业的专业工具。” 除了其众多用途外,该组织还充当各种“优先”链接的门户,包括应用程序索引、软件镜像、VST 插件兼容性数据库和其他有用资源的 URL。

Linux 音频开发人员每年在科隆举行的 Linux 音频会议上会面,2008 年也在科隆举行。有传言说 LAC2009 可能会在意大利帕尔马举行,但在撰写本文时尚未制定明确的计划。本次会议是 Linux 声音爱好者的本季盛事——为期四天的演示、表演和大量想法、代码和音乐分享的节日。请关注 Linuxaudio.org 上的 LAC 链接页面,了解明年会议的新闻,如果可以,请务必参加。

以程序为中心的社区围绕着维护的项目发展起来。通信渠道包括典型的论坛、wiki、邮件列表和 IRC 频道,但现在包括 YouTube 和 MySpace 等频道。YouTube 已成为演示和教学视频的特别有用的渠道。现在可以在那里找到一些 Linux 音频软件的实际应用示例,我预计会有更多示例出现。

在 Hans Fugal 的 LAM 网站上可以听到各种各样的使用 Linux 软件制作的音乐。其他 Linux 制作音乐的良好来源包括 Linux 音频用户邮件列表存档、Internet Archive 以及当然,上面提到的论坛和其他通信渠道。

结束语

我认为,Linux 音频基础设施现在是一个坚实的结构,具有卓越的功能和对未来发展的准备。JACK 本身就是一项最杰出的成就,并且已成为所有严肃音频应用程序的基石,尤其是在专业音频领域。

配置几乎在安装过程中完全自动化,并且安装后配置在大多数发行版中已变得轻而易举。发行版开发人员在这方面所做的工作值得高度赞扬。同样,这不是性感的东西,但它对新手甚至不太新手的人来说都意义重大。

普通多任务桌面上的音频性能一直是一个有问题的点,但 PulseAudio 项目有望令人满意地解决该问题。只有时间才能证明它的采用是否会变得普遍。

需要音频支持的普通应用程序可以通过当前的软件图谱得到很好的服务。请求的功能正在实施中,并且自旧时代以来,可用性已大大提高。借助软件混音和相对无 xrun 的播放,桌面音频系统看起来和听起来都越来越好。

结语

在本文的第二部分中,我将评估 Linux 声音和音乐应用程序的当前开发状态。在那之前,请继续关注。

资源

Linux Journal Dave Phillips 的在线文章: www.linuxjournal.com/users/dave-phillips/track

LinuxDevices.com 上的 Linux 驱动硬件列表: www.linuxdevices.com/articles/AT5690634012.html

Linuxaudio.org 上的 Linux 声音和音乐软件索引: apps.linuxaudio.org

linux-sound.org 上的 Linux 声音和音乐应用程序列表: linux-sound.org

Linux 音频音乐网站: lam.fugal.net

Dave Phillips 是一位居住在俄亥俄州芬德利的专业音乐家和作家。自 1990 年代中期以来,他一直在使用 Linux,并且是 Linux 音频开发者小组的最初创始人之一。他是 The Book of Linux Music & Sound(No Starch Press,2000 年)的作者,并为各种期刊和在线新闻网站撰写了许多关于 Linux 音乐和声音问题的文章。当他不玩光和声音时,他喜欢阅读拉丁文学、练习太极拳、追逐沙皮小狗以及与他心爱的常春藤共度时光。

加载 Disqus 评论