• Domingo 5 de Mayo de 2024, 05:32

Autor Tema:  Busco Libreria De Sonidos Para C++ Estandar  (Leído 7558 veces)

_juanchin_

  • Nuevo Miembro
  • *
  • Mensajes: 3
    • Ver Perfil
Busco Libreria De Sonidos Para C++ Estandar
« en: Martes 4 de Septiembre de 2007, 04:24 »
0
Hola gente,

Estoy bucando alguna libreria para c++ estandar que cree o genere sonidos, tal como lo harian las librerias dos.h y conio.h del c++ builder de Borland. Yo conozco el caracter de sonido '/a' pero no es suficiente para mi aplicacion. Les agradeceria mucho que me dijesen si existe alguna libreria asi para c++ estandar, y si existe, de donde la puedo descargar.

Desde ya, muchas gracias.

cheroky

  • Nuevo Miembro
  • *
  • Mensajes: 9
    • Ver Perfil
Re: Busco Libreria De Sonidos Para C++ Estandar
« Respuesta #1 en: Jueves 6 de Septiembre de 2007, 05:16 »
0
C++ no tiene el concepto de sonido, si bien puedes utilizar librerias de terceros como FMOD o las que provee el api del sistema operativo.
Cita de: ""_juanchin_""
Yo conozco el caracter de sonido '/a' pero no es suficiente para mi aplicacion.

S2.
Nunca me haria socio de un club donde admitieran a alguien como yo.

Karman

  • Miembro activo
  • **
  • Mensajes: 84
    • Ver Perfil
    • http://www.inexinferis.com.ar
Re: Busco Libreria De Sonidos Para C++ Estandar
« Respuesta #2 en: Jueves 6 de Septiembre de 2007, 16:01 »
0
si querés usar sonidos monotonos... fijate esta función, la creé hace unos cuantos años basándome en una función de QBASIC...

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

S2

_juanchin_

  • Nuevo Miembro
  • *
  • Mensajes: 3
    • Ver Perfil
Re: Busco Libreria De Sonidos Para C++ Estandar
« Respuesta #3 en: Jueves 6 de Septiembre de 2007, 18:02 »
0
Hola,

Gracias por sus respuestas.

Cita de: "Karman"
si querés usar sonidos monotonos... fijate esta función, la creé hace unos cuantos años basándome en una función de QBASIC...

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

S2

Muy bueno tu programa, lo voy a probar esto y despues te cuento.

Saludos.

_juanchin_

  • Nuevo Miembro
  • *
  • Mensajes: 3
    • Ver Perfil
Re: Busco Libreria De Sonidos Para C++ Estandar
« Respuesta #4 en: Sábado 8 de Septiembre de 2007, 17:36 »
0
Hola

Probe tu funcion, pero me tira el siguiente error:

Código: Text
  1.  
  2. sonidos.h:65: implicit declaration of function `int _sleep(...)'
  3. sonidos.h:79: implicit declaration of function `int _beep(...)'
  4.  
  5.  

Inclui las librerias que tenias comentadas (stdlib.h & string.h), pero tampoco anduvo.

¿Alguna idea de porque puede ser este error?

Muchas Gracias.

Saludos.

Karman

  • Miembro activo
  • **
  • Mensajes: 84
    • Ver Perfil
    • http://www.inexinferis.com.ar
Re: Busco Libreria De Sonidos Para C++ Estandar
« Respuesta #5 en: Domingo 9 de Septiembre de 2007, 03:58 »
0
la función la hice hace mucho... y funcionaba con el viejo Mingw... fijate lo que encontré en la librería stdlib.h:

Código: Text
  1.  
  2. /*
  3.  * NOTE: Officially the three following functions are obsolete. The Win32 API
  4.  *       functions SetErrorMode, Beep and Sleep are their replacements.
  5.  */
  6. _CRTIMP void __cdecl  _beep (unsigned int, unsigned int);
  7. _CRTIMP void __cdecl  _seterrormode (int);
  8. _CRTIMP void __cdecl  _sleep (unsigned long);
  9.  
  10.  

Tendrías que probar con sus remplazos del Win32 API (en "Windows.h") si programás en windows o esas mismas funciones pero sin los "_" si lo hacés en linux...

Saludos