/// <summary> /// Initializes a new instance of the <see cref="SoundTimeSource"/> class. /// </summary> /// <param name="fileName">Name of the file.</param> public SoundTimeSource(string fileName) { waveOutDevice = new WaveOutEvent(); audioFileReader = new AudioFileReader(fileName); loopingWaveStream = new SoundLoopWaveProvider(audioFileReader) { EnableLooping = false }; waveOutDevice.Init(loopingWaveStream); waveOutDevice.PlaybackStopped += (s, a) => playing = false; length = (float)audioFileReader.TotalTime.TotalSeconds; }
/// <summary> /// Plays sound from a given file /// </summary> /// <param name="fileName">input sound file name (can be a compressed format, like mp3)</param> /// <param name="looped">should playback be looped forever</param> public void PlaySound(string fileName, bool looped = false) { var input = new AudioFileReader(fileName); if (looped) { var reader = new SoundLoopWaveProvider(input); var sampleChannel = new SampleChannel(reader, false); AddMixerInput(sampleChannel); } else { AddMixerInput(new AutoDisposeSampleProvider(input, input)); } }