Aggiunta di effetti sonori in stile film al Terminale


9

Voglio avere effetti sonori in stile film nel terminale. Sai, quando ogni battitura e linea emette un bip freddo. (Qualcosa del genere.) Ho usato KeyClick , ma è solo per la digitazione della tastiera. Voglio anche effetti quando i personaggi vengono letti sullo schermo, ecc.

So che è superfluo da morire. E probabilmente me ne infastidirò tra cinque minuti. Ma saranno cinque gloriosi minuti.


4
Non ho una risposta per te, ma la tua domanda mi fa impazzire ridere. Grazie!
Chris Page

3
Questo non produce effetti audio, ma: potresti trovare sorprendenti gli effetti visivi dell'emulatore del terminale Cathode: secretgeometry.com/apps/cathode Forse potresti suggerire che aggiungono effetti audio. Sarebbe una buona scelta.
Chris Page

È possibile riprodurre un suono su ogni riga con bash PROMPT_COMMAND, ad es. PROMPT_COMMAND="say 'something silly'"(Sostituire saycon la riproduzione audio da riga di comando di alcuni campioni).
Ingmar Hupp,

Non posso credere di non aver mai visto Cathode prima d'ora. Che app meravigliosamente fantastica ma 'inutile'! :)
chrismanderson,

Risposte:


10

Domanda divertente :)

Non sono sicuro di come ottenere effetti sonori per tutto, ma potresti fare qualcosa del genere per ottenere effetti sonori per alcune cose:

1) Apri il tuo .profile (o .bashrc o dove vuoi conservare le tue personalizzazioni) aprendo una finestra terminale e digitando:

open .profile

2) Aggiungi le seguenti righe alla fine del 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) Prova a digitare "ls" per un elenco di directory o "top" per visualizzare l'elenco dei processi in esecuzione e potrai ascoltare i risultati di questi comandi.

Aggiungendo queste due righe dichiariamo due nuove funzioni con gli stessi nomi dei comandi bash esistenti. Sostituiamo il comando stesso in modo da poter riprodurre un po 'di audio e quindi eseguire il comando stesso (o viceversa, come mostrato nell'esempio "top").

I file audio che sto attualmente utilizzando sono file audio predefiniti (almeno su Lion) che vengono utilizzati per le funzioni di accessibilità. Ho scelto questi in modo da poterli incollare e vedere il trucco in azione, ma è possibile utilizzare qualsiasi file audio al posto di questi.

Ecco un sito con un sacco di effetti sonori di fantascienza che potresti usare al posto di quelli che sto prendendo in prestito dal sistema operativo:

http://fxhome.com/sounds/


1
Su Snow Leopard, il percorso è /System/Library/Components/CoreAudio.component/Contents/Resources/SystemSounds/accessibility/. Bella scoperta a proposito; quelli sono buoni suoni da usare. Mi piace il suono di Mouse Keys ON.aifper la stampa di testo sullo schermo.
Styfle

Grazie per le informazioni - non estende del tutto il suono a quando i personaggi vengono disegnati sullo schermo, ma sembra che richiederebbe un ambiente terminale completamente diverso, piuttosto che semplicemente modificare .profile.
chrismanderson,

0

Non sono sicuro del bit di battitura ... ma potresti farlo stampare l'output di un comando terminale come nei film, cioè ogni riga viene stampata carattere per carattere e riproduce un piccolo segnale acustico per ognuna. All'inizio sembra bello e poi diventa davvero fastidioso. Sarebbe divertente avere un terminale per accenderlo e spegnerlo. Ovviamente piuttosto limitato ma potrebbe essere un progetto divertente da sviluppare.

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!")
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.