Ajout d'effets sonores de style film au terminal

9

Je veux avoir des effets sonores de style film dans le terminal. Vous savez, quand chaque frappe et ligne émet un petit bip cool. (Quelque chose comme ça.) J'ai utilisé KeyClick , mais c'est uniquement pour la frappe au clavier. Je veux également des effets lorsque les caractères sont lus sur l'écran, etc.

Je sais que c'est superflu comme l'enfer. Et je serai probablement ennuyé par cinq minutes. Mais ce seront cinq glorieuses minutes.

chrismanderson
la source
4
Je n'ai pas de réponse pour vous, mais votre question m'a fait rire. Merci!
Chris Page
3
Cela ne fait pas d'effets audio, mais: vous pouvez trouver les effets visuels étonnants de l'émulateur de terminal Cathode amusants: secretgeometry.com/apps/cathode Peut-être pourriez -vous suggérer qu'ils ajoutent des effets audio. Ce serait un bon ajustement.
Chris Page
Vous pouvez jouer un son à chaque ligne avec des bash PROMPT_COMMAND, par exemple PROMPT_COMMAND="say 'something silly'"(remplacer saypar la lecture audio en ligne de commande de certains échantillons).
Ingmar Hupp le
Je ne peux pas croire que je n'ai jamais vu Cathode auparavant. Quelle application merveilleusement géniale mais «inutile»! :)
chrismanderson

Réponses:

10

Question amusante :)

Je ne sais pas comment vous obtiendriez des effets sonores pour tout, mais vous pourriez faire quelque chose comme ça pour obtenir des effets sonores pour quelques choses:

1) Ouvrez ouvrez votre .profile (ou .bashrc ou où vous voulez conserver vos personnalisations) en ouvrant une fenêtre de terminal et en tapant:

open .profile

2) Ajoutez les quelques lignes suivantes au bas du fichier:

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) Essayez de taper «ls» pour une liste de répertoires ou «top» pour voir la liste des processus en cours d'exécution et vous entendrez les résultats de ces commandes.

En ajoutant ces deux lignes, nous déclarons deux nouvelles fonctions avec les mêmes noms que les commandes bash existantes. Nous remplaçons la commande elle-même afin que nous puissions lire un peu d'audio, puis exécutons la commande elle-même (ou vice versa, comme illustré dans l'exemple 'top').

Les fichiers audio que j'utilise actuellement sont des fichiers audio par défaut (au moins sur Lion) qui sont utilisés pour les fonctionnalités d'accessibilité. J'ai choisi ces derniers pour que vous puissiez couper-coller et voir l'astuce en action, mais vous pouvez utiliser n'importe quel fichier audio à la place de ceux-ci.

Voici un site avec un tas d'effets sonores de science-fiction que vous pourriez utiliser à la place de ceux que j'emprunte au système d'exploitation:

http://fxhome.com/sounds/

Samuel Mikel Bowles
la source
1
Sur Snow Leopard, le chemin est /System/Library/Components/CoreAudio.component/Contents/Resources/SystemSounds/accessibility/. Belle découverte au fait; ce sont de bons sons à utiliser. J'aime le son de l' Mouse Keys ON.aifimpression de texte à l'écran.
styfle
Merci pour l'info - cela n'étend pas tout à fait le son lorsque des personnages sont dessinés sur l'écran, mais cela semble nécessiter un environnement de terminal complètement différent, plutôt que de simplement modding .profile.
chrismanderson
0

Je ne suis pas sûr du bit de frappe ... mais vous pourriez lui faire imprimer la sortie d'une commande de terminal comme dans les films, c'est-à-dire que chaque ligne est imprimée caractère par caractère et joue un petit bip pour chacune. Il a l'air cool au début, puis devient vraiment ennuyeux. Ce serait amusant d'avoir un terminal que vous pourriez allumer et éteindre. Évidemment assez limité mais cela pourrait être un projet amusant à développer.

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!")
débutant
la source