Beeper
Nombre: Beeper
Autor: Point_to_null (Carlos Marcelo Cabrera)
Origen: Propio
Lenguaje: Python
Licencia: GPL
Propósito: Reproduce sonidos con en altavoz integrado del CPU
Dependencias: python, beep
Código:
#!/usr/bin/env python
#_*_ coding: UTF_8 _*_
import os
import sys
def beep(freq=750, length=200, reps=1, delay=200):
return os.system("beep -f " + str(freq) + " -l " + str(length) + " -r " + \
str(reps) + " -d " + str(delay))
def beeps(parametros):
return os.system("beep" + " -n".join([" -f " + str(par[0]) + " -l "\
+ str(par[1]) + " -d " + str(par[2]) for par in parametros]))
def morse(texto, tempo=50, frecuencia=2278):
parametros = {
"." : (frecuencia, tempo, 0),
"_" : (frecuencia, tempo * 3, 0),
" " : (1, tempo, 0)
}
codigos = {
"a" : ". _ ",
"b" : "_ . . . ",
"c" : "_ . _ . ",
"ch" : "_ _ _ _ ",
"d" : "_ . . ",
"e" : ". ",
"f" : ". . _ . ",
"g" : "_ _ . ",
"h" : ". . . . ",
"i" : ". . ",
"j" : ". _ _ _ ",
"k" : "_ . _ ",
"l" : ". _ . . ",
"m" : "_ _ ",
"n" : "_ . ",
"ñ" : "_ _ . _ _ ",
"o" : "_ _ _ ",
"p" : ". _ _ . ",
"q" : "_ _ . _ ",
"r" : ". _ . ",
"s" : ". . . ",
"t" : "_ ",
"u" : ". . _ ",
"v" : ". . . _ ",
"w" : ". _ _ ",
"x" : "_ . . _ ",
"y" : "_ . _ _ ",
"z" : "_ _ . . ",
"O" : "_ _ _ _ _ ",
"1" : ". _ _ _ _ ",
"2" : ". . _ _ _ ",
"3" : ". . . _ _ ",
"4" : ". . . . _ ",
"5" : ". . . . . ",
"6" : "_ . . . . ",
"7" : "_ _ . . . ",
"8" : "_ _ _ . . ",
"9" : "_ _ _ _ . ",
"." : ". _ . _ . _ ",
"," : "_ _ . . _ _ ",
"?" : ". . _ _ . . ",
"¿" : ". . _ _ . . ",
"=" : "_ . . . _ ",
"/" : "_ . . _ . ",
"-" : "_ . . . . _ ",
" " : " ",
"\"" : ". _ . . _ . ",
"AS" : ". _ . . . ",
"AR" : ". _ . _ . ",
"K" : ". _ . _ . ",
"KN" : "_ . _ _ . ",
"VA" : ". . . _ . _ ",
"SN" : ". . . _ . ",
"R" : ". _ . ",
"EE" : "_ _ _ _ _ _ _ _ "
}
texto = texto.lower()
for caracter in texto:
if not caracter in codigos:
caracter = "EE"
beeps([parametros[sonido] for sonido in \
[codigo for codigo in codigos[caracter]]])
def whistle(texto, tempo=100):
for caracter in texto:
beep((((ord(caracter) % 255) * 10000)) / 255 + 1, tempo)
if __name__ == "__main__":
ordenes = {
"morse" : morse,
"whistle" : whistle,
}
if len(sys.argv) == 2:
if sys.argv[1] in ordenes:
orden = ordenes[sys.argv[1]]
else:
sys.exit(2)
while True:
try:
entrada = raw_input()
except EOFError:
break
else:
orden(entrada)
else:
sys.exit(1)
Ejemplos de uso:
Lee los parámetros de la entrada estándar.
deimos@Milva:pts/1 echo hola mundo|beeper morse
deimos@Milva:pts/1 echo hola mundo|beeper whistle
deimos@Milva:pts/1 beeper morse
ahora lee mientras escribo
podemos escuchar el codigo morse cada vez que presionamos enter
sos
salgo con C-DO podemos incluirlo en nuestro programas python muy fácilmente.
#!/usr/bin/env python
#_*_ coding: UTF_8 _*_
import beeper
def funcionlenta():
hago algo aburrido y muy lento
return """una salida a modo de texto"""
if __name__ == "__main__":
resultado = funcionlenta()
whistle(resultado, 10)
Comentarios:
Es, sobre todo, un modulo para python. Aunque puede ser utilizado como programa final.. Por ahora carece de ayuda y no están disponibles todas las posibilidades del modulo cuando se lo usa como ejecutable per se.