1
0
mirror of https://github.com/Artemis-RGB/Artemis synced 2025-12-13 05:48:35 +00:00

Further audio improvements, needs some trimming on CPU-usage

This commit is contained in:
SpoinkyNL 2017-01-17 19:25:07 +01:00
parent e5f1a940de
commit 6f3d00c8d4
7 changed files with 25 additions and 29 deletions

View File

@ -31,9 +31,6 @@ namespace Artemis.Managers
_debugViewModel = debugViewModel;
// Setup timers
//_loopTimer = new Timer(40);
//_loopTimer.Elapsed += LoopTimerOnElapsed;
//_loopTimer.Start();
_loopTask = Task.Factory.StartNew(ProcessLoop);
_logger.Info("Intialized LoopManager");
}
@ -48,8 +45,6 @@ namespace Artemis.Managers
public void Dispose()
{
_loopTask.Dispose();
//_loopTimer.Stop();
//_loopTimer.Dispose();
}
private void ProcessLoop()
@ -72,20 +67,9 @@ namespace Artemis.Managers
_logger.Warn(e, "Exception in render loop");
}
}
// ReSharper disable once FunctionNeverReturns
}
//private void LoopTimerOnElapsed(object sender, ElapsedEventArgs elapsedEventArgs)
//{
// try
// {
// Render();
// }
// catch (Exception e)
// {
// _logger.Warn(e, "Exception in render loop");
// }
//}
public Task StartAsync()
{
return Task.Run(() => Start());

View File

@ -110,6 +110,11 @@ namespace Artemis.Managers
Logger.Debug("Enabling program");
ProgramEnabled = true;
LoopManager.StartAsync();
foreach (var overlayModule in ModuleManager.OverlayModules)
{
if (overlayModule.Settings.IsEnabled)
overlayModule.Enable();
}
RaiseEnabledChangedEvent(new EnabledChangedEventArgs(ProgramEnabled));
}
@ -119,6 +124,11 @@ namespace Artemis.Managers
public void DisableProgram()
{
Logger.Debug("Disabling program");
foreach (var overlayModule in ModuleManager.OverlayModules)
{
if (overlayModule.Settings.IsEnabled)
overlayModule.Dispose();
}
LoopManager.Stop();
ProgramEnabled = false;
RaiseEnabledChangedEvent(new EnabledChangedEventArgs(ProgramEnabled));

View File

@ -98,7 +98,8 @@ namespace Artemis.Modules.Abstract
return;
ProfileModel = profileModel;
ProfileModel?.Activate(_luaManager);
if (!IsOverlay)
ProfileModel?.Activate(_luaManager);
if (ProfileModel != null)
{
Settings.LastProfile = ProfileModel.Name;

View File

@ -31,8 +31,7 @@ namespace Artemis.Modules.General.GeneralProfile
[MoonSharpUserData]
public class Audio
{
public double Volume { get; set; }
public double Peak { get; set; }
public float Volume { get; set; }
public AudioDevice Recording { get; set; } = new AudioDevice();
public AudioDevice Playback { get; set; } = new AudioDevice();
}

View File

@ -93,9 +93,10 @@ namespace Artemis.Modules.General.GeneralProfile
private void UpdateAudio(GeneralProfileDataModel dataModel)
{
var recording = AudioMeterInformation.FromDevice(_defaultRecording);
var playback = AudioMeterInformation.FromDevice(_defaultPlayback);
dataModel.Audio.Volume = AudioEndpointVolume.FromDevice(_defaultPlayback).GetMasterVolumeLevelScalar();
dataModel.Audio.Recording.OverallPeak = recording.PeakValue;
for (var i = 0; i < recording.GetChannelsPeakValues(recording.MeteringChannelCount).Length; i++)
{

View File

@ -8,12 +8,12 @@ namespace Artemis.Modules.Overlays.OverlayProfile
{
public class OverlayProfileModel : ModuleModel
{
private readonly GeneralProfileModel _generalProfileModel;
private readonly GeneralProfileModel _generalProfileModule;
public OverlayProfileModel(DeviceManager deviceManager, LuaManager luaManager,
[Named(nameof(GeneralProfileModel))] ModuleModel generalProfileModel) : base(deviceManager, luaManager)
[Named(nameof(GeneralProfileModel))] ModuleModel generalProfileModule) : base(deviceManager, luaManager)
{
_generalProfileModel = (GeneralProfileModel) generalProfileModel;
_generalProfileModule = (GeneralProfileModel) generalProfileModule;
Settings = SettingsProvider.Load<OverlayProfileSettings>();
DataModel = new OverlayProfileDataModel();
}
@ -24,9 +24,11 @@ namespace Artemis.Modules.Overlays.OverlayProfile
public override void Update()
{
// TODO: Find a clean way to update the parent profile model
((OverlayProfileDataModel) DataModel).GeneralDataModel =
(GeneralProfileDataModel) _generalProfileModel.DataModel;
var dataModel = (OverlayProfileDataModel) DataModel;
if (!_generalProfileModule.IsInitialized)
_generalProfileModule.Update();
dataModel.GeneralDataModel = (GeneralProfileDataModel) _generalProfileModule.DataModel;
}
}
}

View File

@ -32,10 +32,9 @@ namespace Artemis.Profiles.Layers.Types.Audio.AudioCapturing
_volumeIndex = 0;
_volumeTimer = new Timer(200);
_volumeTimer.Elapsed += VolumeTimerOnElapsed;
Start();
}
public ILogger Logger { get; }
public MMDevice Device { get; }
public double DesiredAverage { get; set; }