¿Como reproducir un sonido desde wxWidgets de forma asíncrona? [Solucionado]

Iniciado por wiserlander, 29 Marzo 2013, 20:19 PM

0 Miembros y 1 Visitante están viendo este tema.

wiserlander

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

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:

bool wxSound::Play (unsigned flags = wxSOUND_ASYNC ) const

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

wxSound(sonido).Play(wxSOUND_ASYNC);

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

El codigo que tengo es el siguiente:

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

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


Tambien probe con 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.




18F4550

naderST


wiserlander

Cita de: naderST en 29 Marzo 2013, 23:32 PM
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!
18F4550

wiserlander

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

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


Saludos!
18F4550