示例#1
0
 private void Source_SourceEvent(object sender, SourceEventArgs e)
 {
     if (e.Event == ESourceEventType.Loaded)
     {
         _spectrumProvider = Source.SpectrumProvider;
         UpdateFrequencyMapping();
     }
 }
示例#2
0
        public SingleSpectrum(FftSize fftSize, ISpectrumProvider spectrumProvider)
        {
            SpectrumProvider   = spectrumProvider;
            SpectrumResolution = 1;
            FftSize            = fftSize;

            UpdateFrequencyMapping();
        }
 private ISpectrum GetSpectrum(ISpectrumProvider spectrumProvider)
 {
     return(Properties.SpectrumMode.CurrentValue switch
     {
         SpectrumMode.Gamma => spectrumProvider.GetGammaSpectrum(Properties.Bars.CurrentValue, Properties.Gamma.CurrentValue, Properties.MinFrequency.CurrentValue, Properties.MaxFrequency.CurrentValue),
         SpectrumMode.Logarithmic => spectrumProvider.GetLogarithmicSpectrum(Properties.Bars.CurrentValue, Properties.MinFrequency.CurrentValue, Properties.MaxFrequency.CurrentValue),
         SpectrumMode.Linear => spectrumProvider.GetLinearSpectrum(Properties.Bars.CurrentValue, Properties.MinFrequency.CurrentValue, Properties.MaxFrequency.CurrentValue),
         _ => null
     });
        public override void Update(double deltaTime)
        {
            ISpectrumProvider spectrumProvider = _audioVisualizationService.GetSpectrumProvider(Properties.Channel);

            if (spectrumProvider == null)
            {
                return;
            }

            RecalculateConfigValues();

            ISpectrum spectrum = GetSpectrum(spectrumProvider);

            if (spectrum == null)
            {
                return;
            }

            for (int i = 0; i < spectrum.BandCount; i++)
            {
                double binPower = GetBandValue(spectrum[i]);

                binPower = Math.Max(0, 20 * Math.Log10(binPower));

                binPower  = Math.Max(0, binPower);
                binPower /= Properties.ReferenceLevel.CurrentValue;
                if (Properties.EmphasisePeaks.CurrentValue > 0.001)
                {
                    binPower = Math.Pow(binPower, 1 + Properties.EmphasisePeaks.CurrentValue) * _emphasiseFactor;
                }

                if (i < _visualizationData.Length)
                {
                    _visualizationData[i] = (float)((_visualizationData[i] * _smoothingFactor) + (binPower * (1.0 - _smoothingFactor))).Clamp(0, 1);
                    if (float.IsNaN(_visualizationData[i]))
                    {
                        _visualizationData[i] = 0;
                    }
                }
            }
        }
示例#5
0
 public SpectrumPlayerWrapper(ISpectrumProvider spectrumProvider)
 {
     _spectrumProvider = spectrumProvider;
     _spectrumProvider.PlayStateChanged += _spectrumProvider_PlayStateChanged;
 }
示例#6
0
 public BeatVisualizationProvider(BeatVisualizationProviderConfiguration configuration, ISpectrumProvider specturProvider)
 {
     this._configuration   = configuration;
     this._specturProvider = specturProvider;
 }
示例#7
0
 public SpectrumPlayerWrapper(ISpectrumProvider spectrumProvider)
 {
     _spectrumProvider = spectrumProvider;
     _spectrumProvider.PlayStateChanged += _spectrumProvider_PlayStateChanged;
 }