//Devuelve las potencias de un número entero (usada por play)
//Nota: la función pow() en "math.h" realiza también esta tarea pero
//esta diseñada para números del tipo double...
int pot(int x, int p)//funcion usada por play...
{int x1;if(p)x1=x;else x1=1;
for(int a=1;a<p;a++)x1=x1*x;
return x1;}
/*Reproduce notas musicales por el altavoz del sistema
(solo letras en mayusculas)
Comandos de octava y tono:
O-Octava Establece la octava actual (0 - 6).
A - G Toca la nota especificada en la octava actual.
Comandos de duración y tempo:
L-duración Define la duración de cada nota (1 - 64).
L1 es redonda, L2 es blanca, etc..
P-pausa Hace una pausa (1 - 64). P1 es una pausa de redonda,
P2 es una pausa de blanca.
*/
void play(char *mu)//#include stdlib.h & string .h
{
int t,tn,o,nota,a,va,xt,x[2];
tn=1536;o=4;//Parametros por defecto
int ox[]={6,7,1,2,3,4,5};
for(int s=0;s<strlen(mu);s++){a=int(mu[s]);
if(a==76||a==80){xt=0;va=0;//P y L
for(int av=0;av<2;av++){x[av]=int(mu[s+(2-av)])-48;
if(x[av]<=9)xt+=x[av]*pot(10,va++);}
if(a==80)_sleep(tn/xt);else t=tn/xt;} //P
if(a==79)o=(int(mu[++s])-48)%8;//O
if(a>64&&a<72)//A,B,C,D,E,F,G
{nota=pot(2,o+3)*(ox[a-65]+7)+16;_beep(nota,t);}}}
/*
Ejemplo:
play("L12FP32L4DCD");
...
play("O0L5C");
*/