Menambahkan efek suara gaya film ke Terminal

9

Saya ingin memiliki efek suara gaya film di terminal. Anda tahu, ketika setiap keystroke dan garis mengeluarkan bunyi bip kecil yang keren. (Sesuatu seperti ini.) Saya telah menggunakan KeyClick , tapi itu hanya untuk mengetik keyboard. Saya juga ingin efek ketika karakter dibaca di layar, dll.

Saya tahu ini sangat berlebihan. Dan saya mungkin akan jengkel karenanya dalam lima menit. Tapi itu akan menjadi lima menit yang mulia.

Chrismanderson
sumber
4
Saya tidak punya jawaban untuk Anda, tetapi pertanyaan Anda membuat saya tertawa. Terima kasih!
Chris Page
3
Ini tidak menghasilkan efek audio, tetapi: Anda mungkin menemukan efek visual emulator terminal Cathode yang luar biasa lucu: secretgeometry.com/apps/cathode Mungkin Anda bisa menyarankan mereka menambahkan efek audio. Itu akan cocok.
Chris Page
Anda dapat memainkan suara setiap baris dengan bash PROMPT_COMMAND, misalnya PROMPT_COMMAND="say 'something silly'"(ganti saydengan pemutaran audio baris perintah dari beberapa sampel).
Ingmar Hupp
Tidak percaya saya belum pernah melihat Katoda sebelumnya. Sungguh aplikasi yang luar biasa luar biasa namun 'tidak berguna'! :)
chrismanderson

Jawaban:

10

Pertanyaan menyenangkan :)

Saya tidak yakin bagaimana Anda akan mendapatkan efek suara untuk semuanya tetapi Anda bisa melakukan sesuatu seperti ini untuk mendapatkan efek suara untuk beberapa hal:

1) Buka, buka .profile Anda (atau .bashrc atau di mana pun Anda ingin tetap menyesuaikan) dengan membuka jendela terminal dan mengetik:

open .profile

2) Tambahkan beberapa baris berikut ke bagian bawah file:

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) Coba ketikkan 'ls' untuk daftar direktori atau 'atas' untuk melihat daftar proses yang sedang berjalan & Anda akan dapat mendengar hasil dari perintah ini.

Dengan menambahkan dua baris ini, kami mendeklarasikan dua fungsi baru dengan nama yang sama dengan perintah bash yang ada. Kami menimpa perintah itu sendiri sehingga kami dapat memutar sedikit audio dan kemudian menjalankan perintah itu sendiri (atau sebaliknya seperti yang ditunjukkan contoh 'atas').

File audio yang saya gunakan saat ini adalah file audio default (setidaknya pada Lion) yang digunakan untuk fitur aksesibilitas. Saya memilih ini sehingga Anda dapat memotong-rekatkan, dan melihat triknya dalam tindakan tetapi Anda dapat menggunakan file audio apa pun sebagai pengganti.

Berikut adalah situs dengan banyak efek suara sci-fi yang dapat Anda gunakan sebagai pengganti yang saya pinjam dari OS:

http://fxhome.com/sounds/

Samuel Mikel Bowles
sumber
1
Di Snow Leopard, jalannya /System/Library/Components/CoreAudio.component/Contents/Resources/SystemSounds/accessibility/. Nice menemukan omong-omong; itu adalah suara yang bagus untuk digunakan. Saya suka suara Mouse Keys ON.aifuntuk mencetak teks ke layar.
styfle
Terima kasih atas informasinya - ini tidak cukup memperluas suara ketika karakter sedang ditarik ke layar, tetapi sepertinya itu akan membutuhkan lingkungan terminal yang berbeda, bukan hanya modding .profile.
chrismanderson
0

Tidak yakin tentang sedikit keystroke ... tetapi Anda bisa mencetak hasil dari perintah terminal seperti di film, yaitu setiap baris dicetak karakter demi karakter dan memainkan bunyi bip kecil untuk masing-masing. Terlihat keren pada awalnya dan kemudian menjadi sangat menjengkelkan. Akan menyenangkan untuk memiliki terminal yang Anda dapat menghidupkan dan mematikan ini. Jelas sangat terbatas tetapi bisa menjadi proyek yang menyenangkan untuk dikembangkan.

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!")
calon
sumber