Exemple #1
0
        void createPlayer(SongEntry entry)
        {
            tryStop();
            source                         = new AudioFileReader(entry.Path);
            SpectrumSampler                = new SampleAggregator(source, 512);
            meter                          = new BetterMeteringSampleProvider(SpectrumSampler);
            meter.StreamVolume            += Meter_StreamVolume;
            SpectrumSampler.FftCalculated += ((sender, earg) => { });
            SpectrumSampler.PerformFFT     = true;

            output = new WaveOut()
            {
                DesiredLatency = 1, NumberOfBuffers = meter.WaveFormat.SampleRate / 256
            };

            output.Init(meter);
            output.PlaybackStopped += Output_PlaybackStopped;
            totalPosition           = source.TotalTime;
            output.Volume           = volume / 100f;
            onPlayPauseChanged?.Invoke(this, EventArgs.Empty);
            clearSongInfo(entry);
            onInfoLoaded?.Invoke(null, new SongCallbackEventArgs(entry));
            Task getTask = new Task <SongEntry>(() => readAsync(entry));

            getTask.Start();
            getTask.ContinueWith(t => {
                onInfoLoaded?.Invoke(null, new SongCallbackEventArgs(entry));
            });
            onNewSong?.Invoke(null, EventArgs.Empty);
        }
Exemple #2
0
 void tryStop()
 {
     try
     {
         if (null != output)
         {
             output.Dispose();
             output = null;
         }
     }
     catch { }
     try
     {
         if (null != meter)
         {
             meter = null;
         }
     }
     catch { }
     try
     {
         if (null != source)
         {
             source.Dispose();
             source = null;
         }
     }
     catch { }
 }