力求粗犷:Ogg Vorbis 特刊
网络空间是一个神奇的地方,它不像地球,伙计。还记得那堆快乐的废话吗?那种强大而有力的想法,认为一堆讨厌的机器(当你试图在城外修理它们,而它们在你壁橱里过热,并吸满奇怪的、粘性的、粉状但又毛茸茸的灰尘后崩溃时,你会割伤自己)实际上只是一些魔法以太的世俗外壳,而在这种基质之上,骑着网络空间——一个奇怪而美妙的地方,在那里,如果你足够聪明,想象一些东西,并且熬夜做非常困难的事情,你就可以召唤它,并统治它。
我可以坦白一件有点尴尬的事情吗?在 90 年代中期,我有一台 Macintosh 和一份 Wired 杂志。我用前者换了一台 486 电脑来运行 Linux 和网络程序,远远早于我让后者过期。我开始相信所有这些网络胡言乱语。我学习了 HTML,并制作了这个很酷的,比如,虚拟地牢,你可以在那里通过点击蓝色的小字来四处游荡!还有这份用 Perl 编写的虚拟报纸,人们可以,比如,从当权者手中夺取媒体!我读了约翰·佩里·巴洛的《网络空间独立宣言》
我宣布我们正在构建的全球社会空间自然独立于你们试图强加给我们的暴政。你们没有道德权利统治我们,也没有任何我们真正有理由畏惧的强制执行方法。
哇哦!说得对!当心,军工-电视综合体!网络魔法会震撼你那软弱的屁股!
幸运的是,我们大多数人都已经摆脱了这些东西,并意识到互联网更像现实,而不是它所表现的那样。(该死!)但是,狂野而愚蠢的网络迷幻态度的流行病仍然存在,而这一次,在空中建造闪闪发光的毛绒动物性狂欢宫殿的人是娱乐业。不知何故,他们将通过每次播放按微支付多次向我们出售每件内容来扩大他们的业务,他们将完全控制一切内容被复制或播放的次数,他们纯粹的思想将召唤出一个共识现实,让所有穷困潦倒的音乐家都能获得报酬(Paid,首字母大写 P)。我希望事情如此简单。在某种程度上,我希望我仍然在深夜喝着浓咖啡,看着 Programming Perl 和写满快乐废话的白板。
无论如何,这是本新闻通讯的 Ogg Vorbis 特刊,所以准备好了解一些关于如何做可能很快就会变成非法的事情的技巧,所以不要忘记这些说明仅供娱乐目的。
播放 ogg 文件,不要占用像素,让暂停键工作。
我已经看过几个 Ogg Vorbis 播放器——它们要么在你的屏幕上放一个窗口,要么占用一些 GNOME 或 KDE 面板的东西,反正我不允许它们出现在我的屏幕上。
我无法忍受一个我很少甚至从不接触的后台应用程序使用我付费购买的一些像素。最接近酷炫的播放器是命令行播放器 ogg123,但我不想为此启动一个 xterm。它应该是一个音频播放器,没有理由进入我的眼睛——只需要进入我的耳朵。如果有一种方法可以在后台运行它,并向它发送信号来告诉它该做什么就好了。
事实证明你可以做到这一点。启动一个 ogg123 并执行 killall -STOP ogg123。它会暂停。执行 killall -CONT ogg123。它又开始播放了。启动一个包含多个文件的 ogg123,并执行 killall -INT ogg123。它会跳过曲目。
所以,你可以用信号的力量“远程”控制 ogg123。哇!
让我们快速做一件事,以免我们在这里彻底把自己搞糊涂——让我们 cd /usr/local/bin 并执行 ln -s ../../bin/ogg123 bg-ogg。这样我们就有了看起来像一个名为 bg-ogg 的独立程序,这样我们就可以随意 “killall” 它,而不会干扰我们可能想在前台运行的任何其他 ogg123 进程。
现在我们可以像这样将播放器添加到我们的 .xsession 文件中
# find all the oggs and play them in random order forever (while (true) do find ~/ogg -name *.ogg | xargs bg-ogg -z; done) &
我假设你的 ogg 文件放在 ~/ogg 中——如果不是,你应该知道该怎么做。
现在退出并重启 X。Ogg 文件!在你的耳朵里播放,屏幕上什么都没有!太棒了!如果这没有发生,这里有一些故障排除提示:首先,单独运行该 shell 命令,看看它是否有效。然后在 .xsession 中放入一些随机命令,例如
touch all-hail-xsession
以确保 .xsession 实际上正在运行。(我总是将 .xsession 和 .xinitrc 链接到同一个文件,这样我就不必记住哪个是从 startx 运行的,哪个是从 xdm 运行的。不要费心给我发邮件告诉我哪个是哪个;我以前学过,但只是忘记了。)
同时,对于那些没有诅咒各种 X 启动文件的人,让我们看看如何暂停和重启。执行此操作
(test -e ~/.paused && killall -CONT bg-ogg && rm ~/.paused) || \ (killall -STOP bg-ogg && touch ~/.paused)
音乐暂停了。再次执行相同的命令。它重新开始了。为什么这很重要?为什么不单独使用 -CONT 和 -STOP 命令?这样我们就可以在窗口管理器中绑定一个键,让它充当暂停/播放按钮,而不是必须绑定两个键。
我们现在休息一下,让您启动您选择的窗口管理器配置工具,将一个键绑定到该命令,然后回来。(我不知道你怎么样,但我没有将 “Pause” 键用于其他任何用途。)你们早回来的人一定是 Sawfish 用户;喝点咖啡,我们等 Enlightenment 的人。
在那之后,下一个绑定应该很容易。只需将 killall -INT bg-ogg 绑定到不同的键。这就是你的 “跳过曲目” 按钮。最后,你可能还需要一个键盘音量控制,所以这里是执行此操作的命令
# turn it down aumix -v-4 # turn it up aumix -v+4
如果你想让你的音量控制更粗略,你可以将 4 更改为不同的步长。此控件将影响你系统上的所有音频程序,而不仅仅是 bg-ogg。现在你愿意付多少钱?
此计划的第二步是构建一个适配器,将几个按钮连接到并行端口,并编写一个守护程序,坐在那里等待按钮按下,然后发送适当的信号。然后我可以把它放在我的车里。
转录问题的解决方案
Reno 的 dasbistro.com 的 Sam Phillips 给我在上一期给你们布置的 “配置 Vim 进行转录” 问题的答案。这是 Sam 的答案
开始 SAM 的回答
> 2. Configure Vim to pause an audio-playing application when the user > hits backspace, then restart it after a configurable amount of idle > time. This will help Your Humble Editor transcribe speeches and > interviews for your benefit.
好的,所以我用 xmms 做了一些简单的测试,这似乎可行
(注意:^H = ^v 然后是退格键^M = ^v 然后是回车键)
map ^H :!xmms -u^M^M
当然,这只是暂停它,并没有重新启动它。如果你制作一个简短的 shell 脚本,例如
---->8--- #!/bin/sh xmms -u sleep 5 xmms -u ---->8---
并将它放入某个文件,比如 xmms-pauser.sh,并将它放在你的 ~/bin 中,这就可以在短暂的 5 秒暂停下工作
map ^H :!xmms-pauser.sh&^M^M
到目前为止,这两个都只在你不在插入模式时才有效。这是一个只在插入模式下有效的
(注意:^[ = ^v 然后是 Esacpe 键)
imap ^H ^[:!xmms-pauser.sh&^M^Mi
当然,现在退格键在插入模式下不起作用了,这应该可以解决这个问题
imap ^H ^[:!xmms-pauser.sh&^M^Mxa
好的,现在如果你多次按下退格键,它会不稳定地暂停和取消暂停媒体播放器。这可以通过一次只运行一个 xmms-pauser.sh 实例和一个锁文件来解决
---->8--- #!/bin/sh if [ -f ~/.xmms-pauser ]; then ppid=`cat ~/.xmms-pauser` echo $ppid ps ax | sed -e's/^[ ]\+//' | cut -d' ' -f 1 | grep "^$ppid$" > /dev/null if [ $? = 0 ]; then # process is still around exit fi fi echo -n $$ > ~/.xmms-pauser xmms -u sleep 5 xmms -u rm -f ~/.xmms-pauser ---->8---
现在我们有一些烦人的闪烁,因为当 Vim 进入 shell 时,它会重绘屏幕。这可以通过使用 silent 来修复,这也允许我们去掉一个 ^M
imap ^H ^[:silent !xmms-pauser.sh&^Mxa
这就是你要的。有点。那是你想到的吗?
-- Sam Phillips <sam@dasbistro.com> http://www.dasbistro.com Reno Nevada
结束 SAM 的回答
(由于这效果还不错,我将在以后的期刊中布置未来的读者练习。)
还有一件事——spamassassin 正在迅速成为 “年度自由软件”。垃圾邮件问题终于变得足够糟糕,值得关注了。嗯,也许我们应该举办一个关于垃圾邮件对抗技术的会议,并邀请 John Gilmore 谈谈如何在不为 ISP 基于内容的过滤开创先例的情况下对抗垃圾邮件,这对自由爱好者来说是一些可怕的胡说八道。在你的垃圾邮件对抗本能让你做出你以后可能会后悔的事情之前,查看 toad.com 了解更多信息。
这是我成为 spamassassin 粉丝的另一个原因。我添加了一条规则来匹配正文文本中包含 “Linux”(不区分大小写)的消息。我不得不将我的 spamassassin 容忍度设置得足够高,以允许新闻稿——但有了 Linux 规则,我可以仅从标题中看出哪些新闻稿与 Linux 相关。节省了大量时间。公关人员,不要浪费你宝贵的腕管组织来给我邮寄与 Linux 无关的东西。我是一个 Linux 偏执狂,我为此感到自豪。
还有所有那些带着石油或钻石或其他东西偷偷溜出尼日利亚,并希望我帮助将其转移到美国的可恶的混蛋——算了吧。把你的赃物带回尼日利亚,说出真相并道歉。我是认真的。
——Don Marti 是 Linux Journal 的技术编辑。
电子邮件:dmarti@ssc.com