Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: wiserlander en 29 Marzo 2013, 20:19 pm



Título: ¿Como reproducir un sonido desde wxWidgets de forma asíncrona? [Solucionado]
Publicado por: wiserlander en 29 Marzo 2013, 20:19 pm
Hola, investigando en la wiki de wxWidgets y algunos sitios mas, encontré la manera de reproducir un sonido desde una aplicación gráfica hecha en CodeBlocks.

http://docs.wxwidgets.org/2.9.4/classwx_sound.html (http://docs.wxwidgets.org/2.9.4/classwx_sound.html)

Al dar clic a un botón suena un sonido, por ese lado todo perfecto, pero cuando pongo un segundo botón con un sonido diferente, al reproducir el primer sonido, sin que este llegue a acabar de sonar se para cuando le doy clic al segundo  botón.

Lo que me gustaría es que se puedan mesclar los diferentes sonidos de manera que se puedan reproducir asincronamente.

Encontré esto en la:

Código:
bool wxSound::Play (unsigned flags = wxSOUND_ASYNC ) const

Intente implementarlo en el código de lo que ya tengo hecho, pero no funciona.

Código:
wxSound(sonido).Play(wxSOUND_ASYNC);

El sonido 1 se para cuando inicio el sonido 2 y viceversa...

El codigo que tengo es el siguiente:

Código:
void VenFrame::OnButton3Click(wxCommandEvent& event)
{
     wxSound::Play(wxT("wsn.wav"));
}

void VenFrame::OnButton5Click(wxCommandEvent& event)
{
    wxSound("wsn2.wav").Play(wxSOUND_ASYNC);
}

Tambien probe con
Código:
wxSOUND_ASYNC|wxSOUND_LOOP

Supuestamente el segundo botón, alias Button5 debería de hacer sonar un 2º sonido, sin que se pare el 1º sonido, eso entendí en la wiki de wxWidgets, pero el comportamiento es el mismo, los dos sonidos se paran cuando hago click en cualquiera de los dos botones, siendo una reproducción síncrona en este caso.

¿Alguien sabe como hacerlo de manera Asíncrona o conoce algún sitio con ejemplos prácticos?

Muchas gracias y saludos.






Título: Re: ¿Como reproducir un sonido desde wxWidgets de forma asíncrona?
Publicado por: naderST en 29 Marzo 2013, 23:32 pm
Intenta creando otro hilo


Título: Re: ¿Como reproducir un sonido desde wxWidgets de forma asíncrona?
Publicado por: wiserlander en 30 Marzo 2013, 06:40 am
Intenta creando otro hilo

Ok naderST, voy a investigar por ese lado, Multithreading en C/C++.

Estuve mirando también algunas bibliotecas dedicadas para sonido, pues parece que wxWidgets no tiene un gran soporte en la parte de sonido, o eso me pereció a mi desde mis pocos conocimientos sobre el tema, pero quizás, sea intentar matar moscas a cañonazos para algo tan simple en este caso, como es reproducir sonidos asincronamente.

Muchas gracias por el dato, saludos!


Título: Re: ¿Como reproducir un sonido desde wxWidgets de forma asíncrona?
Publicado por: wiserlander en 1 Abril 2013, 11:10 am
Por si a alguien le pudiera servir, como a mi en este caso....

Encontré una solución para la reproducción asincrona, usando unas librerías dedicadas para audio.

FMOD Studio Programmer's API  & FMOD Studio.

Enlace al sitio oficial FMOD. -> http://www.fmod.org/index.html (http://www.fmod.org/index.html)

Estas librerías tienen bastantes ejemplos y ayudan mucho a la hora de trabajar con sonidos, recomendadas al 100%.


Saludos!