• Viernes 8 de Noviembre de 2024, 23:18

Autor Tema:  Que me recomiendan para programar un "piano"  (Leído 3079 veces)

Alfonsos1

  • Miembro activo
  • **
  • Mensajes: 60
    • Ver Perfil
Que me recomiendan para programar un "piano"
« en: Jueves 21 de Abril de 2011, 22:45 »
0
Supongamos que quiero hacer un teclado de 10 notas, para ello deberia tener 10 archivos de sonido:
nota1.wav
nota2.wav
...
nota10.wav

si se presiona una tecla deberia sonar una nota:
tecla "1" --- nota1.wav
tecla "2" --- nota2.wav
...
tecla "0" --- nota 10.wav

Esto es fasil de programar, yo lo hice con la libreria allegro de C++. Pero no anda bien cuando empiezo a tocar notas rapido. Por ejemplo si toco una misma nota varias veses a una velocidad rapida (por ejmplo 6 veces por seg) empieza a saltearce notas (como si no le diera la capasidad para hacer sonar todas las notas), probe achicando el tamaño de los archivos wav pero no se soluciono el problema.

Supongo que C++ al ser un lenguaje de bajo nivel es bueno para programar este tipo de cosas, sin embargo no se si allegro sea una buena opcion.

¿allegro es una libreria eficiente o buena para programar lo que quiero?, sino que libreria puedo usar?
¿saben el porque de mi problema o la solucion?

Epa

  • Miembro MUY activo
  • ***
  • Mensajes: 242
  • Nacionalidad: ar
    • Ver Perfil
Re: Que me recomiendan para programar un "piano"
« Respuesta #1 en: Viernes 22 de Abril de 2011, 01:12 »
0
en que plataforma estas programando?
The sweet smell of a great sorrow lies over the land.


Alfonsos1

  • Miembro activo
  • **
  • Mensajes: 60
    • Ver Perfil
Re: Que me recomiendan para programar un "piano"
« Respuesta #2 en: Viernes 22 de Abril de 2011, 20:29 »
0
Windows XP es el SO

Alfonsos1

  • Miembro activo
  • **
  • Mensajes: 60
    • Ver Perfil
Re: Que me recomiendan para programar un "piano"
« Respuesta #3 en: Viernes 22 de Abril de 2011, 21:46 »
0
Intente lo siguiente, pero cuando lo ejecuto no pasa nada:

Código: C++
  1. #include <allegro.h>
  2.  
  3. int main()
  4. {  
  5.     allegro_init();
  6.     install_keyboard();
  7.     install_sound(DIGI_AUTODETECT, MIDI_AUTODETECT, NULL);
  8.     //Creo el flujo de audio "stream"
  9.     AUDIOSTREAM *stream = play_audio_stream(1024, 8, FALSE, 22050, 255, 128);
  10.     //Luego creo el sample "archivo" cargando un wav
  11.     SAMPLE *archivo=load_wav("wav.wav");
  12.     while(!key[KEY_ESC]){
  13.         void *mem_chunk;
  14.         mem_chunk = get_audio_stream_buffer(stream);
  15.         //Cuando no halla nada en el buffer del flujo de audio "stream"
  16.         if (mem_chunk != NULL){
  17.             //Se coloca en el buffer el sample "archivo"
  18.             mem_chunk=&archivo;
  19.             //Se indica que el buffer ya ha sido cargado
  20.             free_audio_stream_buffer(stream);
  21.         }
  22.     }
  23. }
  24. END_OF_MAIN();
  25.  

En el codigo deje comentarios que esplican lo que yo pretendia hacer con este codigo.

Pero como ya les dije, no pasa nada cuando ejecuto este codigo, ¿alguien sabe que estoy hacendo mal?

Epa

  • Miembro MUY activo
  • ***
  • Mensajes: 242
  • Nacionalidad: ar
    • Ver Perfil
Re: Que me recomiendan para programar un "piano"
« Respuesta #4 en: Sábado 23 de Abril de 2011, 03:29 »
0
Buenas

La verdad que no tengo idea de sonido, pero tenes esta opcion que podes probar: la API de windows.

tenes las funciones waveOut para manejar dispositivos de audio.
te dejo dos link para que veas si te sirve.

a falta de windows no lo pude probar :P

funciones de multimeda de la winapi, fijate al final estan las waveout:
http://msdn.microsoft.com/en-us/library/dd743586%28v=vs.85%29.aspx

ejemplo de como usar las wave out:
http://www.tmsoft.com/tutorial-sound.html

Esta parte la tendrias que sacar para no tener que esperar a que termine un sonido:
Código: C
  1.  
  2.  
  3.     // ** Wait until sound finishes playing
  4.     if (WaitForSingleObject(Done,INFINITE) != WAIT_OBJECT_0)
  5.     {
  6.         Message("Error waiting for sound to finish");
  7.         return TRUE;
  8.     }
  9.  
  10.  

Si lo probas deja comentarios de que tal andubo.

Saludos
The sweet smell of a great sorrow lies over the land.