使用 OLPC XO 进行声音探索

作者:Dave Phillips

在今年一月份,我从“每个孩子一台笔记本电脑 (OLPC)” 项目收到了一台 XO 笔记本电脑,这要感谢我的朋友 Richard Boulanger 博士的友好推荐,他是伯克利音乐学院音乐合成专业的教授。Rick 知道我经营着一家私人教学工作室,我的许多学生都是年轻人,他们会很喜欢玩 XO。他还知道我对 Csound 和 Linux 音频开发有着双重兴趣,这都是这台机器相当重要的方面。因此,本文重点介绍了我目前为止在使用 XO 的音频子系统及其声音和音乐软件方面的经验。我的学生们只是短暂地接触过这台机器,但我将在最后对他们与 XO 及其音频功能的互动做一些评论。

XO 的总体概述

网络上有大量关于 XO 详细描述的资料,因此在这里我只回顾一下这台机器最突出的特点。

XO 笔记本电脑(图 1)体积小巧、重量轻便,但不会让人感觉脆弱或做工粗糙,而且为数不多的移动部件在连接处都牢固地连接在一起。显示屏从底座向上摆动,可以在其直立位置向左或向右旋转 180 度。它也可以稍微向后倾斜。键盘是单层橡胶膜,专为儿童尺寸的手指设计,但像我这样笨手笨脚的成年人如果需要可以使用 USB 键盘。双按钮触摸板取代了鼠标,但目前只有一个面板和一个按钮处于活动状态。这不是问题,因为只需要指针控制和一个输入按钮即可导航 GUI。

Sounding Out with the OLPC XO

图 1. Studio Dave 的一台改装过的 XO

XO 的设计给我留下了深刻的印象。在各个层面,我都发现了对用户体验的考虑,从电池组的设计到显示分辨率的卓越性。事实上,当我向朋友们展示这台机器时,他们都特别欣赏它的把手,并惊讶地问为什么他们的笔记本电脑没有配备把手。

在软件方面,XO 由修改版的 Fedora Core 和 2.6.22 Linux 内核驱动。GUI 是著名的 Sugar,这是一个基于 Python 的图形界面,与我熟悉的典型 Linux 桌面截然不同,并且可以随时轻松访问 Linux 命令行。

音频硬件和功能

XO 的 CPU 是一颗 433MHz AMD Geode LX-700。笔记本电脑的多媒体功能由 Geode CS5535/CS5536 伴侣芯片组提供。根据维基百科关于 Geode 的页面,CS5535 是 “...Geode GX 和 Geode LX 的南桥...[它]集成了四个 USB 端口、一个 ATA-66 UDMA 控制器、一个红外通信端口、一个 AC97 控制器、一个 SMBUS 控制器、一个 LPC 端口,以及 GPIO、电源管理和传统功能模块”。处理器的 AC97 控制器对于本文至关重要,USB 支持提供的可能性也是如此,因此让我们仔细考虑一下 AC97 到底是什么以及它的作用。

1997 年,英特尔开发了一种音频编解码器,为主板、调制解调器和声音硬件提供高质量的音频服务。AC97 定义了一种高质量的音频架构,立体声的采样率高达 96kHz,多声道数字音频录制和播放的采样率高达 48kHz,位深度高达 20 位。AC97 在制造商中非常受欢迎,并且在大多数台式机上都能找到,尽管最近已被英特尔的 HDA(高清音频)取代。该编解码器分为数字控制器和模拟流处理器,有效地将模数转换器和数模转换器组合在一个封装中(这对硬件设计人员来说是一个很有吸引力的功能)。顺便说一句,英特尔在这里使用“编解码器”一词指的是模拟到数字和数字到模拟流的编码/解码,这与二进制压缩/解压缩编解码器(如 MP3、Ogg 或 WMA/WMV)不同。

CS5535 的 AC97 实现来自集成的 Analog Devices AD1888 芯片组,该芯片组提供多达六个通道的数字或模拟音频输出。AD1888 的另一个显著特点是它直接连接到核心 CPU,这是一个节省成本的因素,与 XO 的整体设计非常吻合。XO 还使用了另一个 Analog Devices 芯片组 (SSM2211) 用于音频放大。

这就是内部音频的情况。在外部,我们发现了一个集成的麦克风、两个集成的扬声器以及用于立体声音频输出(到耳机或其他扬声器)和单声道麦克风电平输入的插孔。这些插孔是标准的消费级声卡连接器,采用 3.5 毫米迷你插头,我很高兴地报告这些插孔的连接牢固而稳定。插孔功能也可以使用 alsamixer 实用程序重新定义,但我没有尝试此功能。有关重新定义音频 I/O 端口的更多信息,请参阅 OLPC Wiki 上关于 XO 音频硬件的页面。

XO 还包括三个 USB 端口。显然,这些端口可以通过添加 MIDI 接口或更高质量的数字音频接口来扩展机器的音频功能。

软件方面:系统音频支持

我的机器运行的是 1.0.14 版本的 ALSA 声音系统。运行dmesg报告称 ALSA 设备列表由位于 IRQ5 上基地址为 0x1480 的 CS5535 音频硬件组成,以及modinfo报告称 cs5535audio 驱动程序仅包含一个重要的选项,即针对某些有缺陷的 AC97 实现的解决方法。

在正常情况下,ALSA 对用户完全透明。活动(即 XO 的程序)在没有用户干预的情况下访问内核声音服务,声音从扬声器中流出。预期的 ALSA 实用程序都可以从命令提示符获得,但仅限于 root 用户。Alsamixer 正确地将 CS5535 识别为声卡,将 AD1888 识别为音频芯片组,并且混音器控制范围令人印象深刻,尤其是在 AC97 的环绕声功能方面。鉴于这种透明性,关于 XO 上的 ALSA 没有太多要补充的了。但是,想要了解有关 CS5535 音频驱动程序更多详细信息的读者应该阅读 Jaya Kumar 的论文,他是 cs5535audio 驱动程序的开发人员(有关指向他在 2007 年 Linux 音频会议和 2006 年 FOSS/India 会议上的演讲的链接,请参阅“资源”)。

声音和音乐活动

XO 专为探索性思维而设计。在基本声音方面,默认系统提供了用于以各种格式进行简单音频录制和播放的活动。但是,系统真正的音频吸引力在于 TamTam 活动。

TamTam 是一套四个程序,旨在探索和试验声音和音乐创作。乍一看,它们可能看起来像是很有吸引力的玩具,但我可以证明这些应用程序功能强大到足以让经验丰富的音乐家忙于探索其可能性。TamTam 设计师创造性地将 Python 和 Csound 融合在一起,并在一个完全隐藏其技术基础的界面中呈现给用户。GUI 易于理解,用户无需了解 Csound 或 Python,甚至不需要音乐知识即可开始作曲、即兴演奏和制作自己的声音。

遗憾的是,本文没有足够的空间来充分描述套件中的每个程序,因此我将简要介绍每个应用程序,并建议感兴趣的读者收听我在 linux-sound.org 上发布的 XO 音频演示(请参阅“资源”)。

TamTam Mini(图 2)是面向非常年轻用户的入门级程序。Mini 本质上是一个预设风格的合成器,通过计算机键盘演奏。用户从显示屏中选择一种乐器,然后通过按 Z 到 M 键(低八度)和 Q 到 I 键(高八度)来演奏它。可以添加一套鼓组来创建一个循环的伴奏节拍(使用开始/停止按钮),其他控件包括主音量、速度、节拍复杂度和每小节节拍数的滑块。还包括用于平衡(即声像)和混响效果的滑块。所有控件都可以实时使用,用户的即兴演奏可以录制下来以供稍后播放。最后,为了符合 XO 的设计理念,Mini 还支持多台机器之间的协作演奏,所有演奏者都同步到一个共享的节拍。TamTam 的 Mini 在操作上可能很简单,但它是一个复杂的学习工具,成功地兼顾了教学性和趣味性——这是一个吸引孩子们更多地了解音乐和声音的制胜设计。

Sounding Out with the OLPC XO

图 2. TamTam Mini

TamTam Jam(图 3)是 XO 的主要音乐表演活动。与 Mini 一样,用户从显示屏中选择声音,并通过计算机键盘播放它们。一个 beatbox 风格的鼓机可用于伴奏,并提供了一个音序器来录制在键盘上演奏的乐句。Jam 也面向年轻用户,但它是一个更加复杂的程序。支持复音演奏,用户可以完全控制伴奏音序及其乐器。可以组建一个由鼓组和最多五种乐器组成的虚拟乐队,每种乐器都与从“循环”显示屏中选择的一系列音序循环耦合。这些循环可以实时添加或删除,右键单击循环会调用其编辑器。循环编辑器控制循环内的节拍数及其“规律性”(随机化控制),迷你钢琴卷帘编辑器允许用户重新定义音符及其在循环中的顺序。用户很快就会意识到 Jam 是一个功能强大的 MIDI 音序器,可以制作几乎任何风格或复杂程度的音乐。

Sounding Out with the OLPC XO

图 3. TamTam Jam

TamTam 的 Edit(图 4)是一个音乐创作/生成程序,可以用作或多或少传统的五轨 MIDI 音序器,也可以用作用户可定义的音乐自动机。除了传输控件之外,Edit 的工具集在其两种模式之间有所不同。“作曲”模式包括“选择”、“绘制”和“绘画”工具;音量和速度滑块;以及用于从计算机键盘录制和将您的作品保存为 Ogg 文件的控件。“生成”模式仅包括三个工具、“生成曲调”切换开关以及用于音乐生成参数和音序其他常规属性的对话框。生成对话框具有酷炫的交互式图形界面,用于设置每个生成事件的节奏、音高和持续时间的条件。音高素材可以通过从七个音阶和四种随机化模式中进行选择来进一步定义,其中任何一种都可以在实时定义。

Sounding Out with the OLPC XO

图 4. TamTam Edit

播放可以限制为单个音序,以创建实时循环合成环境。可以使用 Ctrl+鼠标左键单击来选择不连续顺序的音序,尽管播放始终是从左到右。按住并扫描相同的组合键可以选择多个连续的音序。

Edit 是一个令人印象深刻的工具包,适用于严肃的音乐创作,无论是实时还是离线创作。我使用过数十种基于文本和图形界面的音乐生成程序,很少有程序的设计像 Edit 这样出色。在软件评测中,“灵活”一词通常是被过度使用的术语,但它非常适用于 Edit。该程序支持多种音乐创作方法,从严格的确定性到完全的偶然性,并且它以一个欢迎交互性的界面呈现自己。Edit 有其局限性,但在这些局限性内,它是迄今为止我使用过的最酷的音乐程序之一。

TamTam SynthLab(图 5)是面向高级学生的声音设计实验室。根据 TamTam Wiki 的说法,SynthLab 以著名的 Max/MSP 为模型,Max/MSP 是一个用于音乐创作和多媒体开发的图形环境,但这让评论员想起了 PatchWork,这是一个用于 Csound 乐器的古老编辑器。在 SynthLab 中,与旧程序一样,代表合成原语的图标被连接在一起以创建一个补丁——即一种新的声音。SynthLab 提供了用于声音生成(FM、样本播放、粒子合成)、调制器(LFO、包络)和效果处理器(延迟、混响、合唱)的模块,这些模块可以以任意连接方式连接在一起以创建新的声音,当然都是实时的。这些声音可以在计算机键盘上播放和/或保存到为 TamTam Mini 保留的八个插槽中的任何一个。

Sounding Out with the OLPC XO

图 5. TamTam SynthLab

TamTam 套件是一项伟大的成就,尤其是在硬件背景下考虑时。它当然证明了高效程序设计的观点,并且有很多次我忘记了 TamTam 软件是在一台 433MHz CPU 的机器上运行的。它还证明了一些其他关于利用当代 Csound 和 Python 力量的观点。这些语言的开发都是为了获得出色的实时性能,TamTam 程序充分利用了这一因素。非常感谢和赞扬 TamTam 的总设计师 Jean Piche 以及他的才华横溢的开发团队,他们想出了这组最迷人、最具启发性和非常有趣的活动,并将它赠送给世界各地的孩子们。(是的,这包括所有年龄段的孩子。)

媒体播放器

我知道 XO 能够播放各种格式的媒体文件,但起初我很困惑如何访问这些文件。Sugar 界面没有提供像 Nautilus 或 Konqueror 这样的文件管理器。相反,“日志”活动以日记的形式列出了机器上完成的所有工作。所有保存的工作也都列在那里,包括录音和其他媒体文件,我只需要双击一个项目即可查看或收听它。

播放器会自动为选定的文件调用。在基本系统上,我可以毫无问题地使用 eToys 和浏览器活动中的播放器播放 MP3、Ogg 和 WAV 音频(图 6)。我还播放了 AVI、MPG 和 Ogg 格式的视频文件,但要知道在 433MHz CPU 上播放电影效果不太可能。但是,在 XO 上制作的视频以每秒 30 帧的速度录制,并且在传输到功能更强大的台式机时(以其原始 640x480 分辨率)流畅播放。

Sounding Out with the OLPC XO

图 6. eToys MP3 播放器

简单录音

XO 上的音频录制是通过“录音机”活动完成的,这是一个用于捕获图片、视频和声音的简单实用程序。选择特定的媒体任务后,会出现一个“准备录制”图标(视频为眼睛,音频为嘴唇)。单击图标开始录制,再次单击图标停止录制过程。文件会自动命名并保存,并且可以直接从录音机预览。

我使用内置麦克风和一个廉价的外部麦克风测试了录音机。值得称赞的是,内置麦克风录制的噪声更小,信号更强。从那以后,我决定在 XO 上使用自己的麦克风进行所有随意录音。麦克风输入电平(和所有其他音频通道电平)的设置可以使用 alsamixer 或任何类似的声卡混音器进行管理,但我发现默认电平在相对平静的声学条件下是足够的。

关于扬声器的一句话

XO 的内置扬声器对于基本用途来说还可以,但它们不会提供高保真声音。为了获得更好的音频体验,我建议使用优质耳机或一套有源外置扬声器。XO 的音频芯片组支持环绕声播放,因此您可能需要连接 5.1 系统。遗憾的是,我找不到有关集成扬声器的技术规格,但听起来很明显低音响应几乎为零,这使音频听起来单薄而刺耳。这对于 TamTam 软件来说尤其不幸——它在外置扬声器上的声音明显更好。

Csound/Python 连接

得益于 Michael Gogins、Steven Yi 和其他开发人员的开创性工作,Csound 现在包含许多与 Python 相关的操作码。Python 在 XO 的软件结构中相当普遍,而 Csound 是该机器的音频引擎,因此 XO 可能是试验世界上最强大的音乐和声音编程语言的绝佳平台。遗憾的是,本文篇幅有限,无法充分描述 XO 的 Csound/Python 潜力,但我可以向感兴趣的读者推荐 OLPC Wiki 上关于 Csound 的页面。在那里可以找到一些指向相关项目和活动的指针,并且可以在 Csound 邮件列表及其存档中找到更多信息。Jean Piche 和 Rick Boulanger 是 Csound 大师,因此我对在这台机器上使用该语言抱有很高的期望。如果 TamTam 是一个指标,那么创作可能性确实令人印象深刻。

批评性评论

我将这台机器借给了两位学生,他们都难以弄清楚如何保存他们的作品。他们发现如何轻松使用录音机和其他活动,但保存过程对他们来说很陌生,直到我解释了日志及其功能。文档完全基于 Web,学生们说在 Web 浏览器和他们当前的活动之间切换很麻烦。当然,一旦他们学会了如何使用日志,一切都好了。

对我来说,唯一另一个有问题的领域是无线连接。在我所在地区很难找到连接,如果有一个以太网端口我会更满意。但是,我理解设计考虑因素,我的 USB 转以太网适配器已经在订购中。

如果您一直在等待为自己购买一台机器,或者为地球偏远地区的儿童购买数千台机器,那就去做吧。XO 旨在将幸福和快乐传播到世界各地,但该项目需要您的帮助才能实现这个崇高的目标。有关如何参与的更多信息,请参阅 OLPC Wiki。

那么,我喜欢 XO 吗?我 非常喜欢 这台机器,我衷心向任何地方的任何人推荐它。它从相对低功耗的 CPU 中榨取了比我想象的更多的性能,TamTam 软件的性能简直令人震惊,而且乐趣因素也超出了图表范围。XO 因其整体卓越性而获得五星好评,如果我必须选择一个词来描述这台机器和使用它的体验,那就是“快乐”。

资源

TamTam Mini 示例(陶笛即兴演奏): linux-sound.org/audio/tamtam-mini-example.ogg

TamTam Edit 示例(默认作曲): linux-sound.org/audio/tamtam-edit-example.ogg

Jaya Kumar 为 LAC 2007 撰写的论文: www.kgw.tu-berlin.de/~lac2007/papers/lac07_kumar.pdf

Jaya Kumar 在 FOSS/IN 2006 上的幻灯片: https://foss.in/2006/cfp/slides/ALSA_and_OLPC_audio_82.pdf

OLPC Wiki: wiki.laptop.org/go/The_OLPC_Wiki

维基百科关于 XO 的介绍: en.wikipedia.org/wiki/OLPC_XO-1

另请参阅 YouTube 以获取有关 XO 各个方面的视频演示。

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

加载 Disqus 评论