none
¿Cómo reproducir mas de un sonido al mismo tiempo? RRS feed

  • Pregunta

  • Lo que quiero es poder reproducir mas de un sonido a la vez. Estos sonidos me funcionan bien, pero solo cuando los reproduzco uno a la vez, pero quisiera saber como hago para que suenen mas de uno a la vez. Estoy usando la clase SoundPlayer, y el audio(.wav) esta alojado en propiedades;como un recurso; y cada SoundPlayer esta nombrado en un evento cada uno, y cuando ejecuto el primer evento, el sonido suena, pero cuando le doy al segundo, el primero se calla y no vuelve a sonar,y el segundo suena, y asi susesivamente.....ahi le envio el codigo de uno de ellos....

    public System.Media.SoundPlayer misonido1;
    public System.Media.SoundPlayer misonido2;
    
    private void musica1_MouseDown(object sender, MouseButtonEventArgs e)
            
    {
    misonido1 = new System.Media.SoundPlayer();
    misonido1.Stream = Properties.Resources.audio1;
    misonido1.Play();
    }
    
    private void musica2_MouseDown(object sender, MouseButtonEventArgs e)
            
    {
    misonido2 = new System.Media.SoundPlayer();
    misonido2.Stream = Properties.Resources.audio2;
    misonido2.Play();
    }
    

    Necesito ayuda urgente por favor!!!!..

    Gracias


    leonardito17

    martes, 18 de noviembre de 2014 21:04

Respuestas

  • La clase SoundPlayer es una clase que encapsula el uso de la función PlaySound() nativa de Windows.  Esta función no es capaz de reproducir más de un sonido a la vez por proceso.

    Por lo tanto no puede lograr su cometido con SoundPlayer en el mismo ejecutable.  Tiene un par de opciones:

    1. La opción más obvia es moverse al uso de Windows Media Player.  Referencie wmp.dll en System32 en su proyecto e instancie un objeto tipo WindowsMediaPlayer.  Use este objeto para reproducir todos sus sonidos.  Si nunca lo ha usado puede encontrar cómo usarlo en Internet.
    2. Sería interesante ver qué tan veloz se reproduce un sonido en un proceso aparte.  Yo crearía un nuevo proyecto de C++ sin interfase gráfica cuyo único propósito sería el de hacer la llamada a PlaySound().  Sería interesante ver si es lo suficientemente rápido.

    Jose R. MCP
    Code Samples

    martes, 18 de noviembre de 2014 23:51