BASH: Imperial March Beep

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 :D

In English…

Hello! Download here: Imperial March GNU/Linux Bash Beep :)

Dart Vader

Darth Vader

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 :D , 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 :D

¿Algo más? SI! Pronto (cuando disponga de tiempo) escribiré esta misma melodía en userRPL para las calculadoras HP50G :D

6 Comments to "BASH: Imperial March Beep"

  1. Edariel's Gravatar Edariel
    24 Mayo, 2010 - 16:55 | Permalink

    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 ;-)

  2. 10 Junio, 2010 - 15:43 | Permalink

    ¡¡Interesante articulo!!

    Pues yo poseo una coleccion de codigos fuentes de programas musicales en Clipper, C, C++, Basic y Pascal, aqui un ejemplo:

    Tengo pensado grabarlos en video y ponerlos en mi canal de Youtube.

    Saludos.

  3. felipe's Gravatar felipe
    25 Enero, 2011 - 10:17 | Permalink

    Los enlaces están caídos :(

Leave a Reply

3 Trackbacks to "BASH: Imperial March Beep"

  1. on 5 Marzo, 2010 at 18:15
  2. on 17 Marzo, 2010 at 11:06
  3. on 7 Agosto, 2010 at 21:29