Estoy portar alguna C# para Windows Phone 7 a Windows 8.Reproducción de un sonido de una memoria intermedia generada en una aplicación de Windows 8
Las aplicaciones del teléfono que utiliza una XNA SoundEffect para reproducir sonidos arbitrarios desde un buffer. En los casos más simples, crearía una onda sinusoidal de la duración y frecuencia requeridas. Tanto la duración como la frecuencia pueden variar mucho, así que prefiero no confiar en MediaElements (a menos que haya algún modo de cambiar la frecuencia de un archivo base, pero eso solo me ayudará con la generación de frecuencia única).
¿Cuál es el equivalente de XNA SoundEffectInstance en WinRT?
Supongo que tendré que usar DirectX para esto, pero no estoy seguro de cómo hacerlo desde una aplicación C#/XAML. He echado un vistazo al SharpDX, pero no parecía tener las clases DirectSound, SecondaryBuffer, SecondaryBuffer que supongo que necesitaría usar.
He hecho una serie de suposiciones arriba. Puede ser que esté buscando las clases incorrectas o hay una forma completamente separada de generar un sonido arbitrario desde una aplicación de Windows 8.
Encontré an example using XAudio2 from SharpDX to play a wav file via an AudioBuffer. Esto parece prometedor, solo necesitaría sustituir mi buffer de audio generado por el flujo de archivos nativo.
PM> Install-Package SharpDX
PM> Install-Package SharpDX.XAudio2
public void PlaySound()
{
XAudio2 xaudio;
MasteringVoice masteringVoice;
xaudio = new XAudio2();
masteringVoice = new MasteringVoice(xaudio);
var nativefilestream = new NativeFileStream(
@"Assets\SpeechOn.wav",
NativeFileMode.Open,
NativeFileAccess.Read,
NativeFileShare.Read);
var soundstream = new SoundStream(nativefilestream);
var waveFormat = soundstream.Format;
var buffer = new AudioBuffer
{
Stream = soundstream.ToDataStream(),
AudioBytes = (int)soundstream.Length,
Flags = BufferFlags.EndOfStream
};
var sourceVoice = new SourceVoice(xaudio, waveFormat, true);
// There is also support for shifting the frequency.
sourceVoice.SetFrequencyRatio(0.5f);
sourceVoice.SubmitSourceBuffer(buffer, soundstream.DecodedPacketsInfo);
sourceVoice.Start();
}
Estoy buscando una solución en la que debería ser capaz de reproducir audio directamente desde paquetes de audio en búfer en Windows Phone 8? ¿Puedes redirigir a un ejemplo de trabajo? – sunder