Добавление звуковых эффектов в стиле фильма в терминал

9

Я хочу, чтобы в терминале были звуковые эффекты в стиле фильма. Вы знаете, когда каждое нажатие клавиши и строка издают прохладный маленький звуковой сигнал. (Примерно так.) Я использовал KeyClick , но это только для набора текста с клавиатуры. Я также хочу эффекты, когда символы читаются по экрану и т. Д.

Я знаю, что это чертовски излишне. И я, вероятно, буду раздражен этим в течение пяти минут. Но это будут великолепные пять минут.

chrismanderson
источник
4
У меня нет ответа для вас, но ваш вопрос рассердил меня до смеха. Спасибо!
Крис Пейдж
3
Это не делает аудиоэффекты, но: вы можете найти удивительные визуальные эффекты эмулятора терминала Cathode забавными: secretgeometry.com/apps/cathode Возможно, вы могли бы предложить, чтобы они добавили аудиоэффекты. Это было бы хорошо подходит.
Крис Пейдж
Вы можете воспроизводить звук в каждой строке с помощью bash PROMPT_COMMAND, например PROMPT_COMMAND="say 'something silly'"(замените sayвоспроизведение аудио сэмплов в командной строке некоторыми сэмплами).
Ингмар Хапп
Не могу поверить, что никогда раньше не видел Катода. Какое замечательное, но бесполезное приложение! :)
chrismanderson

Ответы:

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. Мы перезаписываем саму команду, чтобы мы могли воспроизвести немного аудио, а затем запустить саму команду (или наоборот, как показано в «верхнем» примере).

Аудиофайлы, которые я сейчас использую, являются аудиофайлами по умолчанию (по крайней мере, на Lion), которые используются для специальных возможностей. Я выбрал их, чтобы вы могли вырезать-вставить и увидеть трюк в действии, но вместо них можно было использовать любой аудиофайл.

Вот сайт с кучей научно-фантастических звуковых эффектов, которые вы могли бы использовать вместо тех, которые я позаимствовал у ОС:

http://fxhome.com/sounds/

Сэмюэл Микел Боулз
источник
1
На снежном барсе путь есть /System/Library/Components/CoreAudio.component/Contents/Resources/SystemSounds/accessibility/. Кстати, хорошая находка; это хорошие звуки для использования. Мне нравится звук Mouse Keys ON.aifдля печати текста на экран.
Styfle
Спасибо за информацию - она ​​не совсем распространяет звук, когда символы выводятся на экран, но кажется, что для этого потребуется совсем другая среда терминала, а не просто модификация .profile.
Крисмандерсон
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!")
новобранец
источник