2011-06-02 14 views
5

Sé que puedo hacer referencia a XNA para la clase SoundEffect y eso es lo que he estado haciendo hasta ahora, pero me preguntaba si había una manera mejor de lo que he sido obra.Qué usar para reproducir efectos de sonido en Silverlight para wp7

using Microsoft.Xna.Framework; 
using Microsoft.Xna.Framework.Audio; 

using (var stream = TitleContainer.OpenStream("test.mp3")) 
{ 
      var effect = SoundEffect.FromStream(stream); 
      FrameworkDispatcher.Update(); 
      effect.Play(); 
} 

Para mi aplicación de prueba Tengo 20 sonidos cada 1 segundo de duración que quiero tocar una vez que se presiona el botón. Estoy jugando con diferentes técnicas pero, si es posible, me gustaría saber cómo lo hacen los profesionales antes de comprometerme a crear una aplicación basada en efectos de sonido. Pequeñas cosas como cargar el efecto de sonido primero o cargarlo en la instancia en que se presiona el botón sería útil.

Gracias.

+0

¿verificó MediaElement? – Shanadas

+0

Hice algunas lecturas en MediaElement y no sugieren utilizarlo para sonidos cortos, sino más bien pistas largas como música de fondo. – Tom

+0

Creo que el único defecto es una secuencia de archivos wav no mp3 – Gluip

Respuesta

2

Si yo fuera usted quisiera utilizar PhoneyTools SoundEffectPlayer

Esta clase se utiliza para reproducir SoundEffect objetos mediante la integración de XNA. El reproductor debe vivir el tiempo suficiente para que se reproduzca el efecto de sonido , por lo que es común que lo tenga fuera de un método. Por ejemplo:

public partial class MediaPage : PhoneApplicationPage 
{ 
    // ... 

    SoundEffectPlayer _player = null; 

    private void playButton_Click(object sender, RoutedEventArgs e) 
    { 
    var resource = Application.GetResourceStream(new Uri("alert.wav", UriKind.Relative)); 
    var effect = SoundEffect.FromStream(resource.Stream); 
    _player = new SoundEffectPlayer(effect); 
    _player.Play(); 

    } 
} 
+0

Intenté usar phoneytools para reproducir 4 sonidos diferentes al mismo tiempo y todavía está retrasado. También probé el ejemplo de la publicación a continuación y hace lo mismo. No estoy seguro de por qué estoy recibiendo este retraso. Tanto en el emulador y el teléfono. – Tom

2

Creo que un buen ejemplo sería la muestra oficial en AppHub. Demuestra cómo reproducir múltiples sonidos. Puede descargar directamente la muestra desde here.

Este ejemplo muestra cómo utilizar SoundEffect de XNA Framework y clases SoundEffectInstance jugar varios sonidos simultáneamente en una aplicación de Silverlight para Windows teléfono. También muestra una forma simple de configurar un DispatchTimer para llamar al FrameworkDispatcher.Update para simular el bucle Game para las partes internas del XNA Framework. Finalmente, muestra cómo cargar un archivo de audio de onda en una secuencia que se puede reproducir por las clases SoundEffect.

Cuestiones relacionadas