Hinzufügen von Soundeffekten im Filmstil zum Terminal

9

Ich möchte Soundeffekte im Filmstil im Terminal haben. Sie wissen, wenn jeder Tastendruck und jede Leitung einen kühlen kleinen Piepton abgibt. (So ​​ähnlich.) Ich habe KeyClick verwendet , aber das ist nur zum Eingeben der Tastatur. Ich möchte auch Effekte, wenn Zeichen über den Bildschirm usw. gelesen werden.

Ich weiß, das ist verdammt überflüssig. Und ich werde mich wahrscheinlich innerhalb von fünf Minuten darüber ärgern. Aber es werden herrliche fünf Minuten sein.

chrismanderson
quelle
4
Ich habe keine Antwort für dich, aber deine Frage hat mich zum Lachen gebracht. Vielen Dank!
Chris Seite
3
Dies macht keine Audioeffekte, aber: Sie finden die erstaunlichen visuellen Effekte des Kathoden-Terminal-Emulators vielleicht amüsant: secretgeometry.com/apps/cathode Vielleicht könnten Sie vorschlagen, dass sie Audioeffekte hinzufügen. Es würde gut passen.
Chris Seite
Sie können in jeder Zeile einen Sound mit Bashs abspielen PROMPT_COMMAND, z. B. PROMPT_COMMAND="say 'something silly'"(durch die sayBefehlszeilen-Audiowiedergabe einiger Samples ersetzen ).
Ingmar Hupp
Ich kann nicht glauben, dass ich Cathode noch nie gesehen habe. Was für eine wunderbar tolle und doch "nutzlose" App! :)
chrismanderson

Antworten:

10

Lustige Frage :)

Ich bin mir nicht sicher, wie Sie Soundeffekte für alles bekommen würden, aber Sie könnten so etwas tun, um Soundeffekte für ein paar Dinge zu bekommen:

1) Öffnen Sie Öffnen Sie Ihr .profile (oder .bashrc oder wo immer Sie Ihre Anpassungen beibehalten möchten), indem Sie ein Terminalfenster öffnen und Folgendes eingeben:

open .profile

2) Fügen Sie die folgenden Zeilen am Ende der Datei hinzu:

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) Geben Sie 'ls' für eine Verzeichnisliste oder 'top' ein, um die Liste der ausgeführten Prozesse anzuzeigen. Die Ergebnisse dieser Befehle werden angezeigt.

Durch Hinzufügen dieser beiden Zeilen deklarieren wir zwei neue Funktionen mit denselben Namen wie vorhandene Bash-Befehle. Wir überschreiben den Befehl selbst, damit wir ein bisschen Audio abspielen und dann den Befehl selbst ausführen können (oder umgekehrt, wie im Beispiel 'top' gezeigt).

Die Audiodateien, die ich derzeit verwende, sind Standard-Audiodateien (zumindest bei Lion), die für Eingabehilfen verwendet werden. Ich habe diese ausgewählt, damit Sie sie ausschneiden und einfügen und den Trick in Aktion sehen können, aber Sie können stattdessen jede Audiodatei verwenden.

Hier ist eine Seite mit einer Reihe von Sci-Fi-Soundeffekten, die Sie anstelle der vom Betriebssystem geliehenen verwenden können:

http://fxhome.com/sounds/

Samuel Mikel Bowles
quelle
1
Auf Snow Leopard ist der Weg /System/Library/Components/CoreAudio.component/Contents/Resources/SystemSounds/accessibility/. Netter Fund übrigens; Das sind gute Sounds. Ich mag den Ton Mouse Keys ON.aifzum Drucken von Text auf den Bildschirm.
Styfle
Vielen Dank für die Info - es erweitert den Sound nicht ganz auf das Zeichnen von Zeichen auf dem Bildschirm, aber das scheint eine ganz andere Terminalumgebung zu erfordern, als nur .profile zu modifizieren.
Chrismanderson
0

Ich bin mir nicht sicher über das Tastenanschlag-Bit ... aber Sie könnten die Ausgabe eines Terminalbefehls wie in den Filmen drucken lassen, dh jede Zeile wird zeichenweise gedruckt und gibt für jede Zeile einen kleinen Piepton aus. Es sieht anfangs cool aus und wird dann richtig nervig. Es würde Spaß machen, ein Terminal zu haben, das Sie ein- und ausschalten können. Natürlich ziemlich begrenzt, könnte aber ein lustiges Projekt sein.

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!")
Anfänger
quelle