1
0
mirror of https://github.com/Artemis-RGB/Artemis synced 2025-12-31 09:43:46 +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; _debugViewModel = debugViewModel;
// Setup timers // Setup timers
//_loopTimer = new Timer(40);
//_loopTimer.Elapsed += LoopTimerOnElapsed;
//_loopTimer.Start();
_loopTask = Task.Factory.StartNew(ProcessLoop); _loopTask = Task.Factory.StartNew(ProcessLoop);
_logger.Info("Intialized LoopManager"); _logger.Info("Intialized LoopManager");
} }
@ -48,8 +45,6 @@ namespace Artemis.Managers
public void Dispose() public void Dispose()
{ {
_loopTask.Dispose(); _loopTask.Dispose();
//_loopTimer.Stop();
//_loopTimer.Dispose();
} }
private void ProcessLoop() private void ProcessLoop()
@ -72,20 +67,9 @@ namespace Artemis.Managers
_logger.Warn(e, "Exception in render loop"); _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() public Task StartAsync()
{ {
return Task.Run(() => Start()); return Task.Run(() => Start());

View File

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

View File

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

View File

@ -31,8 +31,7 @@ namespace Artemis.Modules.General.GeneralProfile
[MoonSharpUserData] [MoonSharpUserData]
public class Audio public class Audio
{ {
public double Volume { get; set; } public float Volume { get; set; }
public double Peak { get; set; }
public AudioDevice Recording { get; set; } = new AudioDevice(); public AudioDevice Recording { get; set; } = new AudioDevice();
public AudioDevice Playback { 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) private void UpdateAudio(GeneralProfileDataModel dataModel)
{ {
var recording = AudioMeterInformation.FromDevice(_defaultRecording); var recording = AudioMeterInformation.FromDevice(_defaultRecording);
var playback = AudioMeterInformation.FromDevice(_defaultPlayback); var playback = AudioMeterInformation.FromDevice(_defaultPlayback);
dataModel.Audio.Volume = AudioEndpointVolume.FromDevice(_defaultPlayback).GetMasterVolumeLevelScalar();
dataModel.Audio.Recording.OverallPeak = recording.PeakValue; dataModel.Audio.Recording.OverallPeak = recording.PeakValue;
for (var i = 0; i < recording.GetChannelsPeakValues(recording.MeteringChannelCount).Length; i++) 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 public class OverlayProfileModel : ModuleModel
{ {
private readonly GeneralProfileModel _generalProfileModel; private readonly GeneralProfileModel _generalProfileModule;
public OverlayProfileModel(DeviceManager deviceManager, LuaManager luaManager, 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>(); Settings = SettingsProvider.Load<OverlayProfileSettings>();
DataModel = new OverlayProfileDataModel(); DataModel = new OverlayProfileDataModel();
} }
@ -24,9 +24,11 @@ namespace Artemis.Modules.Overlays.OverlayProfile
public override void Update() public override void Update()
{ {
// TODO: Find a clean way to update the parent profile model var dataModel = (OverlayProfileDataModel) DataModel;
((OverlayProfileDataModel) DataModel).GeneralDataModel =
(GeneralProfileDataModel) _generalProfileModel.DataModel; if (!_generalProfileModule.IsInitialized)
_generalProfileModule.Update();
dataModel.GeneralDataModel = (GeneralProfileDataModel) _generalProfileModule.DataModel;
} }
} }
} }

View File

@ -32,7 +32,6 @@ namespace Artemis.Profiles.Layers.Types.Audio.AudioCapturing
_volumeIndex = 0; _volumeIndex = 0;
_volumeTimer = new Timer(200); _volumeTimer = new Timer(200);
_volumeTimer.Elapsed += VolumeTimerOnElapsed; _volumeTimer.Elapsed += VolumeTimerOnElapsed;
Start(); Start();
} }