11 votos

Añadir efectos de sonido de tipo cinematográfico al Terminal

Quiero tener efectos de sonido al estilo de las películas en el terminal. Ya sabes, cuando cada pulsación de tecla y línea emite un pequeño y genial pitido. (Algo así.) He utilizado KeyClick pero eso es sólo para la escritura en el teclado. También quiero efectos cuando los caracteres se leen a través de la pantalla, etc.

Sé que esto es superfluo como el infierno. Y probablemente me moleste en cinco minutos. Pero serán cinco minutos gloriosos.

4 votos

No tengo una respuesta para ti, pero tu pregunta me hizo reír. ¡Gracias!

3 votos

Esto no hace efectos de audio, pero: puedes encontrar divertidos los increíbles efectos visuales del emulador de terminal catódico: secretgeometry.com/apps/cathode Tal vez podría sugerir que añadan efectos de audio. Sería una buena opción.

0 votos

Puedes reproducir un sonido en cada línea con la función de bash PROMPT_COMMAND Por ejemplo PROMPT_COMMAND="say 'something silly'" (sustituir say con reproducción de audio en la línea de comandos de algunas muestras).

10voto

Zeba Puntos 16

Pregunta divertida :)

No estoy seguro de cómo conseguirías efectos de sonido para todo, pero podrías hacer algo así para conseguir efectos de sonido para algunas cosas:

1) Abre tu .profile (o .bashrc o donde quieras guardar tus personalizaciones) abriendo una ventana de terminal y escribiendo:

open .profile

2) Añade las siguientes líneas al final del archivo:

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) Intenta escribir 'ls' para obtener un listado de directorios o 'top' para ver la lista de procesos en ejecución y podrás escuchar los resultados de estos comandos.

Al añadir estas dos líneas estamos declarando dos nuevas funciones con los mismos nombres que los comandos bash existentes. Sobreescribimos el comando mismo para poder reproducir un poco de audio y luego ejecutar el comando mismo (o viceversa como muestra el ejemplo 'top').

Los archivos de audio que estoy utilizando actualmente son archivos de audio por defecto (al menos en Lion) que se utilizan para las funciones de accesibilidad. Los elegí para que pudieras cortar y pegar, y ver el truco en acción, pero podrías usar cualquier archivo de audio en lugar de estos.

Aquí hay un sitio con un montón de efectos de sonido de ciencia ficción que podrías usar en lugar de estos que tomo prestados del SO:

http://fxhome.com/sounds/

1 votos

En Snow Leopard, la ruta es /System/Library/Components/CoreAudio.component/Contents/Reso‌​urces/SystemSounds/a‌​ccessibility/ . Por cierto, buen hallazgo; son buenos sonidos para usar. Me gusta el sonido de Mouse Keys ON.aif para imprimir texto en la pantalla.

0 votos

Gracias por la información - no acaba de extender el sonido a cuando los personajes se están dibujando en la pantalla, pero eso parece que requeriría un entorno de terminal completamente diferente, en lugar de sólo modding .profile.

0voto

rookie Puntos 101

No estoy seguro de lo de la pulsación de teclas... pero podrías hacer que imprimiera la salida de un comando de terminal como en las películas, es decir, cada línea se imprime carácter por carácter y reproduce un pequeño pitido por cada uno. Al principio se ve bien y luego se vuelve muy molesto. Sería divertido tener un terminal que pudiera activar y desactivar esto. Obviamente es bastante limitado pero podría ser un proyecto divertido de desarrollar.

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

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X