Додавання звукових ефектів у фільмі до терміналу


9

Я хочу, щоб у терміналі були звукові ефекти фільму. Ви знаєте, коли кожен натискання клавіші та рядка видає маленький прохолодний звуковий сигнал. (Щось подібне.) Я використовував KeyClick , але це лише для набору тексту на клавіатурі. Я також хочу, щоб ефекти читалися на екрані тощо.

Я знаю, це чудово, як пекло. І я, мабуть, роздратуюся цим протягом п'яти хвилин. Але це буде славні п’ять хвилин.


4
Я не маю на тебе відповіді, але твоє питання розізлило мене сміхом. Дякую!
Chris Page

3
Це не робить аудіоефектів, але: вам можуть здатися дивовижні візуальні ефекти емулятора терміналу Cathode: secretgeometry.com/apps/cathode Можливо, ви можете запропонувати їм додати аудіоефекти. Це було б добре.
Chris Page

Ви можете відтворювати звук у кожному рядку з bash's 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для друку тексту на екран.
стайф

Дякую за інформацію - вона не дуже поширює звук, коли символи виводяться на екран, але, схоже, це вимагатиме зовсім іншого термінального середовища, а не просто моделювання .profile.
chrismanderson

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!")
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.