コード例 #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);
        }
コード例 #2
0
        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;
            }
        }
コード例 #3
0
 public VisualizationSettings this[VisualizationIndex visualizationIndex]
 {
     get
     {
         if (!Visualizations.TryGetValue(visualizationIndex, out VisualizationSettings settings))
         {
             Visualizations[visualizationIndex] = (settings = new VisualizationSettings(visualizationIndex));
         }
         return(settings);
     }
 }