Red de conocimiento informático - Conocimiento del nombre de dominio - ¿Cómo programar acompañamiento de piano en C?

¿Cómo programar acompañamiento de piano en C?

Echa un vistazo a esto... debería funcionar

#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>

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