向终端添加电影风格的声音效果


9

我希望在终端中具有电影风格的声音效果。您知道,每次击键和击键时都会发出一声凉爽的哔哔声。(这样的事情。)我使用了KeyClick,但这仅用于键盘输入。我还想要在屏幕上读取字符等时的效果。

我知道这太过分了。我可能会在五分钟之内被它烦恼。但这将是光荣的五分钟。


4
我没有答案,但是你的问题使我发笑。谢谢!
克里斯·佩奇

3
这不会产生音频效果,但是:您可能会发现Cathode终端仿真器的惊人视觉效果很有趣:secretgeometry.com/apps/cathode也许您可以建议他们添加音频效果。这将是一个很好的选择。
克里斯·佩奇

您可以用bash的每一行播放声音PROMPT_COMMAND,例如PROMPT_COMMAND="say 'something silly'"(用say某些示例的命令行音频播放代替)。
Ingmar Hupp

不敢相信我以前从未见过阴极。多么棒的应用程序!:)
chrismanderson 2011年

Answers:


10

好玩的问题:)

我不确定您将如何获得所有声音效果,但是您可以执行以下操作来获得声音效果:

1)通过打开终端窗口并键入以下内容,以打开.profile文件(或.bashrc文件或任何您希望保留自定义内容的位置):

open .profile

2)在文件底部添加以下几行:

function top() { afplay /System/Library/Components/CoreAudio.component/Contents/SharedSupport/SystemSounds/accessibility/Sticky\ Keys\ ON.aif; command top;}
function ls() { command ls; afplay /System/Library/Components/CoreAudio.component/Contents/SharedSupport/SystemSounds/accessibility/Slow\ Keys\,\ Key\ Registered.aif; }

3)尝试在目录列表中键入“ ls”,或在“ top”中键入正在运行的进程的列表,然后您将听到这些命令的结果。

通过添加这两行,我们声明了两个新函数,它们的名称与现有的bash命令相同。我们覆盖命令本身,以便我们可以播放一些音频,然后运行命令本身(反之亦然,如“ top”示例所示)。

我当前正在使用的音频文件是用于辅助功能的默认音频文件(至少在Lion上)。我选择这些是为了使您可以剪切粘贴,并了解操作的窍门,但可以使用任何音频文件代替这些文件。

这是一个拥有大量科幻音效的网站,您可以用来代替我从OS借来的这些音效:

http://fxhome.com/sounds/


1
在雪豹上,路径为/System/Library/Components/CoreAudio.component/Contents/Resources/SystemSounds/accessibility/。顺便找个好地方;这些都是很好的声音。我喜欢将Mouse Keys ON.aif文本打印到屏幕上的声音。
styfle 2011年

感谢您提供的信息-并没有将声音扩展到在屏幕上绘制字符时的声音,但这似乎需要一个完全不同的终端环境,而不仅仅是修改.profile。
chrismanderson 2011年

0

不确定按键位...但是您可以像在电影中一样让它打印终端命令的输出,即每一行都是一个字符一个字符地打印,并且每行都会发出一点哔声。最初看起来很酷,然后变得很烦人。拥有一个可以将其打开和关闭的终端会很有趣。显然相当有限,但可能是一个有趣的项目。

from subprocess import PIPE, Popen
import os

from time import *
import sys
from playsound import playsound

def print_immediately(string):
    sys.stdout.write(string)
    sys.stdout.flush()

def backspace():
    print('\r', end='')

def printline(x, silent=False):
    n = len(x)
    for i in range(n):
        print_immediately(x[:(i+1)])
        if not silent:
            beep()
        sleep(0.01)
        backspace()
    sys.stdout.write('\n')
    sys.stdout.flush()

def printlines(x, silent=False):
    result = str(x.decode("utf-8"))
    lines = str.split(result, "\n")
    for line in lines:
        printline(line, silent=False)

def beep():
    playsound('/Users/Blah/Projects/console/beep.wav', block=False)

def cmdline(command):
    process = Popen(
        args=command,
        stdout=PIPE,
        shell=True
    )
    return process.communicate()[0]

while True:
    command = input("user: ")
    if(command == 'exit'):
        break
    else:
        try:
            if command.find("cd ") != -1:
                dir = command.replace("cd ", "")
                os.chdir(os.path.expanduser(dir))
                print(dir)
            else:
                printlines(cmdline(command))
        except:
           print("Error!")
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.