mirror of
https://github.com/DarthAffe/KeyboardAudioVisualizer.git
synced 2025-12-12 15:18:30 +00:00
Persisted configuration
This commit is contained in:
parent
907bb027c7
commit
fdf78e34b8
@ -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
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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();
|
||||
}
|
||||
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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
|
||||
}
|
||||
}
|
||||
25
KeyboardAudioVisualizer/Configuration/Settings.cs
Normal file
25
KeyboardAudioVisualizer/Configuration/Settings.cs
Normal 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
|
||||
}
|
||||
}
|
||||
@ -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">
|
||||
|
||||
@ -1,6 +0,0 @@
|
||||
namespace KeyboardAudioVisualizer
|
||||
{
|
||||
public class Settings
|
||||
{
|
||||
}
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user