mirror of
https://github.com/Artemis-RGB/Artemis
synced 2025-12-31 01:42:02 +00:00
Further audio improvements, needs some trimming on CPU-usage
This commit is contained in:
parent
e5f1a940de
commit
6f3d00c8d4
@ -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());
|
||||||
|
|||||||
@ -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));
|
||||||
|
|||||||
@ -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;
|
||||||
|
|||||||
@ -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();
|
||||||
}
|
}
|
||||||
|
|||||||
@ -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++)
|
||||||
{
|
{
|
||||||
|
|||||||
@ -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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -32,10 +32,9 @@ 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();
|
||||||
}
|
}
|
||||||
|
|
||||||
public ILogger Logger { get; }
|
public ILogger Logger { get; }
|
||||||
public MMDevice Device { get; }
|
public MMDevice Device { get; }
|
||||||
public double DesiredAverage { get; set; }
|
public double DesiredAverage { get; set; }
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user