public void Init(IAudioCodec codec) { this.codec = codec; // Init record input input = new WaveIn(); input.DeviceNumber = cbInput.SelectedIndex; input.WaveFormat = codec.RecordFormat; input.DataAvailable += Input_DataAvailable; input.StartRecording(); // Init buffer - level meters will use it buffer = new BufferedWaveProvider(codec.RecordFormat); InputBufferMilisec = 50; // Init level meters channel = new SampleChannel(buffer, true); var meter = new MeteringSampleProvider(channel); meter.StreamVolume += Meter_StreamVolume; // Init feedback output output = new WaveOut(); output.Volume = FeedbackVolume; output.Init(meter); output.Play(); Ready = true; }
/// <summary> /// 加载歌曲 /// </summary> /// <param name="itemm">要加载的歌曲</param> private static void Load(SongItem itemm) { if (Config.ControlOtherPlayer) { API.SendKey(System.Windows.Input.Key.MediaStop); } DanmukuReceiver.VoteUids.Clear(); waveout = Create(); FileReader = new Mp3FileReader(itemm._FilePath); var sampleChannel = new SampleChannel(FileReader, true); setVolumeDelegate = vol => sampleChannel.Volume = vol; var postVolumeMeter = new MeteringSampleProvider(sampleChannel); waveout.Init(postVolumeMeter); waveout.PlaybackStopped += Waveout_PlaybackStopped; SetVol(); lrc = itemm._FLyric ?? itemm.getFLyric(); }
public void Stop() { if (playbackState == StreamingPlaybackState.Stopped) { return; } if (!fullyDownloaded) { webRequest.Abort(); } playbackState = StreamingPlaybackState.Stopped; if (waveOut != null) { waveOut.Stop(); waveOut.Dispose(); waveOut = null; vuMeter.StreamVolume -= Meter_StreamVolume; vuMeter = null; } _timer.Change(Timeout.Infinite, Timeout.Infinite); LevelLeftValue = 0; LevelRightValue = 0; // n.b. streaming thread may not yet have exited Thread.Sleep(500); bufferedSeconds = 0; }
/// <summary> /// Init the wave provider. /// </summary> private void Init() { // Create the channels SampleChannel channel = new SampleChannel(_audioReader, true); MeteringSampleProvider provider = new MeteringSampleProvider(channel); // Create the wave provider. _waveProvider = new SampleToWaveProvider(provider); // calculate the buffer size. int bufferSize = _waveProvider.WaveFormat.ConvertLatencyToByteSize((DesiredLatency + NumberOfBuffers - 1) / NumberOfBuffers); MmResult result; lock (_waveOutLock) { result = _callbackInfo.WaveOutOpen(out _hWaveOut, _device.Index, _waveProvider.WaveFormat, _callback); } MmException.Try(result, "waveOutOpen"); _buffers = new WaveOutBuffer[NumberOfBuffers]; _playbackState = PlaybackState.Stopped; for (int n = 0; n < NumberOfBuffers; n++) { _buffers[n] = new WaveOutBuffer(_hWaveOut, bufferSize, _waveProvider, _waveOutLock); } }
public AudioFile(String p) { path = p; Pace = 1.0; volume = 0; //set the audio file object with a given audio file path in the drive try { audioOutput = new WaveOut(); audio = new AudioFileReader(path); msp = new MeteringSampleProvider(audio); msp.StreamVolume += Msp_StreamVolume; audioOutput.Init(new SampleToWaveProvider(msp)); } catch (Exception e) { Console.WriteLine(e.Source); } audioOutput.Volume = (float)1.0; }
private bool CreateWaveStream() { OptReturn optReturn; if (mWaveStream == null) { return(false); } try { WaveStream waveStream = new CustomRateWaveStream(mWaveStream, mRate); var waveChannel = new SampleChannel(waveStream, true); var postVolumeMeter = new MeteringSampleProvider(waveChannel); mSampleProvider = postVolumeMeter; return(true); } catch (Exception ex) { optReturn = new OptReturn(); optReturn.Code = Defines.RET_FAIL; optReturn.Message = ex.Message; ShowException(optReturn); return(false); } }
public void Play(string File) { try { if (waveOut != null) { if (waveOut.PlaybackState != PlaybackState.Stopped) { waveOut.Stop(); audioFile.Dispose(); waveOut.Dispose(); } } waveOut = new WasapiOut(NAudio.CoreAudioApi.AudioClientShareMode.Shared, 100); audioFile = new AudioFileReader(File); meterSampleProvider = new MeteringSampleProvider(audioFile); meterSampleProvider.SamplesPerNotification = 100; meterSampleProvider.StreamVolume += MeterSampleProvider_StreamVolume; audioFile.Volume = _volume; waveOut.Init(meterSampleProvider); waveOut.Play(); OnPlay?.Invoke(new PlayEventArgs { File = File }); } catch (Exception ex) { throw ex; } }
private void listViewBreakMusic_SelectedIndexChanged(object sender, EventArgs e) { if (listViewBreakMusic.SelectedItems.Count == 1) { try { createWaveOutBreak(); audioFileReaderBreak = new AudioFileReader(listViewBreakMusic.SelectedItems[0].SubItems[1].Text); var sampleChannel = new SampleChannel(audioFileReaderBreak, true); this.setVolumeDelegateBreak = (vol) => sampleChannel.Volume = vol; var postVolumeMeter = new MeteringSampleProvider(sampleChannel); postVolumeMeter.StreamVolume += onPostVolumeMeter; //waveOutDevice.Init(postVolumeMeter); waveOutDeviceBreak.Init(postVolumeMeter); volumeSlider1.Volume = 1.0f; } catch (Exception) { //Do nothing! } listViewBreakMusic.SelectedItems[0].EnsureVisible(); enableButtons(); } }
private List <ISampleProvider> CreateInputStream(string fileName) { if (fileName != null) { this.fileWaveStreamDAC = CreateWaveStream(fileName); var waveChannelDAC = new SampleChannel(this.fileWaveStreamDAC); _form.setVolumeDelegateDAC = (vol) => waveChannelDAC.Volume = vol; //waveChannelDAC.PreVolumeMeter += _form.OnPreVolumeMeter; var postVolumeMeterDAC = new MeteringSampleProvider(waveChannelDAC); // postVolumeMeterDAC.StreamVolume += _form.OnPostVolumeMeter; this.fileWaveStreamDefault = CreateWaveStream(fileName); var waveChannelDefault = new SampleChannel(this.fileWaveStreamDefault); _form.setVolumeDelegateDefault = (vol) => waveChannelDefault.Volume = vol; waveChannelDefault.Volume = (float)0.254; //waveChannelDefault.PreVolumeMeter += _form.OnPreVolumeMeter; var postVolumeMeterDefault = new MeteringSampleProvider(waveChannelDefault); //postVolumeMeterDefault.StreamVolume += _form.OnPostVolumeMeter; List <ISampleProvider> postVolumeMeters = new List <ISampleProvider>(); postVolumeMeters.Add(postVolumeMeterDAC); postVolumeMeters.Add(postVolumeMeterDefault); return(postVolumeMeters); } else { return(null); } }
private ISampleProvider CreateInputStream(string fileName) { if (System.IO.Path.GetExtension(fileName).ToUpper() == ".FLAC") { this.audioFileReader = new FlacReader(fileName); } else { this.audioFileReader = new AudioFileReader(fileName); } if (!(audioFileReader is FlacReader)) { m_FadeInOutSampleProvider = new FadeInOutSampleProvider((ISampleProvider)audioFileReader, false); } var sampleChannel = new SampleChannel(audioFileReader, true); sampleChannel.PreVolumeMeter += OnPreVolumeMeter; this.InvokeSetVolumeDelegate = (vol) => { sampleChannel.Volume = vol; if (audioFileReader is AudioFileReader) { ((AudioFileReader)audioFileReader).Volume = vol; } }; var postVolumeMeter = new MeteringSampleProvider(((audioFileReader is FlacReader)) ? sampleChannel : (ISampleProvider)m_FadeInOutSampleProvider); postVolumeMeter.StreamVolume += OnPostVolumeMeter; return(postVolumeMeter); }
private ISampleProvider CreateInputStream(string fileName) { audioFileReader = new AudioFileReader(fileName); audioFileReader2 = new AudioFileReader(fileName);//创建一个静音流 audioFileReader2.Volume = 0.0f; //处理多声道音频,双声道需要声卡驱动支持 waveProvider = new MultiplexingWaveProvider(new IWaveProvider[] { audioFileReader, audioFileReader2 }, 2); if (left_radio.IsChecked == true) { waveProvider.ConnectInputToOutput(2, 1); waveProvider.ConnectInputToOutput(3, 1); } else if (right_radio.IsChecked == true) { waveProvider.ConnectInputToOutput(2, 0); waveProvider.ConnectInputToOutput(3, 0); } var sampleChannel = new SampleChannel(waveProvider, false); setVolumeDelegate = vol => sampleChannel.Volume = vol;//设置音量 var postVolumeMeter = new MeteringSampleProvider(sampleChannel); postVolumeMeter.StreamVolume += OnPostVolumeMeter; sampleChannel.PreVolumeMeter += OnPreVolumeMeter;//波形图 return(postVolumeMeter); }
protected override void playSong() { try { currentSong = nextSong; if (currentSong == null) { currentSong = getNextSong(); if (currentSong == null) { MessageBox.Show("No songs to play."); return; } } if (fileReader != null) { fileReader.Dispose(); } fileReader = new Mp3FileReader(currentSong.filepath); } catch (Exception) { MessageBox.Show("Error reading " + currentSong + ".\n" + "File does not exist or cannot be read."); if (fileReader != null) { fileReader.Dispose(); } loadNextSong(null, null); return; } startGUIThread(); waveChannel = new WaveChannel32(fileReader, 1, panSlider.Pan); waveChannel.PadWithZeroes = false; SampleChannel sampleChannel = new SampleChannel(waveChannel); sampleChannel.PreVolumeMeter += onPreVolumeMeter; volumeDelegate = (vol) => sampleChannel.Volume = vol; volumeDelegate(absoluteVolume * mixedVolume); //Debug.WriteLine("absoluteVolume: " + absoluteVolume + " mixedVolume: " + mixedVolume); //Debug.WriteLine("absoluteVolume * mixedVolume = " + absoluteVolume * mixedVolume); postVolumeMeter = new MeteringSampleProvider(sampleChannel); postVolumeMeter.StreamVolume += onPostVolumeMeter; deviceOut.Init(postVolumeMeter); deviceOut.Play(); label_EndTime.Text = String.Format("{0:00}:{1:00}", (int)fileReader.TotalTime.TotalMinutes, fileReader.TotalTime.Seconds); label_SongTitle.Text = currentSong.ToString(); }
//音声ファイルを再生する関数 private void PlaySound(string audioFilePath) { //音声デバイスが設定されていない場合は再取得 if (_wavePlayer == null) { Loaded(); } //音声再生をTry try { //再生してるなら止める if (_wavePlayer.PlaybackState != PlaybackState.Stopped) { _wavePlayer.Stop(); } //音声ファイルのロード //対応フォーマット:.wav, .mp3, .aiff, MFCreateSourceReaderFromURL()で読めるもの(動画ファイルも可?) _reader = new AudioFileReader(audioFilePath); //sampleChannelにreaderをセット var sampleChannel = new SampleChannel(_reader, true); /* * //ここでボリューム等(?)の設定が可能? * //サンプルの AudioPlaybackPanel.cs を参照 * sampleChannel.PreVolumeMeter+= OnPreVolumeMeter; * setVolumeDelegate = vol => sampleChannel.Volume = vol; */ //sampleChannelのボリュームをセット var postVolumeMeter = new MeteringSampleProvider(sampleChannel); /* * //ここでボリューム等(?)の設定が可能? * //サンプルの AudioPlaybackPanel.cs を参照 * postVolumeMeter.StreamVolume += OnPostVolumeMeter; */ //プレイヤーに設定をセット _wavePlayer.Init(postVolumeMeter); //再生 YukarinetteLogger.Instance.Info($"Sound Play Start"); _wavePlayer.Play(); //YukarinetteLogger.Instance.Info("Sound Play End"); } catch (YukarinetteException ex) { //エラー文出力 YukarinetteLogger.Instance.Error($"Sound Play Error!"); YukarinetteLogger.Instance.Error($"{audioFilePath}"); YukarinetteLogger.Instance.Error($"{ex.Message}"); YukarinetteConsoleMessage.Instance.WriteMessage($"{typeof(ExFilterPlugin)}: エラーが発生しました。再生を中止します。"); YukarinetteConsoleMessage.Instance.WriteMessage(ex); } }
private ISampleProvider CreateInputStream() { var sampleChannel = new SampleChannel(waveStream, true); sampleChannel.PreVolumeMeter += OnPreVolumeMeter; setVolumeDelegate = vol => sampleChannel.Volume = vol; var postVolumeMeter = new MeteringSampleProvider(sampleChannel); postVolumeMeter.StreamVolume += OnPostVolumeMeter; return postVolumeMeter; }
public PlaybackTrack(MixingSampleProvider parent) { parentMixer = parent; mixer = new MixingSampleProvider(parent.WaveFormat) { ReadFully = true }; meter = new MeteringSampleProvider(mixer); parentMixer.AddMixerInput(meter); }
static ISampleProvider CreateInput(string FileName) { AudioFileReader = new AudioFileReader(FileName); var sampleChanel = new SampleChannel(AudioFileReader, true); ChangeVolume = vol => sampleChanel.Volume = vol; var postVolumeMeter = new MeteringSampleProvider(sampleChanel); return(postVolumeMeter); }
public void Enable() { try { ipep = new IPEndPoint(IPAddress.Parse(Micobject.settings.sourcename), 8092); client = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); client.Connect(ipep); logger.Info("与对方服务器{0}通信连接成功。", Micobject.settings.sourcename); } catch (SocketException se) { logger.Error("Socket异常:{0}", se.Message); throw; } catch (Exception ex) { logger.Error("通信异常", ex.Message); } try { _sampleRate = Micobject.settings.samples; _bitsPerSample = Micobject.settings.bits; _channels = Micobject.settings.channels; RecordingFormat = new WaveFormat(_sampleRate, _bitsPerSample, _channels); _waveIn = new WaveInEvent { BufferMilliseconds = 40, DeviceNumber = 0, WaveFormat = RecordingFormat }; _waveIn.DataAvailable += WaveInDataAvailable; _waveIn.RecordingStopped += WaveInRecordingStopped; _waveProvider = new WaveInProvider(_waveIn); _sampleChannel = new SampleChannel(_waveProvider); _meteringProvider = new MeteringSampleProvider(_sampleChannel); //_meteringProvider.StreamVolume += _meteringProvider_StreamVolume; } catch (Exception exc) { logger.Error(exc.Message); } try { _waveIn.StartRecording(); logger.Info("开始接收语音信号。"); } catch (Exception ex) { logger.Error(ex.Message); } }
private ISampleProvider CreateInputStream(string fileName) { audioFileReader = new AudioFileReader(fileName); SampleChannel sampleChannel = new SampleChannel(audioFileReader, true); MeteringSampleProvider postVolumeMeter = new MeteringSampleProvider(sampleChannel); postVolumeMeter.StreamVolume += OnPostVolumeMeter; return(postVolumeMeter); }
private ISampleProvider CreateInputStream(string fileName) { audioFileReader = new AudioFileReader(fileName); SampleChannel sampleChannel = new SampleChannel(audioFileReader, true); postVolumeMeter = new MeteringSampleProvider(sampleChannel); fade = new FadeInOutSampleProvider(postVolumeMeter); return(fade); }
private ISampleProvider CreateInputStream(string fileName) { _audioFileReader = new AudioFileReader(fileName); var sampleChannel = new SampleChannel(_audioFileReader, true); sampleChannel.PreVolumeMeter += OnPreVolumeMeter; var postVolumeMeter = new MeteringSampleProvider(sampleChannel); return(postVolumeMeter); }
public async void ConnectToServer(object o) { TcpClient client = new TcpClient(ipAddress, port); //IP адрес сервера и порт на котором он висит var rawSource = new RawSourceWaveStream(client.GetStream(), waveFormat); var sampleProvider = rawSource.ToSampleProvider(); metering = new MeteringSampleProvider(sampleProvider); metering.StreamVolume += realVolume; waveOut.Init(metering); waveOut.Play(); }
/// <summary> /// Initialises a new instance of SampleChannel /// </summary> /// <param name="waveProvider">Source wave provider, must be PCM or IEEE</param> /// <param name="forceStereo">force mono inputs to become stereo</param> public SampleChannel(IWaveProvider waveProvider, bool forceStereo) { ISampleProvider sampleProvider = SampleProviderConverters.ConvertWaveProviderIntoSampleProvider(waveProvider); if (sampleProvider.WaveFormat.Channels == 1 && forceStereo) { sampleProvider = new MonoToStereoSampleProvider(sampleProvider); } this.waveFormat = sampleProvider.WaveFormat; // let's put the meter before the volume (useful for drawing waveforms) this.preVolumeMeter = new MeteringSampleProvider(sampleProvider); this.volumeProvider = new VolumeSampleProvider(preVolumeMeter); }
ISampleProvider CreateSampleProvider(string fileName) { m_AudioReader = new AudioFileReader(fileName); m_SampleChannel = new SampleChannel(m_AudioReader, true); m_SampleChannel.PreVolumeMeter += OnPreVolumeMeter; var postVolumeMeter = new MeteringSampleProvider(m_SampleChannel); postVolumeMeter.StreamVolume += OnPostVolumeMeter; return(postVolumeMeter); }
private void AudioOutput_SelectedIndexChanged(object sender, EventArgs e) { if (output != null && output.PlaybackState != PlaybackState.Stopped) { output.Pause(); } output = new WasapiOut(outputs[audioOutputSelector.SelectedIndex], AudioClientShareMode.Shared, true, outputLatency); StoreSetting("output_device", audioOutputSelector.SelectedIndex.ToString()); Logger.WriteLine("Set outputDevice to: " + audioOutputSelector.SelectedIndex.ToString()); bitsPrSample = output.OutputWaveFormat.BitsPerSample; sampleRate = output.OutputWaveFormat.SampleRate; channels = output.OutputWaveFormat.Channels; // Set the WaveFormat outputFormat = WaveFormat.CreateIeeeFloatWaveFormat(sampleRate, channels); // (Re)Setup the mixer and buffers if (outputBufferTimer != null) { outputBufferTimer.Stop(); } outputBuffer = new BufferedWaveProvider(internalFormatStereo); outputBuffer.ReadFully = true; outputBuffer.DiscardOnBufferOverflow = true; WdlResamplingSampleProvider resampler = new WdlResamplingSampleProvider(outputBuffer.ToSampleProvider(), outputFormat.SampleRate); outputMeter = new MeteringSampleProvider(resampler, samplesPrIntegration); outputMeter.StreamVolume += (a, b) => RunOutputMeter(a, b, meter); SetOutputMode(outputMode); output.Init(outputMeter); output.Play(); outputBufferTimer = new System.Windows.Forms.Timer(); outputBufferTimer.Interval = mainServerInterval; outputBufferTimer.Tick += outputBufferTimerCheck; outputBufferTimer.Start(); Logger.WriteLine("SET OUTPUT FORMAT: " + "Sample Rate: " + sampleRate + ", BitsPrSasmple: " + bitsPrSample + ", Channels: " + channels); }
private ISampleProvider CreateInputStream(string fileName) { audioFileReader = new AudioFileReader(fileName); var sampleChannel = new SampleChannel(audioFileReader, false); setVolumeDelegate = vol => sampleChannel.Volume = vol; var postVolumeMeter = new MeteringSampleProvider(sampleChannel); postVolumeMeter.StreamVolume += OnPostVolumeMeter; postVolumeMeter.SamplesPerNotification = 80; return(postVolumeMeter); }
private ISampleProvider CreateInputStream(string fileName) { audioFileReader = new AudioFileReader(fileName); var sampleChannel = new SampleChannel(audioFileReader, true); sampleChannel.PreVolumeMeter+= OnPreVolumeMeter; setVolumeDelegate = vol => sampleChannel.Volume = vol; var postVolumeMeter = new MeteringSampleProvider(sampleChannel); postVolumeMeter.StreamVolume += OnPostVolumeMeter; return postVolumeMeter; }
private ISampleProvider createInputStream(string fileName) { this.audioFileReader = new AudioFileReader(fileName); sampleChannel = new SampleChannel(audioFileReader, true); sampleChannel.PreVolumeMeter += OnPreVolumeMeter; sampleChannel.Volume = Volume; var postVolumeMeter = new MeteringSampleProvider(sampleChannel); postVolumeMeter.StreamVolume += OnPostVolumeMeter; return(postVolumeMeter); }
/// <summary> /// Initialises a new instance of SampleChannel /// </summary> /// <param name="waveProvider">Source wave provider, must be PCM or IEEE</param> /// <param name="forceStereo">force mono inputs to become stereo</param> public SampleChannel(IWaveProvider waveProvider, bool forceStereo) { ISampleProvider sampleProvider = SampleProviderConverters.ConvertWaveProviderIntoSampleProvider(waveProvider); if (sampleProvider.WaveFormat.Channels == 1 && forceStereo) { sampleProvider = new MonoToStereoSampleProvider(sampleProvider); } waveFormat = sampleProvider.WaveFormat; // let's put the meter before the volume (useful for drawing waveforms) preVolumeMeter = new MeteringSampleProvider(sampleProvider); volumeProvider = new VolumeSampleProvider(preVolumeMeter); }
/// <summary> /// 使用指定的音频流绘制波形图 /// </summary> /// <param name="stream"></param> /// <returns></returns> public OptReturn Draw(WaveStream stream) { OptReturn optReturn = new OptReturn(); optReturn.Result = true; optReturn.Code = Defines.RET_SUCCESS; try { WaveStream reader = stream; reader.Position = 0; if (reader.WaveFormat.Encoding != WaveFormatEncoding.Pcm && reader.WaveFormat.Encoding != WaveFormatEncoding.IeeeFloat) { reader = WaveFormatConversionStream.CreatePcmStream(reader); reader = new BlockAlignReductionStream(reader); } InitDraw(); var waveChannel = new SampleChannel(reader, true); int samples = (int)(reader.TotalTime.TotalSeconds) * reader.WaveFormat.SampleRate / mPngWidth; var postVolumeMeter = new MeteringSampleProvider(waveChannel, samples); postVolumeMeter.StreamVolume += postVolumeMeter_StreamVolume; var waveProvider = new SampleToWaveProvider(postVolumeMeter); while (true) { byte[] buffer = new byte[waveProvider.WaveFormat.AverageBytesPerSecond]; int readcount = waveProvider.Read(buffer, 0, waveProvider.WaveFormat.AverageBytesPerSecond); if (readcount <= 0) { break; } } stream.Position = 0; if (mIsSaveFile) { return(GenerateImageFile()); } Bitmap[] bitmaps = new Bitmap[2]; bitmaps[0] = mBitmap; bitmaps[1] = mBitmap1; optReturn.Data = bitmaps; return(optReturn); } catch (Exception ex) { optReturn.Result = false; optReturn.Code = Defines.RET_FAIL; optReturn.Message = ex.Message; return(optReturn); } }
public SoundCardRecorder(string filePath, string song) { FilePath = filePath; Song = song; _waveIn = new WasapiLoopbackCapture(); _waveIn.DataAvailable += OnDataAvailable; _buffer = new BufferedWaveProvider(_waveIn.WaveFormat); _writer = new WaveFileWriter(filePath, _waveIn.WaveFormat); var sampleChannel = new SampleChannel(_buffer, true); PostVolumeMeter = new MeteringSampleProvider(sampleChannel, _waveIn.WaveFormat.SampleRate / 4); }
private void listViewParticipants_SelectedIndexChanged(object sender, EventArgs e) { try { if (listViewParticipants.SelectedItems.Count == 1) { if (listViewParticipants.Tag != null) { listViewParticipants.Items[(int)listViewParticipants.Tag].SubItems[0].BackColor = SystemColors.Window; listViewParticipants.Items[(int)listViewParticipants.Tag].SubItems[0].ForeColor = Color.Gray; listViewParticipants.Tag = null; } createWaveOutParticipant(); //Check that there is a file in the grid. Gives a strange error message it we let AudioFileReader throw exception if (string.IsNullOrEmpty(listViewParticipants.SelectedItems[0].SubItems[4].Text)) { throw new Exception(Properties.Resources.CAPTION_NO_FILE_FOR_PARTICIPANT); } audioFileReaderParticipant = new AudioFileReader(listViewParticipants.SelectedItems[0].SubItems[4].Text); var sampleChannel = new SampleChannel(audioFileReaderParticipant, true); this.setVolumeDelegateParticipant = (vol) => sampleChannel.Volume = vol; var postVolumeMeter = new MeteringSampleProvider(sampleChannel); postVolumeMeter.StreamVolume += onPostVolumeMeter; fadeInOut = new FadeInOutSampleProvider(postVolumeMeter, false); labelTotalTime.Text = $"{(int)audioFileReaderParticipant.TotalTime.TotalMinutes:00}:{audioFileReaderParticipant.TotalTime.Seconds:00}"; //waveOutDevice.Init(postVolumeMeter); waveOutDeviceParticipant.Init(fadeInOut); volumeSlider1.Volume = 1.0f; pausePlaying = false; listViewParticipants.Tag = listViewParticipants.SelectedItems[0].Index; listViewParticipants.SelectedItems[0].BackColor = Color.LightGreen; listViewParticipants.SelectedItems[0].EnsureVisible(); listViewParticipants.SelectedItems[0].Selected = false; enableButtons(); } } catch (Exception ex) { MessageBox.Show("Can't load music\n" + listViewParticipants.SelectedItems[0].SubItems[4].Text + "\n\n" + ex.Message, Properties.Resources.CAPTION_ERROR_LOADING_MUSIC, MessageBoxButtons.OK); } }