破解与改造 / - Wii 让 Linux 焕发活力
在我 2008 年 8 月的专栏中,我写了关于如何在 Linux 系统上使用任天堂 Wii 的 Wiimote 作为通用无线操纵杆的文章。在那篇专栏中,我介绍了如何绑定 Wiimote 以及 Nunchuck 和 Classic Controller 上的按钮,以便您可以将它们与许多不同的视频游戏模拟器一起使用。嗯,自从那篇专栏之后,Wii 版的 摇滚乐队 发行了,随之而来的是三个额外的外围设备:无线吉他、麦克风和鼓组。
每个人都知道只有老年人才弹真正的吉他,所以我不能错过在我的 Wii 上用一整套塑料乐器摇滚的机会。我之前没有过多阅读关于 Wii 摇滚乐队 配套乐器的信息,所以当我拆开所有东西时,我很惊讶地注意到所有三种乐器都通过 USB 连接到 Wii。这让我只剩下一个问题,这些乐器能在 Linux 中工作吗?
事实证明,不仅所有三种 摇滚乐队 乐器都可以在 Linux 中工作,而且它们都只需付出很少的额外努力即可工作。在本专栏中,我将介绍如何配置 Linux 以识别这些乐器,并重点介绍一些您可以将它们与哪些应用程序一起使用。
可能最容易在 Linux 中工作的乐器是麦克风。当我插入它时,我立即得到了 dmesg 输出,它识别出它
[ 188.006918] usb 1-1: new full speed USB device using uhci_hcd and address 2 [ 188.132102] usb 1-1: configuration #1 chosen from 1 choice [ 188.474088] usbcore: registered new interface driver snd-usb-audio
然后我启动了 Audacity,我最喜欢的录音程序之一,看看麦克风是否可以工作。默认情况下,Audacity 设置为我的系统麦克风,所以我点击了“编辑”→“首选项”,然后在“音频 I/O”窗口的录音部分,我从“录音设备”下拉菜单中选择了“ALSA: Logitech USB Microphone: USB Audio”。我还将其更改为单声道设备。
在我点击“确定”接受我的更改后,我点击了 Audacity 主窗口上的红色“录制”按钮并开始说话。我立即在输出中看到了我的声音,一旦我点击“停止”按钮并回放,我肯定能听到自己的声音。
考虑到麦克风的使用如此简单,我想知道 Linux 会如何处理无线吉他。它似乎像无线鼠标或键盘一样连接,带有一个小的 USB 加密狗,上面有一个连接按钮,您可以用来与无线设备同步。当我连接加密狗时,我可以在 dmesg 输出中看到我的 Ubuntu Hardy 安装版已将该设备检测为某种 USB 人体学接口设备 (HID)
[ 775.322361] usb 1-1: new full speed USB device using uhci_hcd and address 3 [ 775.369009] usb 1-1: configuration #1 chosen from 1 choice [ 775.525791] usbcore: registered new interface driver hiddev [ 775.531822] input: Licensed by Nintendo of America Harmonix Guitar Controller for Nintendo Wii as /devices/pci0000:00/0000:00:1d.0/usb1/1-1/ ↪1-1:1.0/input/input10 [ 775.545411] input,hidraw0: USB HID v1.11 Gamepad [Licensed by Nintendo of America Harmonix Guitar Controller for Nintendo Wii] on usb-0000:00:1d.0-1 [ 775.545444] usbcore: registered new interface driver usbhid [ 775.545451] /build/buildd/linux-2.6.24/drivers/hid/ ↪usbhid/hid-core.c: v2.6:USB HID core driver
看起来一个新的游戏手柄设备已安装在 /dev/input/js0 下,所以我使用了有用的 jstest 实用程序(由许多发行版打包)来测试吉他上的按钮是否生成事件。要使用 jstest,只需使用要测试的操纵杆设备作为参数(在我的例子中是 /dev/input/js0)执行该程序。每次注册操纵杆事件时,终端中的输出都会更新。图 2 中显示的四行是在我按下并松开吉他上的绿色和红色按钮时的输出示例。
如果您比较这些行,您可以看到绿色按钮对应于按钮 1,红色按钮对应于按钮 2。因为吉他像常规操纵杆设备一样直接与 Linux 接口,这意味着我可以将它的按钮与任何支持操纵杆的游戏一起使用。
当然,Linux 上 摇滚乐队 吉他的最佳游戏可能是 Frets on Fire。Frets on Fire 是一款用 Python 编写的开源吉他游戏,并为许多发行版和操作系统打包。默认情况下,它被设计为与您像握吉他一样握在手中的常规键盘一起使用。F1-F5 键是吉他上的品格,Enter 键可以用来扫弦。这还可以,但是使用专为此目的设计的吉他当然更好,而且果然,Frets on Fire 支持将默认键盘键重新映射到操纵杆按钮。
要为我的吉他配置 Frets on Fire,我只需要启动游戏,进入“设置”,然后修改按键设置。我只是浏览了为游戏配置的每个按键,选择它,然后当它要求我按下新按键进行设置时,我选择了吉他上对应的按键。在这种方法中更改按键后,您会注意到您可以完全通过吉他导航 Frets on Fire 游戏。您可以向上或向下扫弦以在菜单中移动,并使用绿色按钮进行选择。
最后的 摇滚乐队 乐器也是我最喜欢的——鼓。虽然您可能会争辩说,麦克风是游戏中最接近真实乐器的乐器,但鼓对我来说感觉最真实。当然,最大的问题是鼓是否在 Linux 中注册。在将鼓连接到我的机器后,我从 dmesg 输出中看到了希望
[ 400.997524] usb 1-1: new full speed USB device using uhci_hcd and address 7 [ 401.059524] usb 1-1: configuration #1 chosen from 1 choice [ 401.078667] input: Licensed by Nintendo of America Harmonix Drum Controller for Nintendo Wii as /devices/pci0000:00/0000:00:1d.0/usb1/1-1/ ↪1-1:1.0/input/input14 [ 401.104320] input,hidraw0: USB HID v1.11 Gamepad [Licensed by Nintendo of America Harmonix Drum Controller for Nintendo Wii] on usb-0000:00:1d.0-1
事实证明,鼓像吉他一样显示为操纵杆设备。我运行了 jstest(与吉他一样),指向新的操纵杆设备,敲击了一些鼓垫,并且能够看到它们确实生成了按钮事件。具体来说,我看到蓝色是按钮 0,绿色是按钮 1,红色是按钮 2,黄色是按钮 3,脚踏板是按钮 4。
现在,虽然我可能可以将鼓与 Frets on Fire 或任何支持操纵杆的游戏一起使用,但不幸的是,我无法找到专门使用鼓的免费 Linux 游戏。相反,我找到了一些可以说更好的东西:一个名为 Hydrogen 的免费 Linux 鼓组程序,它允许您创建自己的鼓音轨,并且可以与键盘或 MIDI 设备接口。Hydrogen 已为我的发行版打包,或者您可以从官方网站下载并构建它。不幸的是,Wii 鼓组不能作为 MIDI 设备,并且 Hydrogen 没有设置为接受来自操纵杆的输入。Hydrogen 允许您使用键盘上的按键来激活鼓组的不同部分,所以我必须找到一种方法将操纵杆按钮映射到按键事件。幸运的是,已经存在一个名为 joy2key 的应用程序。joy2key 是一个非常基本的程序。您在命令行上运行该程序,并告诉它要使用哪个操纵杆以及要将哪些按键映射到特定的操纵杆按钮。然后,您可以单击应用程序以将其绑定到,它会将所有操纵杆事件发送到该特定窗口。
joy2key 也已经由我的发行版打包,安装后,我只需要选择要将按钮绑定到哪些按键。Hydrogen 中前五个鼓类型分别由 Z、S、X、C 和 D 键激活。所以,首先我启动了 Hydrogen,然后在终端中,我输入了
joy2key -X -buttons d c s x z -dev /dev/input/js0 ↪-thresh 0 0 0 0 0 0 0 0 0 0 0 0
除了 -buttons 选项之外,-X 选项告诉 joy2key 发送 X 事件。-dev 选项将其指向您的操纵杆设备,-thresh 选项设置触发每个按钮事件的低阈值和高阈值。如果您不指定 -thresh,joy2key 会在您每次运行时提示您设置值,并且由于这些按钮要么打开要么关闭,我只是将它们设置为零。运行此命令后,您的鼠标图标应变为十字。单击 Hydrogen 窗口,然后 joy2key 将开始向 Hydrogen 发送事件。
鼓声的顺序以及它们如何对应于按键在 Hydrogen 模式编辑器中设置(图 5)。有许多不同的方法可以排列声音和按钮映射,但可能最简单的保持直线顺序的方法是将模式编辑器设置为好像您从脚踏板开始在 Wii 鼓组上演奏一样。默认情况下,这可能不会正确设置为适合 joy2key 设置,因此单击特定的鼓声以突出显示它,然后按该列顶部的向上/向下箭头重新排列其顺序。在底部,放置底鼓,然后是军鼓,然后是踩镲(如打开的踩镲),然后是通鼓,然后是镲片(叮叮镲)。安排好这些声音后,敲击鼓组上的一些鼓垫,您应该在计算机上听到它们对应的声音。继续,演奏一两段鼓独奏,以适应当前的模式。
Hydrogen 是一个足够复杂的程序,值得单独写一篇文章,但以下是您现在可以使用 Wii 鼓组完成的许多事情中的一部分。首先,Hydrogen 包含许多不同的鼓组采样,您可以从中选择,您甚至可以创建自己的鼓组采样,因此您可以为您的鼓尝试许多不同的声音。此外,您还可以在录制不同的节拍模式时使用您的鼓组。最后,如果您愿意,您可以将您的计算机连接到一套响亮的扬声器并开始演奏。Hydrogen 包括一个用于每种声音的混音器,因此您可以调整相对音量。
好吧,如果您还没有被诱惑购买一套 摇滚乐队 乐器仅仅为了您的 Wii,现在您又多了一个借口……呃,理由……为什么您需要它们。这证明了 Linux 在进步方面取得了多大的进步,以至于您可以轻松地让这些随机设备在您的计算机上工作。至于我,我将切换 Hydrogen 中的鼓模式,以便它们包含更多的牛铃。
资源
Audacity: audacity.sourceforge.net
Frets on Fire: fretsonfire.sourceforge.net
Hydrogen: www.hydrogen-music.org
Kyle Rankin 是旧金山湾区的高级系统管理员,并且是许多书籍的作者,包括 O'Reilly Media 出版的 Knoppix Hacks 和 Ubuntu Hacks。他目前是北湾 Linux 用户组的主席。