コード例 #1
0
        void PlaySound(string link, int WaveOutDeviceId)
        {
            using (Stream ms = new MemoryStream())
            {
                using (Stream stream = WebRequest.Create(link).GetResponse().GetResponseStream())
                {
                    byte[] buffer = new byte[4096];
                    int    read;
                    while ((read = stream.Read(buffer, 0, buffer.Length)) > 0)
                    {
                        ms.Write(buffer, 0, read);
                    }
                }

                ms.Position = 0;
                using (WaveStream mf = new BlockAlignReductionStream(WaveFormatConversionStream.CreatePcmStream(new Mp3FileReader(ms))))
                    using (var wo = new WaveOutEvent())
                    {
                        wo.DeviceNumber           = WaveOutDeviceId;
                        PitchProvider             = new SmbPitchShiftingSampleProvider(mf.ToSampleProvider().ToMono());
                        PitchProvider.PitchFactor = Pitch;
                        wo.Init(PitchProvider);
                        wo.Volume = VoiceVolume;
                        wo.Play();
                        while (wo.PlaybackState == PlaybackState.Playing)
                        {
                            PitchProvider.PitchFactor = Pitch;
                            wo.Volume = VoiceVolume;
                            Thread.Sleep(500);
                        }
                    }
            }
        }