Skip to content
 

Bach en bash [beep en consola]

Johann Sebastian Bach

¿Sabías que en GNU puedes componer música desde la línea de comandos?

En esta entrada se explicará la forma de componer música para consola usando el famoso pitido de nuestro computador, BEEP.

Actualización 28/10/2009

¿No te gusta el barroco? ¿Te gusta Star Wars? Aquí el script en Bash de la Marcha Imperial de Star Wars, para más información leer: Imperial March Bash Beep

Requisitos

  • Cualquier distribución de GNU/Linux (Aquí se ejemplifica con Ubuntu)
  • Alma de músico o por lo menos gustar de ella
  • Creatividad y paciencia
  • Leer este blog :)

Requisitos de hardware

  • Tener BEEP (dispositivo que emite pitidos)

Imagino que tu PC tiene BEEP (nos damos cuenta al encender el ordenador, éste dice “beep”), asi que obviamos ello, procederemos a ver si tenemos instalado el comando BEEP en nuestro shell (obviamente, primero abrimos un terminal):

root@ignoranto-pc:/home/ignoranto# beep -f 440 -l 1000

Si se escucha un beeep entonces SI tenemos instalado BEEP, caso contrario a instarlo; es sabido que debemos tener privilegios de administrador (root) para instalar software, entonces (usando el comando su, o sudo) procederemos a instalar:

root@ignoranto-pc:/home/ignoranto# aptitude install beep

Se descargarán los paquetes y se instalarán, podemos comprobar que BEEP está instalado escribiendo “beep” en el terminal:

root@ignoranto-pc:/home/ignoranto# beep

A partir de aquí no hace falta tener permisos de administrador, sería bueno que escribamos “exit” para terminar con tareas de administración (solo si se usó su para la instalación)

Ahora que tenemos beep instalado en nuestro shell, veremos sus principales características (las cuales usaremos aquí para hacer música).

  • beep -f 440 emite un pitido de 440 hertz (el sonido de una LA)
  • beep -f 440 -l 1000 emite un pitido de 1 segundo (1000 milésimas de segundo)

Listo! ahora escribiremos música, para ello abriremos un editor de texto (gedit) y escribiremos esto en la primera linea: #!/bin/bash , con ello llamamos a bash para que interprete el código contenido en el archivo!

Aquí una tabla de las frecuencias de las notas musicales:

  • Do > 261
  • Do# > 277
  • Re > 293
  • Re# > 311
  • Mi > 329
  • Fa > 349
  • Fa# > 369
  • Sol > 392
  • Sol# >415
  • La > 440
  • La# > 466
  • Si > 493

En esta web tenemos una gran tabla con las frecuencias de cada nota!

Si quieres ahorrarte el trabajo de usar numeros en lugar de notas musicales, en éste post: Beep Bash hay una tabla con arrays (arreglos, vectores) de las notas musicales en sus diferentes octavas :)

Ahora escribiremos una melodía bastante conocida: La “Toccata et Fuga BWV565″ de Johann Sebastian BACH, escribirla completa llevaría años, asi que solo escribiremos el comienzo de la Toccata, las notas son las siguientes:

La sol laaa, sol fa mi re do# reee…

La frecuencia de LA es 440, y la de sol 392, entonces para escribir “la sol laaa” debemos escribir lo siguiente (en el archivo):

beep -l 150 -f 440 #la
beep -l 150 -f 392 #sol
beep -l 800 -f 440 #la

Le damos 150 milésimas de segundo a “La sol” y 800 milésimas a “laaa…”; ahora escribiremos las demás notas

beep -l 150 -f 392 #sol
beep -l 150 -f 348 #fa
beep -l 150 -f 329 #mi
beep -l 150 -f 293 #re
beep -l 350 -f 277 #dos
beep -l 800 -f 293 #re!

Luego de terminar de escribir, guardamos el archivo con extensión .sh y lo ejecutamos en el terminal de la siguiente manera

gerware@ignoranto-pc:~$ sh nombre_de_mi_archivo.sh

~” éste caracter representa el directorio /home/mi_usuario; pueden descargar ésta melodía haciendo clic aquí

¿Tienes Microsoft Windows y quieres música en tu terminal?
La clase Console tiene como método beep(); podemos escribir melodías haciendo uso de Console.Beep(); en C# con Visual Studio

Actualización 23/10/2009
Si deseamos algo más musical entonces necesitaremos producir silencios, en realidad esos “silencios” no son parte de beep, sino es un comando que ejecuta pausas en el terminal y practicamente dichas pausas se evalúan como silencios, para ello usamos sleep; para conocer más el uso de sleep podemos hacer “man sleep:)

4 Comments

  1. Eduardo Diaz dice:

    Sinceramente…LA KAGADA! suena mi cpu .. anal csm.. no sabia como usar Beep :D pero con tu sh bacn suena

  2. aeepa dice:

    como pones mudos y tal

  3. Gerber dice:

    Hola! usando el comando “sleep” :)

  4. [...] escribí aquí como hacer crear pequeñas melodías usando una consola en GNU, ahora le tocó el turno a Microsoft [...]

Leave a Reply