Skip to content
 

Beep en Bash

Hola, luego de jugar con C Sharp decidí aprender más a fondo BASH y que mejor que creando un bucle con diversos beeps para el altavoz del sistema (el beep).

Anteriormente escribí aquí Bach in Bash sobre como componer música para ejecutar en el terminal en GNU/Linux, dicho método era “muy limitado”, ahora pondré un ejemplo de como hacer escalas completas en BASH mediante el uso de bucles y el comando beep (debemos instalar ese pequeño programa :) )

Primero veamos unos arreglos (arrays) en BASH con las frecuencias de las notas musicales (si queremos usarlas en alguna composicion nuestra, solo haría falta copiar y pegar, estas frecuencias estan expresadas en enteros, no son las frecuencias reales:

UT=(    65     130    261    523    1074    2093    4168    8372 );
UTS=(   69     138    277    554    1108    2217    4434    8869 );
RE=(    73     146    293    587    1174    2349    4698    9397 );
RES=(   77     155    311    622    1244    2489    4978    9956 );
MI=(    82     164    329    659    1318    2637    5274    10548 );
FA=(    87     174    349    698    1396    2793    5587    11175 );
FAS=(   92     184    370    740    1480    2959    5919    11839 );
SOL=(   97     195    391    784    1568    3136    6271    12543 );
SOLS=(  103    207    415    830    1661    3322    6644    13298 );
LA=(    110    220    440    880    1760    3520    7040    14080 );
LAS=(   116    233    466    932    1864    3729    7458    14917 );
SI=(    123    246    493    987    1975    3951    7902    15804 );

Ahora veamos un poco (solo un poco) la sintaxis de BASH, el uso de variables, funciones y envío de parámetros a las funciones en bash.

Uso de variables

Las variables se inicializan (no se declaran, no es necesario especificar el tipo de dato) con palabras en minúscula o mayúscula (de preferencia usar mayúscula), es MUY IMPORTANTE que el nombre de la variable esté seguida por el signo igual ( = ) y seguido del o los  datos a contener SIN ESPACIOS, ya que si colocamos espacios el intérprete mostrará error de sintaxis.

La forma CORRECTA de inicializar una variable en bash

ALGO=123;

La forma INCORRECTA de iniciar una variable en bash

ALGO = 123;

Una vez que tengamos iniciada nuestra variable, podemos hacer uso de ésta añadiendo el signo de dolar >> $ delante de su nombre en cualquier parte de nuestro código, pero si queremos “variar” el contenido de la variable en el transcurso del código necesitamos añadir el comando “let” delante del nuevo valor de la variable, esto es muy importante ya que sin “let” la variable seguirá tomando su valor inicial!

Mostrando el valor de ALGO

echo $ALGO;

Modificando el valor de ALGO

let ALGO= $ALGO-123;

Funciones en Bash

Las funciones se declaran con la palabra reservada “function” delante del nombre de la función, NO se colocan paréntesis () ya que las funciones son pequeños “scripts” que pueden recibir parámetros seguidos del nombre:

Ejemplo00: Funcion sin parámetros

function nombreDeMiFuncion { #codigo de la funcion }

Ejemplo01: Funcion con parámetros

function miOtraFuncion { echo $1 }

En el ejemplo01 los parámetros son recibidos en el orden ingresado y son asignadas a las variables con un $ seguido de un número, el número representa el orden de los parámetros, $1 sería el primer parámetro recibido

Beep en Bash

Ahora programaremos un bucle que nos ejecute de manera ascendente las frecuencias aproximadas de las notas musicales, a medida que ejecuta las frecuencias el bucle hace un llamado a la función pitido y esta a la vez llama a beep;

#iniciamos variables
X=0;
FIN=7;

#Cambiemos el valor de LONG para cambiar la duracion de cada nota
LONG=120;

function pitido { beep -f $1 -l $2;  }
while [ $X -lt $FIN ]
do
 pitido ${UT[$X]} $LONG;
 pitido ${RE[$X]} $LONG;
 pitido ${MI[$X]} $LONG;
 pitido ${FA[$X]} $LONG;
 pitido ${SOL[$X]} $LONG;
 pitido ${LA[$X]} $LONG;
 pitido ${SI[$X]} $LONG;

 let X=$X+1;
done

Listo! con ello podremos escuchar en escala ascendente las frecuencias de las notas musicales a través de BEEP. Podemos descargar este archivo aquí >> Escalas Beep Bash

Para ejecutar el archivo primero tenemos que darle permisos de ejecución, debemos tener instalado beep y luego usar el comando “sh” (sin comillas) para llamar al intérprete :)

Leave a Reply