Example #1
0
        public IVisualizationProvider CreateVisualizationProvider(VisualizationIndex visualizationIndex, VisualizationType visualizationType)
        {
            IVisualizationProvider visualizationProvider = default;

            switch (visualizationType)
            {
            case VisualizationType.FrequencyBars:
                MultiBandEqualizer equalizer = new MultiBandEqualizer();
                ApplicationManager.Instance.Settings[visualizationIndex].EqualizerConfiguration.LoadInto(equalizer);
                equalizer.PropertyChanged += (sender, args) => ApplicationManager.Instance.Settings[visualizationIndex].EqualizerConfiguration.SaveFrom(equalizer);
                visualizationProvider      = new FrequencyBarsVisualizationProvider(ApplicationManager.Instance.Settings[visualizationIndex].GetConfiguration <FrequencyBarsVisualizationProviderConfiguration>(visualizationType), GetAudioProcessor <FourierSpectrumProvider>())
                {
                    Equalizer = equalizer
                };
                break;

            case VisualizationType.Level:
                visualizationProvider = new LevelVisualizationProvider(ApplicationManager.Instance.Settings[visualizationIndex].GetConfiguration <LevelVisualizationProviderConfiguration>(visualizationType), _audioBuffer);
                break;

            case VisualizationType.Beat:
                visualizationProvider = new BeatVisualizationProvider(ApplicationManager.Instance.Settings[visualizationIndex].GetConfiguration <BeatVisualizationProviderConfiguration>(visualizationType), GetAudioProcessor <FourierSpectrumProvider>());
                break;
            }

            visualizationProvider?.Initialize();
            return(visualizationProvider);
        }
        public VisualizationSettings(VisualizationIndex visualizationIndex)
        {
            switch (visualizationIndex)
            {
            case VisualizationIndex.Primary:
                SelectedVisualization = VisualizationType.FrequencyBars;
                Gradient = new LinearGradient(new GradientStop(0, HSVColor.Create(300, 1, 1)),
                                              new GradientStop(0.20, HSVColor.Create(225, 1, 1)),
                                              new GradientStop(0.35, HSVColor.Create(180, 1, 1)),
                                              new GradientStop(0.50, HSVColor.Create(135, 1, 1)),
                                              new GradientStop(0.65, HSVColor.Create(90, 1, 1)),
                                              new GradientStop(0.80, HSVColor.Create(45, 1, 1)),
                                              new GradientStop(0.95, HSVColor.Create(0, 1, 1)));
                break;

            case VisualizationIndex.Secondary:
                SelectedVisualization = VisualizationType.Beat;
                Gradient = new LinearGradient(new GradientStop(0.5, new Color(255, 255, 255)));
                break;

            case VisualizationIndex.Tertiary:
                SelectedVisualization = VisualizationType.Level;
                Gradient = new LinearGradient(new GradientStop(0, new Color(0, 0, 255)),
                                              new GradientStop(1, new Color(255, 0, 0)));
                break;
            }
        }
 public VisualizationSettings this[VisualizationIndex visualizationIndex]
 {
     get
     {
         if (!Visualizations.TryGetValue(visualizationIndex, out VisualizationSettings settings))
         {
             Visualizations[visualizationIndex] = (settings = new VisualizationSettings(visualizationIndex));
         }
         return(settings);
     }
 }