¿Cómo programar acompañamiento de piano en C?
#includelt;stdio.hgt;
#includelt;dos.hgt;
#includelt;bios .hgt ;
#includelt;time.hgt;
#define N1 32 /*un tiempo**/
#define N2 16
#definir N4 8
#definir N8 4
#definir N16 2
#definir FINAL 0
//* donde: N1, N2, N4, N6, N8 y N16 representan respectivamente
un tiempo, medio tiempo, un cuarto de tiempo,
un octavo tiempo y decimosexto minuto. disparo. */
enum NOTAS
{
C10=131, D10=147, E10=165, F10=175, G10=196, A10=220, B10=247,
/*Representantes de bajos: 1, 2, 3, 4, 5, 6, 7**
C0 =262, D0=286, E0=330, F0=349, G0=440, A0=440, B0=494,
/*El rango medio es: 1, 2, 3, 4, 5, 6, 7**
/*El bajo es: 1, 2, 3, 4, 5, 6, 7** /*Nota: Los elementos pares de la matriz representan notas y los elementos impares representan la duración del tiempo.
*/
};
canción2[]={
C10, N1, D10, N1, E10, N1, F10, N1, G10, N1, A10, N1, B10, N1,
C10, N2, D10, N2, E10, N2, F10, N2, G10, N2, A10, .N2, B10, N2,
C10, N4, D10, N4, E10, N4, F10, N4, G10, N4, A10, N4, B10, N4,
C10, N8, D10, N8, E10, N8, F10, N8, G10, N8, A10, N8, B10, N8,
c10, n16, d10, n16, e10, n16, f10, n16, g10, n16, a10, n16, b10, n16,
c0, n1, d0, n1, e0, n1, f0, n1, g0, n1, a0, n1, b0, n1,
c0, n2, d0, n2, e0 , n2.F0, N2, G0, N2, A0, N2, B0, N2,
C0, N4, D0, N4, E0, N4, F0, N4, G0, N4, A0, N4, B0, N4,
C0, N8, D0, N8, E0, N8, F0, N8, G0, N8, A0, N8, B0, N8,
C0, N16, D0, N16, E0, N16, F0, N16, G0, N16, A0, N16, B0, N16,
C1, N1, D1, N1, E1, N1, F1, N1, G1, N1 , A1, N1, B1, N1,
C1, N2, D1, N2, E1, N2, F1, N2.G1, N2, A1, N2, B1, N2,
C1, N4, D1, N4, E1, N4, F1, N4, G1, N4, A1, N4, B1, N4,
C1, N8, D1, N8, E1, N8, F1, N8, G1, N8, A1, N8, B1, N8,
C1, N16.D1, N16, E1, N16, F1, N16, G1, N16, A1, N16, B1, N16,
C2, N1, D2, N1, E2, N1, F2, N1, G2, N1, A2, N1, B2, N1,
C2, N2, D2, N2, E2 , N2, F2, N2, G2, N2, A2 N2, B2, N2,
C2, N4, D2, N4, E2, N4, F2, N4, G2, N4, A2, N4, B2 , N4,
C2, N8, D2, N8, E2, N8, F2, N8, G2, N8, A2, N8, B2, N8,
C2, N16, D2 , N16.E2, N16, F2, N16, G2, N16, A2, N16, B2, N16, END
/*Lo anterior es el código de prueba de nota, puede seleccionar la nota requerida de acuerdo con el tono del sistema */
/*Nota: Los elementos pares en la matriz representan notas y los elementos impares representan duraciones de tiempos.
*/
};
canción3[]= {
C0, N8, C0, N8, G0, N8, G0, N8, A0, N8, A0, N8, G0, N4,
F0, N8, F0, N8, E0, N8, E0, N8, D0, N8, D0, N8, C0, N4,
G0, N8, G0, N8, F0, N4, E0, N8, E0, N8, D0, N4, G0, N8,
G0, N8, F0, N8, F0, N8, F0, N8, E0, N8 ,E0,N8,D0,N4,C0,N8,
E0,N8,G0,N4,A0,N8,C1,N8,G0,N4.F0,N8,F0,N8, p>p>
E0, N8, E0, N4, D0, N8, D0, N8, C0, N4, C0, N8, C0, N8,
G0, N8, G0, N8, A0, N8, A0, N8, G0, N4, F0, N8, F0, N8,
E0, N8, E0, N8.D0, N8, D0, N8, C0, N4, G0, N8 , G0 , N8,
F0, N4, E0, N8, E0, N8, D0, N4, G0, N8, G0, N8, F0, N8,
F0, N8 , E0 , N8, E0, N8, D0, N4, C0, N8, E0, N8, G0, N4,
A0, N8, C1, N8, G0, N4, F0, N8, F0, N8, E0, N8, E0, N4,
D0, N8, D0, N8, C0, N4, END
/*Lo anterior es el código de melodía, puedes incrustar tu código de canción favorita */
/*Nota: Los elementos pares en la matriz representan notas y los elementos impares representan duraciones de tiempo.
*/
};
canción4[]= {
C10, N4, B0, N4, G0, N8, A0, N4, E0, N16, D0, N8, C0, N8,
D0, N8, G0, N8, E0, N8, E0, N4, E0, E0, N8,
D0, N8, D0, N4, A0, N8, A0, N8, G0, N8, A0, N8, B0, N8,
G0, N8, G0, N8, E0, N4, C10, N8, B0, N8, G0 , N8, A0, N4,
E0, N8, D0, N8, C0, N8, D0, N8, G0.N8, E0, N4, C0, N8, D0, N8,
E0, N4, G0, N8, E0, N8, D0, N4, C0, N8, B10, N8, C0, N8, B10, N8,
A10, N4, A0, N8, A0, N8, A0, N8, C1, N8, D1, N8, E1, N8, E1 N8,
C1, N8, A0, N8, A0, N8, B0, N16, A0, N16, G0, N8, E0, N8, A0, N8,
A0, N8, C1, N8, D1, N8, E1, N8, E1, N8, C1, N8, A0, N8, A0, N8 ,
B0, N8.A0, N8, B0, N16, A0, N16, G0, N8, E0, N8, D1, N16, D1, N16, D1, N8,
D1, N8, A0, N16, B0, N16, A0, N8, G0, N8, E0, N8, D1, N16, D1, N16, D1, N8,
A0, N16 B0, N16 , A0, N8, G0, N8, E0, N8, A0, N8, A0, N8, A0, N4, A0, N8,
A0, N8, A0, N4, C10, N8, B0, N8, G0, N8, A0, N4, E0, N16, D0, N16, C0, N8,
D0, N8, G0.N8, E0, N4, E0, N4, E0, N16, G0 , N16, E0, N16,
D0, N16, D0, N4, A0, N16, A0, N16, G0, N8, A0, N8, B0, N8,
G0 ,N16,G0,N16,E0,N4,C10,N8,B0,N8,G0 G0,N16,G0,N16,E0,N16,E0,N4,C0,N16,D0,N16,C0,N8,D0, N8, G0, N8, E0, N4, C0, N16, D0, N16,
E0, N4, G0, N8, E0, N8, D0, N4, C0, N8, B10, N8, C0 , N16, B10, N16,
E0, N4, G0, N8, E0, D0, D0, C0, N16,
E0, N4, D0, D0, D08, N16 ,
A10, N4, END};
/* El siguiente es el código del programa de reproducción*/
void MusicPlay(int *song)
{
int note=0, fre, dur, control;
clock_t objetivo
while(canción[nota]! =0)
{
fre=canción[nota];
dur=canción[nota 1];
if(kbhit ())break;
/*int kbhit() la función devuelve el último hit
botón*
if(fre)
{
salidab(0x43, 0xB6
/*función void salidab(puerto int); , char byte)
Escribe bytes en el puerto de salida especificado*/
fre=(unsigned)(1193180L/fre);
outportb( 0x42, ( char) (fregt; gt; 8));
salidab (0x42, (char) (fregt; gt; 8));
control=inportb(0x61);< / p>
/* La función int inportb(int port) lee un byte del
puerto de entrada especificado y devuelve el byte */
outportb(0x61, (control)|0x3);
}
objetivo=(clock_t)dur reloj();
while(goalgt;reloj ()); p>
if (fre)
salidab (0x61, control)
objetivo=(clock_t)0;
nota=nota 2;
}
}
/* La siguiente es la función principal, incluido el manejo de excepciones*/
void main( void)
{ int n;
do{
printf("Si desea escuchar música, ingrese un número (1-4):") ;
if(scanf("d",amp;n))
{
if(nlt;=4amp;amp;0lt;=n)
cambiar(n)
{
caso 1.MusicPlay(canción1);
caso 2: MusicPlay(canción2)
p>caso 3: MusicPlay(canción3); pausa
caso 4: MusicPlay(canción4);
}
else printf( "/n\t\t¡Puedes ingresar '0' para salir! \n\n");
}
else {printf("/n\tError de entrada, ¡pase cualquier clave para salir!/n"); break;
else {printf("/n\tError de entrada, ¡pase cualquier clave para salir!\n");