Hola! Hace poco (o quizá mucho) escribí la Marcha Imperial de Star Wars en C Sharp y ahora le tocó el turno a BASH! uno de los intérpretes de comandos para GNU/Linux más conocidos
In English…
Hello! Download here: Imperial March GNU/Linux Bash Beep
Para conocer un poco el funcionamiento de Beep en BASH recomiendo leer este pequeño post: Beep Bash.
La partitura (un arreglo simple) para piano y el script: Imperial March Bash Beep
Ésta melodía se agrupa en varias frases las cuales constan de “beeps” y son llamadas en orden según la composición de la melodía, aquí solo una de las frases:
function frase000
{
for ((i=0;i<3;i+=1)); do
pitido ${SOL[3]} $NEGRA;
done;
pitido ${RES[3]} $CORCHEAP;
pitido ${LAS[3]} $FUSA;
pitido ${SOL[3]} $NEGRA;
miSiSol;
}
La función anterior reproduce un bucle con la nota SOL de la 3ra octava +1 (los arrays comienzan de 0), por lo cual estaría tocando SOL SOL SOL y cada sol con la duración de una NEGRA, luego de ello llamamos a la funcion miSiSOl, el cual reproduce dichas notas
, como verán el código es entendible, la función “pitido” recibe 2 parámetros, la frecuencia y la duración de la nota, en realidad dicha funcion hace llamado a beep, el pequeño programa que se encarga de producir beeps;
Luego de todo ello he implementado la función trémolo, el cual hace un trémolo intercambiando octavas dependiendo a un lapso de tiempo, la función recibe 3 parámetros y el código es el siguiente:
function tremolo
{
let F1=$1;
let F2=$2;
let DUR=$3
let FU=50;
let FD=25;
while [ $FU -le $DUR ];
do
pitido $F1 $FD;
pitido $F2 $FD;
let FU=$FU+50;
done;
}
Recibimos el primer parametro y lo guardamos como F1 de la misma manera con F2 y DUR (usamos let para evaluar (operar aritmeticamente) las entradas), iniciamos un bucle, mientras FU sea menor que DUR (duración del trémolo) entonces ejecutará 2 pitidos el primero con la primera frecuencia y el segundo con la segunda frecuencia, cada pitido con 25 milésimas de segundo de duración, luego cambiamos el valor de FU y le añadimos su mismo valor incrementado en 50 (la duracion de ambos pitidos).
Descarga y ejecuta el Script
Sin más que escribir les presento: Imperial March Bash Beep Para ejecutarlo necesitamos darle permisos de ejecución y luego escribimos en la carpeta donde guardamos el script ./nombreArchivo.sh o sh nombreArchivo.sh, el script les solicitará un tempo (notas “negras” por minuto [bpm]), recomiendo colocar un tempo entre 100 y 140.
Es IMPORTANTE tener instalado el comando BEEP, si usas un sistema basado en debian basta con escribir “apt-get install beep” en la linea de comandos
¿Algo más? SI! Pronto (cuando disponga de tiempo) escribiré esta misma melodía en userRPL para las calculadoras HP50G


[...] ¿Mono ejecuta el binario pero no suena la bocina de tu PC? La solución esta en éste post: Imperial March Bash Beep, un script en BASH con las frecuencias de la Marcha Imperial de StarWars listo para ejecutar, [...]
[...] tener instalado el comando beep y claro también un beep en la mainboard de tu PC Lee este post Imperial March Bash Beep y descarga el script aquí! Darth [...]
Hola, muy buena la música, lo probé con un tempo de 100 y se me puso la piel de gallina al escucharla. Felicitaciones por el laburo
¡¡Interesante articulo!!
Pues yo poseo una coleccion de codigos fuentes de programas musicales en Clipper, C, C++, Basic y Pascal, aqui un ejemplo:
http://www.youtube.com/watch?v=1wQMHsqxo_s
Tengo pensado grabarlos en video y ponerlos en mi canal de Youtube.
Saludos.