public static Task PlaySound(Stream stream) { var soundstream = new SoundStream(stream); var buffer = new AudioBufferAndMetaData() { Stream = soundstream.ToDataStream(), AudioBytes = (int)soundstream.Length, Flags = BufferFlags.EndOfStream, WaveFormat = soundstream.Format, DecodedPacketsInfo = soundstream.DecodedPacketsInfo }; var sourceVoice = new SourceVoice(XAudio, buffer.WaveFormat, true); sourceVoice.SetVolume(Volume, SharpDX.XAudio2.XAudio2.CommitNow); sourceVoice.SubmitSourceBuffer(buffer, buffer.DecodedPacketsInfo); //var effect = new SharpDX.XAPO.Fx.Echo(XAudio); //EffectDescriptor effectDescriptor = new EffectDescriptor(effect); //sourceVoice.SetEffectChain(effectDescriptor); //sourceVoice.EnableEffect(0); sourceVoice.Start(); TaskCompletionSource <object> mediaDone = new TaskCompletionSource <object>(); sourceVoice.StreamEnd += () => { mediaDone.SetResult(null); }; return(mediaDone.Task); }
/// <summary> /// Возвращает аудио буфер для файла. /// </summary> /// <param name="source">Путь к файлу.</param> private async Task <AudioBufferAndMetaData> GetBuffer(string source) { if (cachedBuffers.ContainsKey(source)) { return(cachedBuffers[source]); } var stream = (await(await StorageFile.GetFileFromApplicationUriAsync(new Uri(source))) .OpenReadAsync()).AsStreamForRead(); lock (lockObject) { var soundstream = new SoundStream(stream); var buffer = new AudioBufferAndMetaData { Stream = soundstream.ToDataStream(), AudioBytes = (int)soundstream.Length, Flags = BufferFlags.EndOfStream, WaveFormat = soundstream.Format, DecodedPacketsInfo = soundstream.DecodedPacketsInfo }; cachedBuffers[source] = buffer; return(buffer); } }
public void ChangeSpeed(double modifier) { AudioBufferAndMetaData newBuffer = firstWave.Buffer; voice.Stop(); newBuffer.Stream.Read(firstWave.Buffer.Stream.PositionPointer, 100000, 3); voice = new SourceVoice(xAudio, newBuffer.WaveFormat, true); voice.SourceSampleRate = (int)(defaultSampleRate * modifier); voice.SubmitSourceBuffer(newBuffer, newBuffer.DecodedPacketsInfo); voice.Start(); }
private AudioBufferAndMetaData GetBuffer(string soundfile) { var nativefilestream = new NativeFileStream(soundfile, NativeFileMode.Open, NativeFileAccess.Read, NativeFileShare.Read); var soundstream = new SoundStream(nativefilestream); var buffer = new AudioBufferAndMetaData { Stream = soundstream.ToDataStream(), AudioBytes = (int)soundstream.Length, Flags = BufferFlags.EndOfStream, WaveFormat = soundstream.Format, DecodedPacketsInfo = soundstream.DecodedPacketsInfo }; return(buffer); }
private static AudioBufferAndMetaData GetBuffer(string soundfile) { if (!AudioBuffers.ContainsKey(soundfile)) { var nativefilestream = new NativeFileStream( soundfile, NativeFileMode.Open, NativeFileAccess.Read, NativeFileShare.Read); var soundstream = new SoundStream(nativefilestream); var buffer = new AudioBufferAndMetaData() { Stream = soundstream.ToDataStream(), AudioBytes = (int)soundstream.Length, Flags = BufferFlags.EndOfStream, WaveFormat = soundstream.Format, DecodedPacketsInfo = soundstream.DecodedPacketsInfo }; AudioBuffers[soundfile] = buffer; } return(AudioBuffers[soundfile]); }
private static AudioBufferAndMetaData GetBuffer(string soundfile) { if (!AudioBuffers.ContainsKey(soundfile)) { var nativefilestream = new NativeFileStream( soundfile, NativeFileMode.Open, NativeFileAccess.Read, NativeFileShare.Read); var soundstream = new SoundStream(nativefilestream); var buffer = new AudioBufferAndMetaData() { Stream = soundstream.ToDataStream(), AudioBytes = (int)soundstream.Length, Flags = BufferFlags.EndOfStream, WaveFormat = soundstream.Format, DecodedPacketsInfo = soundstream.DecodedPacketsInfo }; AudioBuffers[soundfile] = buffer; } return AudioBuffers[soundfile]; }
private static AudioBufferAndMetaData GetBuffer(Stream soundfile) { var soundstream = new SoundStream(soundfile); var buffer = new AudioBufferAndMetaData() { Stream = soundstream.ToDataStream(), AudioBytes = (int)soundstream.Length, Flags = BufferFlags.EndOfStream, WaveFormat = soundstream.Format, DecodedPacketsInfo = soundstream.DecodedPacketsInfo }; return buffer; }