Persisted configuration

This commit is contained in:
Darth Affe 2017-08-13 13:06:36 +02:00
parent 907bb027c7
commit fdf78e34b8
8 changed files with 89 additions and 13 deletions

View File

@ -3,6 +3,7 @@ using System.IO;
using System.Windows;
using Hardcodet.Wpf.TaskbarNotification;
using KeyboardAudioVisualizer.AudioProcessing;
using KeyboardAudioVisualizer.Configuration;
using KeyboardAudioVisualizer.Helper;
namespace KeyboardAudioVisualizer

View File

@ -1,6 +1,7 @@
using System.Windows;
using KeyboardAudioVisualizer.AudioProcessing;
using KeyboardAudioVisualizer.Brushes;
using KeyboardAudioVisualizer.Configuration;
using KeyboardAudioVisualizer.Helper;
using KeyboardAudioVisualizer.UI;
using RGB.NET.Brushes;

View File

@ -58,16 +58,20 @@ namespace KeyboardAudioVisualizer.AudioProcessing
_spectrumProvider = new FourierSpectrumProvider(_audioBuffer);
_spectrumProvider.Initialize();
//TODO DarthAffe 03.08.2017: Initialize correctly; Settings
MultiBandEqualizer equalizer = new MultiBandEqualizer { IsEnabled = false };
PrimaryVisualizationProvider = new FrequencyBarsVisualizationProvider(new FrequencyBarsVisualizationProviderConfiguration(), _spectrumProvider) { Equalizer = equalizer };
//TODO DarthAffe 13.08.2017: Refactore Settings-stuff to work with multiple providers
MultiBandEqualizer equalizer = new MultiBandEqualizer();
ApplicationManager.Instance.Settings.EqualizerConfiguration.LoadInto(equalizer);
equalizer.PropertyChanged += (sender, args) => ApplicationManager.Instance.Settings.EqualizerConfiguration.SaveFrom(equalizer);
PrimaryVisualizationProvider = new FrequencyBarsVisualizationProvider(ApplicationManager.Instance.Settings.FrequencyBarsVisualizationProviderConfiguration, _spectrumProvider) { Equalizer = equalizer };
//PrimaryVisualizationProvider = new BeatVisualizationProvider(new BeatVisualizationProviderConfiguration(), _spectrumProvider);
PrimaryVisualizationProvider.Initialize();
SecondaryVisualizationProvider = new BeatVisualizationProvider(new BeatVisualizationProviderConfiguration(), _spectrumProvider);
SecondaryVisualizationProvider = new BeatVisualizationProvider(ApplicationManager.Instance.Settings.BeatVisualizationProviderConfiguration, _spectrumProvider);
SecondaryVisualizationProvider.Initialize();
TertiaryVisualizationProvider = new LevelVisualizationProvider(new LevelVisualizationProviderConfiguration(), _audioBuffer);
TertiaryVisualizationProvider = new LevelVisualizationProvider(ApplicationManager.Instance.Settings.LevelVisualizationProviderConfiguration, _audioBuffer);
TertiaryVisualizationProvider.Initialize();
}

View File

@ -25,12 +25,14 @@ namespace KeyboardAudioVisualizer.AudioProcessing.Equalizer
set => SetProperty(ref _value, float.IsNaN(value) ? 0 : MathHelper.Clamp(value, -1, 1));
}
public bool IsFixedOffset { get; }
public bool IsFixedOffset { get; set; }
#endregion
#region Constructors
public EqualizerBand() : this(0) { }
public EqualizerBand(float offset, float value = 0, bool fixedOffset = false)
{
this.Offset = offset;

View File

@ -0,0 +1,48 @@
using System;
using System.Collections.Generic;
using System.Linq;
using KeyboardAudioVisualizer.AudioProcessing.Equalizer;
namespace KeyboardAudioVisualizer.Configuration
{
public class EqualizerConfiguration : AbstractConfiguration
{
#region Properties & Fields
public bool IsEnabled { get; set; } = false;
public List<EqualizerBand> Bands { get; set; } = new List<EqualizerBand>();
#endregion
#region Methods
public void LoadInto(IEqualizer equalizer)
{
equalizer.IsEnabled = IsEnabled;
foreach (EqualizerBand band in Bands)
{
if (band.IsFixedOffset)
{
EqualizerBand bandToUpdate = equalizer.Bands.FirstOrDefault(b => b.IsFixedOffset && (Math.Abs(b.Offset - band.Offset) < 0.01));
if (bandToUpdate != null)
bandToUpdate.Value = band.Value;
}
else
equalizer.AddBand(band.Offset, band.Value);
}
}
public void SaveFrom(IEqualizer equalizer)
{
IsEnabled = equalizer.IsEnabled;
Bands.Clear();
foreach (EqualizerBand band in equalizer.Bands)
Bands.Add(new EqualizerBand(band.Offset, band.Value, band.IsFixedOffset));
}
#endregion
}
}

View File

@ -0,0 +1,25 @@
using KeyboardAudioVisualizer.AudioProcessing.VisualizationProvider;
namespace KeyboardAudioVisualizer.Configuration
{
public class Settings
{
#region General
public double UpdateRate { get; set; } = 40.0;
#endregion
#region AudioProcessing
public EqualizerConfiguration EqualizerConfiguration { get; set; } = new EqualizerConfiguration();
public FrequencyBarsVisualizationProviderConfiguration FrequencyBarsVisualizationProviderConfiguration { get; set; } = new FrequencyBarsVisualizationProviderConfiguration();
public LevelVisualizationProviderConfiguration LevelVisualizationProviderConfiguration { get; set; } = new LevelVisualizationProviderConfiguration();
public BeatVisualizationProviderConfiguration BeatVisualizationProviderConfiguration { get; set; } = new BeatVisualizationProviderConfiguration();
#endregion
}
}

View File

@ -127,6 +127,7 @@
<Compile Include="Brushes\FrequencyBarsBrush.cs" />
<Compile Include="Brushes\LevelBarBrush.cs" />
<Compile Include="Configuration\AbstractConfiguration.cs" />
<Compile Include="Configuration\EqualizerConfiguration.cs" />
<Compile Include="Configuration\IConfiguration.cs" />
<Compile Include="Controls\Formular.cs" />
<Compile Include="Controls\ImageButton.cs" />
@ -140,7 +141,7 @@
<Compile Include="Helper\FrequencyHelper.cs" />
<Compile Include="Helper\MathHelper.cs" />
<Compile Include="Helper\WPFHelper.cs" />
<Compile Include="Settings.cs" />
<Compile Include="Configuration\Settings.cs" />
<Compile Include="Controls\BlurredDecorationWindow.cs" />
<Compile Include="Styles\CachedResourceDictionary.cs" />
<Compile Include="UI\ConfigurationWindow.xaml.cs">

View File

@ -1,6 +0,0 @@
namespace KeyboardAudioVisualizer
{
public class Settings
{
}
}