Exemplo n.º 1
0
        private static void PlayWithoutStreaming(IWaveSource waveSource)
        {
            using (var xaudio2 = XAudio2.CreateXAudio2())
                using (var masteringVoice = xaudio2.CreateMasteringVoice()) //ALWAYS create at least one masteringVoice.
                    using (var sourceVoice = xaudio2.CreateSourceVoice(waveSource.WaveFormat))
                    {
                        var buffer = waveSource.ToByteArray();
                        using (var sourceBuffer = new XAudio2Buffer(buffer.Length))
                        {
                            using (var stream = sourceBuffer.GetStream())
                            {
                                stream.Write(buffer, 0, buffer.Length);
                            }

                            sourceVoice.SubmitSourceBuffer(sourceBuffer);
                        }

                        sourceVoice.Start();

                        Console.WriteLine("Press any key to exit.");
                        Console.ReadKey();

                        sourceVoice.Stop();
                    }
        }
Exemplo n.º 2
0
        static void Main(string[] args)
        {
            OpenFileDialog openFileDialog = new OpenFileDialog();

            openFileDialog.Filter = CodecFactory.SupportedFilesFilterEn;

            if (openFileDialog.ShowDialog() == DialogResult.OK)
            {
                using (var source = CodecFactory.Instance.GetCodec(openFileDialog.FileName))
                {
                    using (var xaudio2 = XAudio2.CreateXAudio2())
                        using (var masteringVoice = xaudio2.CreateMasteringVoice())
                            //ALWAYS create at least one masteringVoice.
                            using (var streamingSourceVoice = new StreamingSourceVoice(xaudio2, source))
                            {
                                StreamingSourceVoiceListener.Default.Add(streamingSourceVoice);
                                //add the streamingSourceVoice to the default sourcevoicelistener which processes the data requests.
                                streamingSourceVoice.Start();

                                Console.WriteLine("Press any key to exit.");
                                Console.ReadKey();

                                StreamingSourceVoiceListener.Default.Remove(streamingSourceVoice);
                                streamingSourceVoice.Stop();
                            }
                }
            }
        }