Foros del Web » Programación para mayores de 30 ;) » C/C++ »

[DUDA] Programando un piano en C

Estas en el tema de [DUDA] Programando un piano en C en el foro de C/C++ en Foros del Web. Estoy haciendo un piano sencillito que deberia sonar con la campana del sistema en C @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código C: Ver original #include <conio.h> #include <windows.h> ...
  #1 (permalink)  
Antiguo 24/10/2010, 08:14
 
Fecha de Ingreso: octubre-2010
Mensajes: 6
Antigüedad: 13 años, 6 meses
Puntos: 0
[DUDA] Programando un piano en C

Estoy haciendo un piano sencillito que deberia sonar con la campana del sistema en C

Código C:
Ver original
  1. #include <conio.h>
  2. #include <windows.h>
  3.  
  4. main()
  5.  
  6. {
  7.       while(2<3);
  8.       {
  9.               printf("Para ver teclas pulsa 0");
  10.               printf("ESCRIBE LA NOTA:");
  11.               char note = getch();
  12.              
  13.               if(note == '0'){
  14.                       printf("DO = A");
  15.                       printf("RE(bemol) = W");
  16.                       printf("RE = S");
  17.                       printf("MI (bemol) = E");
  18.                       printf("MI = D");
  19.                       printf("FA = F");
  20.                       printf("SOL (bemol) = T");
  21.                       printf("SOL = G");
  22.                       printf("LA (bemol) = Y");
  23.                       printf("LA = H");
  24.                       printf("SI = J");
  25.                       printf("SI (bemol) = U");
  26.                       printf("DO = K");
  27.                       printf("RE (bemol) = O");
  28.                       printf("RE = L");
  29.                       printf("MI (bemol) = P");
  30.                       printf("MI = ,");
  31.                       printf("FA = .");
  32.                       printf("SOL (bemol) = +");
  33.                       printf("SOL = -");
  34.                      
  35.               //do re mi fa sol la si do re mi fa sol
  36.               if(note == 'a'){
  37.                       Beep(261,100);
  38.                       }
  39.               if(note == 's'){
  40.                       Beep(293,100);
  41.                       }
  42.               if(note == 'd'){
  43.                       Beep(329,100);
  44.                       }
  45.               if(note == 'f'){
  46.                       Beep(349,100);
  47.                       }
  48.               if(note == 'g'){
  49.                       Beep(392,100);
  50.                       }
  51.               if(note == 'h'){
  52.                       Beep(440,100);
  53.                       }
  54.               if(note == 'j'){
  55.                       Beep(493,100);
  56.                       }                      
  57.               if(note == 'k'){
  58.                       Beep(523,100);
  59.                       }                      
  60.               if(note == 'l'){
  61.                       Beep(587,100);
  62.                       }
  63.               if(note == ','){
  64.                       Beep(659,100);
  65.                       }  
  66.               if(note == '.'){
  67.                       Beep(698,100);
  68.                       }
  69.                if(note == '-'){
  70.                       Beep(784,100);
  71.                       }
  72.                      
  73.                //rebemol mibemol solbemol labemol sibemol rebemol mibemol solbemol
  74.                if(note == 'w'){
  75.                       Beep(277,100);
  76.                       }
  77.                       if(note == 'e'){
  78.                       Beep(311,100);
  79.                       }
  80.                       if(note == 't'){
  81.                       Beep(370,100);
  82.                       }
  83.                       if(note == 'y'){
  84.                       Beep(415,100);
  85.                       }
  86.                       if(note == 'u'){
  87.                       Beep(466,100);
  88.                       }
  89.                       if(note == 'o'){
  90.                       Beep(554,100);
  91.                       }
  92.                       if(note == 'p'){
  93.                       Beep(622,100);
  94.                       }
  95.                       if(note == '+'){
  96.                       Beep(740,100);
  97.                       }    
  98.                      
  99.             system("cls");          
  100. }  
  101. }

Ese es el codigo. Al compilarlo con el Dev-C++ 4.9.9.1 me da los siguientes errores

Cita:
6 C:\Dev-Cpp\Test.c [Warning] return type defaults to `int'
Cita:
C:\Dev-Cpp\Test.c In function `main':
Cita:
9 C:\Dev-Cpp\Test.c [Warning] implicit declaration of function `printf'
Cita:
2 C:\Dev-Cpp\Test.c:101 [Warning] no newline at end of file
Cita:
101 C:\Dev-Cpp\Test.c parse error at end of input
Cita:
C:\Dev-Cpp\Makefile.win [Build Error] [Test.o] Error 1
¿Por favor, me podrian decir que debo modificar?

Última edición por Enter712; 24/10/2010 a las 08:21
  #2 (permalink)  
Antiguo 24/10/2010, 09:13
 
Fecha de Ingreso: enero-2008
Mensajes: 229
Antigüedad: 16 años, 3 meses
Puntos: 1
Respuesta: [DUDA] Programando un piano en C

posiblemente el error es que main tiene que devolver un int., asi y antes de salir devolver un numero que por convención y especificar que todo salio retorna un 0

int main()
{
...
...
...
return 0;
}
  #3 (permalink)  
Antiguo 24/10/2010, 10:39
 
Fecha de Ingreso: junio-2010
Mensajes: 132
Antigüedad: 13 años, 10 meses
Puntos: 3
Respuesta: [DUDA] Programando un piano en C

De todas las veces que he programado con dev-c++, siempre hay q retornar algo al finalizar el programa.... si eres de los que pone


void main()
{
//codigo

}

entonces si te dara un error, de todas maneras no conosco la libreria window.h, asi q mi ayuda es casi nula
  #4 (permalink)  
Antiguo 24/10/2010, 10:56
 
Fecha de Ingreso: abril-2010
Ubicación: Rosario
Mensajes: 1.850
Antigüedad: 14 años
Puntos: 228
Respuesta: [DUDA] Programando un piano en C

Primero lo del main es un warning. Se podria obvia pero no es conveniente.
Segundo te esta faltando la libreria stdio.h donde esta la definicion de printf:
#indluce <stdio.h>

Por ultimo te falta una llave al final de todo.
  #5 (permalink)  
Antiguo 24/10/2010, 11:02
 
Fecha de Ingreso: junio-2010
Mensajes: 132
Antigüedad: 13 años, 10 meses
Puntos: 3
Exclamación Respuesta: [DUDA] Programando un piano en C

No solo le falta la llave, el programa tiene errores logicos la llave q le falta es para cerrar el primer if, q se usa para mostrar las letras, tambien quitar el punto y coma de la sentencia while, ademas no pongas 2<3, pon true....

aqui esta el programa, yo te recomiendo usar micrsoft visual c++, q es mucho mejor.... Saludos

Código:
// Piano.cpp : Defines the entry point for the console application.
//

#include <stdio.h>
#include <windows.h>
#include <conio.h>


int main( )
{
	while(true)
      {
              printf("Para ver teclas pulsa 0\n");
              printf("ESCRIBE LA NOTA:");
              char note = _getch();
			  printf("\n");
              
              if(note == '0'){
                      printf("DO = A\n");
                      printf("RE(bemol) = W\n");
                      printf("RE = S");
                      printf("MI (bemol) = E\n");
                      printf("MI = D\n");
                      printf("FA = F\n");
                      printf("SOL (bemol) = T\n");
                      printf("SOL = G\n");
                      printf("LA (bemol) = Y\n");
                      printf("LA = H\n");
                      printf("SI = J\n");
                      printf("SI (bemol) = U\n");
                      printf("DO = K\n");
                      printf("RE (bemol) = O\n");
                      printf("RE = L\n");
                      printf("MI (bemol) = P\n");
                      printf("MI = ,\n");
                      printf("FA = .\n");
                      printf("SOL (bemol) = +\n");
                      printf("SOL = -\n");
					  system("Pause");
			  }
              //do re mi fa sol la si do re mi fa sol
              if(note == 'a'){
                      Beep(261,100);
                      }
              if(note == 's'){
                      Beep(293,100);
                      }
              if(note == 'd'){
                      Beep(329,100);
                      }
              if(note == 'f'){
                      Beep(349,100);
                      }
              if(note == 'g'){
                      Beep(392,100);
                      }
              if(note == 'h'){
                      Beep(440,100);
                      }
              if(note == 'j'){
                      Beep(493,100);
                      }                      
              if(note == 'k'){
                      Beep(523,100);
                      }                      
              if(note == 'l'){
                      Beep(587,100);
                      }
              if(note == ','){
                      Beep(659,100);
                      }  
              if(note == '.'){
                      Beep(698,100);
                      } 
               if(note == '-'){
                      Beep(784,100);
                      } 
                      
               //rebemol mibemol solbemol labemol sibemol rebemol mibemol solbemol
               if(note == 'w'){
                      Beep(277,100);
                      } 
                      if(note == 'e'){
                      Beep(311,100);
                      }
                      if(note == 't'){
                      Beep(370,100);
                      }
                      if(note == 'y'){
                      Beep(415,100);
                      }
                      if(note == 'u'){
                      Beep(466,100);
                      }
                      if(note == 'o'){
                      Beep(554,100);
                      }
                      if(note == 'p'){
                      Beep(622,100);
                      }
                      if(note == '+'){
                      Beep(740,100);
                      }     
                      
            system("cls");          
   }
   return 0; 
  }
  #6 (permalink)  
Antiguo 25/10/2010, 06:41
 
Fecha de Ingreso: octubre-2010
Mensajes: 6
Antigüedad: 13 años, 6 meses
Puntos: 0
Respuesta: [DUDA] Programando un piano en C

Gracias a todos por vuestra ayuda, ya voy a probarlo el sabado, y os cuento
  #7 (permalink)  
Antiguo 26/01/2014, 00:11
 
Fecha de Ingreso: enero-2014
Mensajes: 1
Antigüedad: 10 años, 3 meses
Puntos: 0
Respuesta: [DUDA] Programando un piano en C

Hola
yo estoy viendo esto de la funcion beep en C, y se ve divertido, mas no se como saber q tono le estoy poniendo .-.

alguien me podria explicar como manejar los tonos?
  #8 (permalink)  
Antiguo 26/01/2014, 13:23
 
Fecha de Ingreso: enero-2012
Ubicación: Buenos Aires
Mensajes: 745
Antigüedad: 12 años, 3 meses
Puntos: 35
Respuesta: [DUDA] Programando un piano en C

Esa función no es de C, sino del API de Windows. Podes encontrar info acá. Simplemente le pasas la frecuencia en hertz y luego la duración en milisegundos.

Espero que te sirva!


Etiquetas: alluda, piano
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 05:46.