From 762e881ea771f05f06c1c61e223b3bfe880010b6 Mon Sep 17 00:00:00 2001 From: Logan Saso Date: Sun, 28 Feb 2016 15:43:30 -0800 Subject: [PATCH 01/39] Moved ContextualColor to update so it updates live --- .../Artemis/Modules/Games/RocketLeague/RocketLeagueModel.cs | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/Artemis/Artemis/Modules/Games/RocketLeague/RocketLeagueModel.cs b/Artemis/Artemis/Modules/Games/RocketLeague/RocketLeagueModel.cs index 6873f9a9c..45994c075 100644 --- a/Artemis/Artemis/Modules/Games/RocketLeague/RocketLeagueModel.cs +++ b/Artemis/Artemis/Modules/Games/RocketLeague/RocketLeagueModel.cs @@ -50,8 +50,6 @@ namespace Artemis.Modules.Games.RocketLeague { Initialized = false; - ContextualColor = Settings.ContextualColor; - _boostRect = new KeyboardRectangle(MainManager.KeyboardManager.ActiveKeyboard, 0, 0, new List { ColorHelpers.ToDrawingColor(Settings.MainColor), @@ -74,6 +72,7 @@ namespace Artemis.Modules.Games.RocketLeague if (_memory == null) return; + ContextualColor = Settings.ContextualColor; var offsets = _pointer.GameAddresses.First(ga => ga.Description == "Boost").ToString(); var boostAddress = _memory.GetAddress("\"RocketLeague.exe\"" + offsets); var boostFloat = _memory.ReadFloat(boostAddress)*100/3; From ae66e7a63a414b7ab36d8ba2b0a8ea9fa6203e52 Mon Sep 17 00:00:00 2001 From: SpoinkyNL Date: Sat, 5 Mar 2016 00:09:19 +0100 Subject: [PATCH 02/39] Ambient Lightning WIP --- Artemis/Artemis/Artemis.csproj | 30 +++- .../KeyboardProviders/ProviderHelper.cs | 5 +- .../KeyboardProviders/Razer/BlackWidow.cs | 21 +-- .../Razer/Utilities/RazerUtilities.cs | 18 ++- .../AmbientLightningEffectModel.cs | 135 ++++++++++++++++++ .../AmbientLightningEffectSettings.cs | 37 +++++ .../AmbientLightningEffectView.xaml | 55 +++++++ .../AmbientLightningEffectView.xaml.cs | 28 ++++ .../AmbientLightningEffectViewModel.cs | 32 +++++ Artemis/Artemis/RzChromaSDK64.dll | Bin 82944 -> 0 bytes .../Utilities/Keyboard/KeyboardRectangle.cs | 1 - Artemis/Artemis/Utilities/ScreenCapture.cs | 110 ++++++++++++++ .../Artemis/ViewModels/EffectsViewModel.cs | 4 + Artemis/Artemis/packages.config | 4 + 14 files changed, 450 insertions(+), 30 deletions(-) create mode 100644 Artemis/Artemis/Modules/Effects/AmbientLightning/AmbientLightningEffectModel.cs create mode 100644 Artemis/Artemis/Modules/Effects/AmbientLightning/AmbientLightningEffectSettings.cs create mode 100644 Artemis/Artemis/Modules/Effects/AmbientLightning/AmbientLightningEffectView.xaml create mode 100644 Artemis/Artemis/Modules/Effects/AmbientLightning/AmbientLightningEffectView.xaml.cs create mode 100644 Artemis/Artemis/Modules/Effects/AmbientLightning/AmbientLightningEffectViewModel.cs delete mode 100644 Artemis/Artemis/RzChromaSDK64.dll create mode 100644 Artemis/Artemis/Utilities/ScreenCapture.cs diff --git a/Artemis/Artemis/Artemis.csproj b/Artemis/Artemis/Artemis.csproj index ef47f3c4b..16aba318b 100644 --- a/Artemis/Artemis/Artemis.csproj +++ b/Artemis/Artemis/Artemis.csproj @@ -147,6 +147,10 @@ ..\packages\Hardcodet.NotifyIcon.Wpf.1.0.5\lib\net451\Hardcodet.Wpf.TaskbarNotification.dll True + + ..\packages\ImageLibrary.2.0.5\lib\net45\Kaliko.ImageLibrary.dll + True + ..\packages\log4net.2.0.5\lib\net45-full\log4net.dll True @@ -166,6 +170,18 @@ ..\packages\Newtonsoft.Json.8.0.2\lib\net45\Newtonsoft.Json.dll True + + ..\packages\SharpDX.3.0.1\lib\net45\SharpDX.dll + True + + + ..\packages\SharpDX.Direct3D11.3.0.1\lib\net45\SharpDX.Direct3D11.dll + True + + + ..\packages\SharpDX.DXGI.3.0.1\lib\net45\SharpDX.DXGI.dll + True + @@ -248,6 +264,12 @@ + + + + AmbientLightningEffectView.xaml + + AudioVisualization.settings True @@ -328,6 +350,7 @@ + @@ -456,6 +479,10 @@ + + Designer + MSBuild:Compile + MSBuild:Compile Designer @@ -529,9 +556,6 @@ PreserveNewest - - PreserveNewest - diff --git a/Artemis/Artemis/KeyboardProviders/ProviderHelper.cs b/Artemis/Artemis/KeyboardProviders/ProviderHelper.cs index 966f403d0..0e5483490 100644 --- a/Artemis/Artemis/KeyboardProviders/ProviderHelper.cs +++ b/Artemis/Artemis/KeyboardProviders/ProviderHelper.cs @@ -1,6 +1,7 @@ using System.Collections.Generic; using Artemis.KeyboardProviders.Corsair; using Artemis.KeyboardProviders.Logitech; +using Artemis.KeyboardProviders.Razer; namespace Artemis.KeyboardProviders { @@ -11,8 +12,8 @@ namespace Artemis.KeyboardProviders return new List { new Orion(), - new CorsairRGB() - //new BlackWidow() + new CorsairRGB(), + new BlackWidow() }; } } diff --git a/Artemis/Artemis/KeyboardProviders/Razer/BlackWidow.cs b/Artemis/Artemis/KeyboardProviders/Razer/BlackWidow.cs index 59b3bbd6d..f0f409e11 100644 --- a/Artemis/Artemis/KeyboardProviders/Razer/BlackWidow.cs +++ b/Artemis/Artemis/KeyboardProviders/Razer/BlackWidow.cs @@ -3,6 +3,8 @@ using System.Drawing; using Artemis.KeyboardProviders.Razer.Utilities; using Corale.Colore.Core; using Corale.Colore.Razer.Keyboard; +using ColoreColor = Corale.Colore.Core.Color; +using KeyboardCustom = Corale.Colore.Razer.Keyboard.Effects.Custom; namespace Artemis.KeyboardProviders.Razer { @@ -22,19 +24,9 @@ namespace Artemis.KeyboardProviders.Razer return false; // Some people have Synapse installed, but not a Chroma keyboard, deal with this - try - { - // Create a bitmap to send as a test - var b = new Bitmap(22, 6); - var razerArray = RazerUtilities.BitmapColorArray(b, 6, 22); - Chroma.Instance.Keyboard.SetGrid(razerArray); - Chroma.Instance.Keyboard.Clear(); - } - catch (NullReferenceException) - { - return false; - } - return true; + var blackWidowFound = Chroma.Instance.Query(Corale.Colore.Razer.Devices.Blackwidow).Connected; + var blackWidowTeFound = Chroma.Instance.Query(Corale.Colore.Razer.Devices.BlackwidowTe).Connected; + return (blackWidowFound || blackWidowTeFound); } public override void Enable() @@ -52,7 +44,8 @@ namespace Artemis.KeyboardProviders.Razer public override void DrawBitmap(Bitmap bitmap) { var razerArray = RazerUtilities.BitmapColorArray(bitmap, Height, Width); - Chroma.Instance.Keyboard.SetGrid(razerArray); + + Chroma.Instance.Keyboard.SetCustom(razerArray); } } } \ No newline at end of file diff --git a/Artemis/Artemis/KeyboardProviders/Razer/Utilities/RazerUtilities.cs b/Artemis/Artemis/KeyboardProviders/Razer/Utilities/RazerUtilities.cs index b0fe17fda..cc33c32d5 100644 --- a/Artemis/Artemis/KeyboardProviders/Razer/Utilities/RazerUtilities.cs +++ b/Artemis/Artemis/KeyboardProviders/Razer/Utilities/RazerUtilities.cs @@ -1,25 +1,23 @@ using System.Drawing; using System.Drawing.Drawing2D; using System.Drawing.Imaging; -using Color = Corale.Colore.Core.Color; +using Corale.Colore.Razer.Keyboard.Effects; namespace Artemis.KeyboardProviders.Razer.Utilities { public static class RazerUtilities { - public static Color[][] BitmapColorArray(Bitmap b, int height, int width) + public static Custom BitmapColorArray(Bitmap b, int height, int width) { - var res = new Color[height][]; + var keyboardGrid = Custom.Create(); if (b.Width > width || b.Height > height) b = ResizeImage(b, width, height); - for (var y = 0; y < b.Height - 1; y++) - { - res[y] = new Color[width]; - for (var x = 0; x < b.Width - 1; x++) - res[y][x] = b.GetPixel(x, y); - } - return res; + for (var y = 0; y < b.Height; y++) + for (var x = 0; x < b.Width; x++) + keyboardGrid[y, x] = b.GetPixel(x, y); + + return keyboardGrid; } /// diff --git a/Artemis/Artemis/Modules/Effects/AmbientLightning/AmbientLightningEffectModel.cs b/Artemis/Artemis/Modules/Effects/AmbientLightning/AmbientLightningEffectModel.cs new file mode 100644 index 000000000..e1e6d35a1 --- /dev/null +++ b/Artemis/Artemis/Modules/Effects/AmbientLightning/AmbientLightningEffectModel.cs @@ -0,0 +1,135 @@ +using System.Collections.Generic; +using System.Drawing; +using System.Drawing.Drawing2D; +using System.IO; +using System.Linq; +using System.Windows.Forms; +using Artemis.Managers; +using Artemis.Models; +using Artemis.Utilities; +using Artemis.Utilities.Keyboard; +using Kaliko.ImageLibrary; +using Kaliko.ImageLibrary.Filters; + +namespace Artemis.Modules.Effects.AmbientLightning +{ + internal class AmbientLightningEffectModel : EffectModel + { + private KeyboardRectangle _botRect; + private List _colors; + private List _rectangles; + private ScreenCapture _screenCapturer; + private KeyboardRectangle _topRect; + + public AmbientLightningEffectModel(MainManager mainManager, AmbientLightningEffectSettings settings) + : base(mainManager) + { + Name = "Ambient Lightning"; + Settings = settings; + Scale = 4; + Initialized = false; + } + + public int Scale { get; set; } + + public AmbientLightningEffectSettings Settings { get; set; } + + public KeyboardRectangle KeyboardRectangle { get; set; } + + public override void Dispose() + { + Initialized = false; + _screenCapturer = null; + } + + public override void Enable() + { + Initialized = false; + + _colors = new List(); + _screenCapturer = new ScreenCapture(); + _topRect = new KeyboardRectangle(MainManager.KeyboardManager.ActiveKeyboard, 0, 0, new List(), + LinearGradientMode.Horizontal) {Height = MainManager.KeyboardManager.ActiveKeyboard.Height*Scale/2}; + _botRect = new KeyboardRectangle(MainManager.KeyboardManager.ActiveKeyboard, 0, 0, new List(), + LinearGradientMode.Horizontal); + + + Initialized = true; + } + + public override void Update() + { + var capture = _screenCapturer.Capture(); + _rectangles = new List(); + // Analise the result + // Chop the screen into 2 rows and 3 columns + var resolution = Screen.PrimaryScreen.Bounds; + var blockWidth = resolution.Width/3; + var blockHeight = resolution.Height/2; + var colorIndex = 0; + for (var row = 0; row < 2; row++) + { + for (var column = 0; column < 3; column++) + { + var blockBase = new Point(blockWidth*column, blockHeight*row); + var samples = new List(); + // For each block, take samples + for (var blockRow = 0; blockRow < 6; blockRow++) + { + for (var blockColumn = 0; blockColumn < 6; blockColumn++) + { + var x = blockWidth/6*blockColumn + blockWidth/6/4 + blockBase.X; + var y = blockHeight/6*blockRow + blockHeight/6/4 + blockBase.Y; + samples.Add(ScreenCapture.GetColor(capture, new Point(x, y))); + } + } + + // Take the average of the samples + var averageR = samples.Sum(s => s.R)/samples.Count; + var averageG = samples.Sum(s => s.G)/samples.Count; + var averageB = samples.Sum(s => s.B)/samples.Count; + + if (_colors.Count <= colorIndex) + _colors.Add(Color.FromArgb(255, averageR, averageG, averageB)); + else + _colors[colorIndex] = Color.FromArgb(255, (averageR + _colors[colorIndex].R * 5) / 6, (averageG + _colors[colorIndex].G * 5) / 6, (averageB + _colors[colorIndex].B * 5) / 6); + colorIndex++; + } + } + + // Put the resulting colors in 6 rectangles, their size differs per keyboard + var rectWidth = MainManager.KeyboardManager.ActiveKeyboard.Width/3*Scale; + var rectHeight = MainManager.KeyboardManager.ActiveKeyboard.Height/2*Scale; + for (var row = 0; row < 2; row++) + { + for (var column = 0; column < 3; column++) + { + var rectBase = new Point(rectWidth * column, rectHeight * row); + _rectangles.Add(new Rectangle(rectBase.X, rectBase.Y, rectWidth, rectHeight)); + } + } + } + + public override Bitmap GenerateBitmap() + { + var bitmap = MainManager.KeyboardManager.ActiveKeyboard.KeyboardBitmap(Scale); + using (var g = Graphics.FromImage(bitmap)) + { + var i = 0; + foreach (var rectangle in _rectangles) + { + g.FillRectangle(new SolidBrush(_colors[i]), rectangle); + i++; + } + } + + var test = new KalikoImage(bitmap); + test.ApplyFilter(new GaussianBlurFilter(8f)); + var ms = new MemoryStream(); + test.SaveBmp(ms); + ms.Position = 0; + return new Bitmap(ms); + + } + } +} \ No newline at end of file diff --git a/Artemis/Artemis/Modules/Effects/AmbientLightning/AmbientLightningEffectSettings.cs b/Artemis/Artemis/Modules/Effects/AmbientLightning/AmbientLightningEffectSettings.cs new file mode 100644 index 000000000..70c673008 --- /dev/null +++ b/Artemis/Artemis/Modules/Effects/AmbientLightning/AmbientLightningEffectSettings.cs @@ -0,0 +1,37 @@ +using System.Drawing.Drawing2D; +using Artemis.Models; + +namespace Artemis.Modules.Effects.AmbientLightning +{ + internal class AmbientLightningEffectSettings : EffectSettings + { + public AmbientLightningEffectSettings() + { + Load(); + } + + public int Width { get; set; } + public int Height { get; set; } + public bool Rotate { get; set; } + public int Scale { get; set; } + public LinearGradientMode Type { get; set; } + + public sealed override void Load() + { + ToDefault(); + } + + public sealed override void Save() + { + } + + public sealed override void ToDefault() + { + Width = 84; + Height = 24; + Scale = 4; + Type = LinearGradientMode.Horizontal; + Rotate = true; + } + } +} \ No newline at end of file diff --git a/Artemis/Artemis/Modules/Effects/AmbientLightning/AmbientLightningEffectView.xaml b/Artemis/Artemis/Modules/Effects/AmbientLightning/AmbientLightningEffectView.xaml new file mode 100644 index 000000000..55bdfba58 --- /dev/null +++ b/Artemis/Artemis/Modules/Effects/AmbientLightning/AmbientLightningEffectView.xaml @@ -0,0 +1,55 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + public void ClearEffect() { - // Don't mess with the ActiveEffect if in the process of changing the effect. - if (PauseEffect != null) + if (_clearing) return; - + + // Don't mess with the ActiveEffect if in the process of changing the effect. + if (_pauseEffect != null) + return; + if (ActiveEffect == null) return; + _clearing = true; + + _mainManager.Pause(); + _mainManager.PauseCallback += ClearEffectPauseCallback; + } + + private void ClearEffectPauseCallback() + { ActiveEffect.Dispose(); ActiveEffect = null; General.Default.LastEffect = null; General.Default.Save(); + + _events.PublishOnUIThread(new ActiveEffectChanged("")); + + _clearing = false; + _mainManager.Unpause(); } /// diff --git a/Artemis/Artemis/Managers/KeyboardManager.cs b/Artemis/Artemis/Managers/KeyboardManager.cs index f17687b39..f6e7c9d1f 100644 --- a/Artemis/Artemis/Managers/KeyboardManager.cs +++ b/Artemis/Artemis/Managers/KeyboardManager.cs @@ -19,29 +19,40 @@ namespace Artemis.Managers public List KeyboardProviders { get; set; } public KeyboardProvider ActiveKeyboard { get; set; } - public bool LoadLastKeyboard() + /// + /// Enables the last keyboard according to the settings file + /// + public void EnableLastKeyboard() { + if (General.Default.LastKeyboard == null) + return; + if (General.Default.LastKeyboard == "") + return; + var keyboard = KeyboardProviders.FirstOrDefault(k => k.Name == General.Default.LastKeyboard); - return ChangeKeyboard(keyboard ?? KeyboardProviders.First()); + EnableKeyboard(keyboard); } - public bool ChangeKeyboard(KeyboardProvider keyboardProvider) + /// + /// Enables the given keyboard + /// + /// + public void EnableKeyboard(KeyboardProvider keyboardProvider) { + ReleaseActiveKeyboard(); + if (keyboardProvider == null) - return false; + return; if (ActiveKeyboard != null) if (keyboardProvider.Name == ActiveKeyboard.Name) - return true; - - ReleaseActiveKeyboard(); + return; // Disable everything if there's no active keyboard found if (!keyboardProvider.CanEnable()) { - MessageBox.Show(keyboardProvider.CantEnableText, "Artemis (╯°□°)╯︵ ┻━┻", MessageBoxButtons.OK, - MessageBoxIcon.Warning); - return false; + _mainManager.DialogService.ShowErrorMessageBox(keyboardProvider.CantEnableText); + return; } ActiveKeyboard = keyboardProvider; @@ -49,10 +60,11 @@ namespace Artemis.Managers General.Default.LastKeyboard = ActiveKeyboard.Name; General.Default.Save(); - - return true; } + /// + /// Releases the active keyboard + /// public void ReleaseActiveKeyboard() { if (ActiveKeyboard == null) @@ -61,5 +73,20 @@ namespace Artemis.Managers ActiveKeyboard.Disable(); ActiveKeyboard = null; } + + /// + /// Changes the active keyboard + /// + /// + public void ChangeKeyboard(KeyboardProvider keyboardProvider) + { + if (keyboardProvider == ActiveKeyboard) + return; + + General.Default.LastKeyboard = keyboardProvider?.Name; + General.Default.Save(); + + _mainManager.Restart(); + } } } \ No newline at end of file diff --git a/Artemis/Artemis/Managers/MainManager.cs b/Artemis/Artemis/Managers/MainManager.cs index 2133e92d4..444aa2c88 100644 --- a/Artemis/Artemis/Managers/MainManager.cs +++ b/Artemis/Artemis/Managers/MainManager.cs @@ -2,9 +2,9 @@ using System.Diagnostics; using System.Linq; using System.Threading; -using System.Windows.Forms; using Artemis.Events; using Artemis.Models; +using Artemis.Services; using Artemis.Utilities.GameState; using Artemis.Utilities.Keyboard; using Caliburn.Micro; @@ -17,10 +17,12 @@ namespace Artemis.Managers private readonly int _fps; private bool _paused; + private bool _restarting; - public MainManager(IEventAggregator events) + public MainManager(IEventAggregator events, MetroDialogService dialogService) { Events = events; + DialogService = dialogService; KeyboardManager = new KeyboardManager(this); EffectManager = new EffectManager(this, Events); @@ -28,7 +30,7 @@ namespace Artemis.Managers _fps = 25; UpdateWorker = new BackgroundWorker {WorkerSupportsCancellation = true}; - ProcessWorker = new BackgroundWorker { WorkerSupportsCancellation = true }; + ProcessWorker = new BackgroundWorker {WorkerSupportsCancellation = true}; UpdateWorker.DoWork += UpdateWorker_DoWork; UpdateWorker.RunWorkerCompleted += BackgroundWorkerExceptionCatcher; @@ -57,6 +59,7 @@ namespace Artemis.Managers public GameStateWebServer GameStateWebServer { get; set; } public IEventAggregator Events { get; set; } + public MetroDialogService DialogService { get; set; } public bool ProgramEnabled { get; private set; } public bool Suspended { get; set; } @@ -79,7 +82,8 @@ namespace Artemis.Managers return true; // Only continue if a keyboard was loaded - if (!KeyboardManager.LoadLastKeyboard()) + KeyboardManager.EnableLastKeyboard(); + if (KeyboardManager.ActiveKeyboard == null) return false; Running = true; @@ -129,6 +133,41 @@ namespace Artemis.Managers PauseCallback = null; } + public void Shutdown() + { + Stop(); + ProcessWorker.CancelAsync(); + GameStateWebServer.Stop(); + } + + public void Restart() + { + if (_restarting) + return; + if (!Running) + { + Start(); + return; + } + + _restarting = true; + + UpdateWorker.RunWorkerCompleted += FinishRestart; + Stop(); + } + + public void FinishRestart(object sender, RunWorkerCompletedEventArgs e) + { + UpdateWorker.RunWorkerCompleted -= FinishRestart; + + if (e.Error != null) + return; + + Start(); + + _restarting = false; + } + /// /// Loads the last active effect and starts the program /// @@ -255,12 +294,5 @@ namespace Artemis.Managers } #endregion - - public void Shutdown() - { - Stop(); - ProcessWorker.CancelAsync(); - GameStateWebServer.Stop(); - } } } \ No newline at end of file diff --git a/Artemis/Artemis/Models/EffectModel.cs b/Artemis/Artemis/Models/EffectModel.cs index d41fc862d..13f01a478 100644 --- a/Artemis/Artemis/Models/EffectModel.cs +++ b/Artemis/Artemis/Models/EffectModel.cs @@ -1,31 +1,32 @@ -using System; -using System.Drawing; -using Artemis.Managers; - -namespace Artemis.Models -{ - public abstract class EffectModel : IDisposable - { - public delegate void SettingsUpdateHandler(EffectSettings settings); - - public MainManager MainManager; - public string Name; - public bool Initialized; - - protected EffectModel(MainManager mainManager) - { - MainManager = mainManager; - } - - public abstract void Dispose(); - - // Called on creation - public abstract void Enable(); - - // Called every iteration - public abstract void Update(); - - // Called after every update - public abstract Bitmap GenerateBitmap(); - } +using System; +using System.Drawing; +using Artemis.Managers; + +namespace Artemis.Models +{ + public abstract class EffectModel : IDisposable + { + public delegate void SettingsUpdateHandler(EffectSettings settings); + + public bool Initialized; + + public MainManager MainManager; + public string Name; + + protected EffectModel(MainManager mainManager) + { + MainManager = mainManager; + } + + public abstract void Dispose(); + + // Called on creation + public abstract void Enable(); + + // Called every iteration + public abstract void Update(); + + // Called after every update + public abstract Bitmap GenerateBitmap(); + } } \ No newline at end of file diff --git a/Artemis/Artemis/Modules/Effects/AudioVisualizer/AudioVisualizerModel.cs b/Artemis/Artemis/Modules/Effects/AudioVisualizer/AudioVisualizerModel.cs index 9211b2c72..3452c7c04 100644 --- a/Artemis/Artemis/Modules/Effects/AudioVisualizer/AudioVisualizerModel.cs +++ b/Artemis/Artemis/Modules/Effects/AudioVisualizer/AudioVisualizerModel.cs @@ -17,10 +17,10 @@ namespace Artemis.Modules.Effects.AudioVisualizer { private const int FftLength = 2048; private readonly SampleAggregator _sampleAggregator = new SampleAggregator(FftLength); - private bool _generating; - private IWaveIn _waveIn; - private int _sensitivity; private bool _fromBottom; + private bool _generating; + private int _sensitivity; + private IWaveIn _waveIn; public AudioVisualizerModel(MainManager mainManager, AudioVisualizerSettings settings) : base(mainManager) { @@ -92,7 +92,7 @@ namespace Artemis.Modules.Effects.AudioVisualizer } public override void Update() - { + { // Start filling the model _generating = true; @@ -118,7 +118,7 @@ namespace Artemis.Modules.Effects.AudioVisualizer height = (int) Math.Round(SpectrumData[i]/2.55); // Apply Sensitivity setting - height = height* _sensitivity; + height = height*_sensitivity; var keyboardHeight = (int) Math.Round(MainManager.KeyboardManager.ActiveKeyboard.Height/100.00*height*Scale); if (keyboardHeight > SoundRectangles[i].Height) diff --git a/Artemis/Artemis/Modules/Effects/AudioVisualizer/AudioVisualizerView.xaml b/Artemis/Artemis/Modules/Effects/AudioVisualizer/AudioVisualizerView.xaml index a5a22d8b9..517f9705f 100644 --- a/Artemis/Artemis/Modules/Effects/AudioVisualizer/AudioVisualizerView.xaml +++ b/Artemis/Artemis/Modules/Effects/AudioVisualizer/AudioVisualizerView.xaml @@ -37,8 +37,8 @@