Skip to content
This repository was archived by the owner on Aug 6, 2021. It is now read-only.

Commit fdf78e3

Browse files
committed
Persisted configuration
1 parent 907bb02 commit fdf78e3

File tree

8 files changed

+89
-13
lines changed

8 files changed

+89
-13
lines changed

KeyboardAudioVisualizer/App.xaml.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
using System.Windows;
44
using Hardcodet.Wpf.TaskbarNotification;
55
using KeyboardAudioVisualizer.AudioProcessing;
6+
using KeyboardAudioVisualizer.Configuration;
67
using KeyboardAudioVisualizer.Helper;
78

89
namespace KeyboardAudioVisualizer

KeyboardAudioVisualizer/ApplicationManager.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
using System.Windows;
22
using KeyboardAudioVisualizer.AudioProcessing;
33
using KeyboardAudioVisualizer.Brushes;
4+
using KeyboardAudioVisualizer.Configuration;
45
using KeyboardAudioVisualizer.Helper;
56
using KeyboardAudioVisualizer.UI;
67
using RGB.NET.Brushes;

KeyboardAudioVisualizer/AudioProcessing/AudioProcessor.cs

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -58,16 +58,20 @@ private void InitializeInstance()
5858
_spectrumProvider = new FourierSpectrumProvider(_audioBuffer);
5959
_spectrumProvider.Initialize();
6060

61-
//TODO DarthAffe 03.08.2017: Initialize correctly; Settings
62-
MultiBandEqualizer equalizer = new MultiBandEqualizer { IsEnabled = false };
63-
PrimaryVisualizationProvider = new FrequencyBarsVisualizationProvider(new FrequencyBarsVisualizationProviderConfiguration(), _spectrumProvider) { Equalizer = equalizer };
61+
//TODO DarthAffe 13.08.2017: Refactore Settings-stuff to work with multiple providers
62+
63+
MultiBandEqualizer equalizer = new MultiBandEqualizer();
64+
ApplicationManager.Instance.Settings.EqualizerConfiguration.LoadInto(equalizer);
65+
equalizer.PropertyChanged += (sender, args) => ApplicationManager.Instance.Settings.EqualizerConfiguration.SaveFrom(equalizer);
66+
67+
PrimaryVisualizationProvider = new FrequencyBarsVisualizationProvider(ApplicationManager.Instance.Settings.FrequencyBarsVisualizationProviderConfiguration, _spectrumProvider) { Equalizer = equalizer };
6468
//PrimaryVisualizationProvider = new BeatVisualizationProvider(new BeatVisualizationProviderConfiguration(), _spectrumProvider);
6569
PrimaryVisualizationProvider.Initialize();
6670

67-
SecondaryVisualizationProvider = new BeatVisualizationProvider(new BeatVisualizationProviderConfiguration(), _spectrumProvider);
71+
SecondaryVisualizationProvider = new BeatVisualizationProvider(ApplicationManager.Instance.Settings.BeatVisualizationProviderConfiguration, _spectrumProvider);
6872
SecondaryVisualizationProvider.Initialize();
6973

70-
TertiaryVisualizationProvider = new LevelVisualizationProvider(new LevelVisualizationProviderConfiguration(), _audioBuffer);
74+
TertiaryVisualizationProvider = new LevelVisualizationProvider(ApplicationManager.Instance.Settings.LevelVisualizationProviderConfiguration, _audioBuffer);
7175
TertiaryVisualizationProvider.Initialize();
7276
}
7377

KeyboardAudioVisualizer/AudioProcessing/Equalizer/EqualizerBand.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,12 +25,14 @@ public float Value
2525
set => SetProperty(ref _value, float.IsNaN(value) ? 0 : MathHelper.Clamp(value, -1, 1));
2626
}
2727

28-
public bool IsFixedOffset { get; }
28+
public bool IsFixedOffset { get; set; }
2929

3030
#endregion
3131

3232
#region Constructors
3333

34+
public EqualizerBand() : this(0) { }
35+
3436
public EqualizerBand(float offset, float value = 0, bool fixedOffset = false)
3537
{
3638
this.Offset = offset;
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
using System;
2+
using System.Collections.Generic;
3+
using System.Linq;
4+
using KeyboardAudioVisualizer.AudioProcessing.Equalizer;
5+
6+
namespace KeyboardAudioVisualizer.Configuration
7+
{
8+
public class EqualizerConfiguration : AbstractConfiguration
9+
{
10+
#region Properties & Fields
11+
12+
public bool IsEnabled { get; set; } = false;
13+
14+
public List<EqualizerBand> Bands { get; set; } = new List<EqualizerBand>();
15+
16+
#endregion
17+
18+
#region Methods
19+
20+
public void LoadInto(IEqualizer equalizer)
21+
{
22+
equalizer.IsEnabled = IsEnabled;
23+
24+
foreach (EqualizerBand band in Bands)
25+
{
26+
if (band.IsFixedOffset)
27+
{
28+
EqualizerBand bandToUpdate = equalizer.Bands.FirstOrDefault(b => b.IsFixedOffset && (Math.Abs(b.Offset - band.Offset) < 0.01));
29+
if (bandToUpdate != null)
30+
bandToUpdate.Value = band.Value;
31+
}
32+
else
33+
equalizer.AddBand(band.Offset, band.Value);
34+
}
35+
}
36+
37+
public void SaveFrom(IEqualizer equalizer)
38+
{
39+
IsEnabled = equalizer.IsEnabled;
40+
41+
Bands.Clear();
42+
foreach (EqualizerBand band in equalizer.Bands)
43+
Bands.Add(new EqualizerBand(band.Offset, band.Value, band.IsFixedOffset));
44+
}
45+
46+
#endregion
47+
}
48+
}
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
using KeyboardAudioVisualizer.AudioProcessing.VisualizationProvider;
2+
3+
namespace KeyboardAudioVisualizer.Configuration
4+
{
5+
public class Settings
6+
{
7+
#region General
8+
9+
public double UpdateRate { get; set; } = 40.0;
10+
11+
#endregion
12+
13+
#region AudioProcessing
14+
15+
public EqualizerConfiguration EqualizerConfiguration { get; set; } = new EqualizerConfiguration();
16+
17+
public FrequencyBarsVisualizationProviderConfiguration FrequencyBarsVisualizationProviderConfiguration { get; set; } = new FrequencyBarsVisualizationProviderConfiguration();
18+
19+
public LevelVisualizationProviderConfiguration LevelVisualizationProviderConfiguration { get; set; } = new LevelVisualizationProviderConfiguration();
20+
21+
public BeatVisualizationProviderConfiguration BeatVisualizationProviderConfiguration { get; set; } = new BeatVisualizationProviderConfiguration();
22+
23+
#endregion
24+
}
25+
}

KeyboardAudioVisualizer/KeyboardAudioVisualizer.csproj

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -127,6 +127,7 @@
127127
<Compile Include="Brushes\FrequencyBarsBrush.cs" />
128128
<Compile Include="Brushes\LevelBarBrush.cs" />
129129
<Compile Include="Configuration\AbstractConfiguration.cs" />
130+
<Compile Include="Configuration\EqualizerConfiguration.cs" />
130131
<Compile Include="Configuration\IConfiguration.cs" />
131132
<Compile Include="Controls\Formular.cs" />
132133
<Compile Include="Controls\ImageButton.cs" />
@@ -140,7 +141,7 @@
140141
<Compile Include="Helper\FrequencyHelper.cs" />
141142
<Compile Include="Helper\MathHelper.cs" />
142143
<Compile Include="Helper\WPFHelper.cs" />
143-
<Compile Include="Settings.cs" />
144+
<Compile Include="Configuration\Settings.cs" />
144145
<Compile Include="Controls\BlurredDecorationWindow.cs" />
145146
<Compile Include="Styles\CachedResourceDictionary.cs" />
146147
<Compile Include="UI\ConfigurationWindow.xaml.cs">

KeyboardAudioVisualizer/Settings.cs

Lines changed: 0 additions & 6 deletions
This file was deleted.

0 commit comments

Comments
 (0)