- pass all control sessions and set them all

master
Simon G 5 years ago
parent b8946ae17f
commit 112b4b68eb
  1. 13
      Lib.Audio/Controllable.cs
  2. 4
      Lib.Audio/ControllableCollector.cs

@ -2,6 +2,7 @@
// Created: 2021-04-07 // Created: 2021-04-07
// Copyright(c) 2021 SimonG. All Rights Reserved. // Copyright(c) 2021 SimonG. All Rights Reserved.
using System.Collections.Generic;
using Lib.Audio.Interfaces; using Lib.Audio.Interfaces;
using NAudio.CoreAudioApi; using NAudio.CoreAudioApi;
@ -9,18 +10,18 @@ namespace Lib.Audio
{ {
public class Controllable : IControllable public class Controllable : IControllable
{ {
private readonly AudioSessionControl _audioSessionControl; private readonly List<AudioSessionControl> _audioSessionControls;
private readonly string _name; private readonly string _name;
public Controllable(AudioSessionControl audioSessionControl, string name) public Controllable(List<AudioSessionControl> audioSessionControls, string name)
{ {
_audioSessionControl = audioSessionControl; _audioSessionControls = audioSessionControls;
_name = name; _name = name;
} }
public void SetVolume(float volume) => _audioSessionControl.SimpleAudioVolume.Volume = volume; public void SetVolume(float volume) => _audioSessionControls.ForEach(c => c.SimpleAudioVolume.Volume = volume);
public void Mute() => _audioSessionControl.SimpleAudioVolume.Mute = true; public void Mute() => _audioSessionControls.ForEach(c => c.SimpleAudioVolume.Mute = true);
public void UnMute() => _audioSessionControl.SimpleAudioVolume.Mute = false; public void UnMute() => _audioSessionControls.ForEach(c => c.SimpleAudioVolume.Mute = false);
public override string ToString() => _name; public override string ToString() => _name;
} }

@ -26,7 +26,7 @@ namespace Lib.Audio
MMDeviceCollection? audioDevices = deviceEnumerator.EnumerateAudioEndPoints(DataFlow.All, DeviceState.Active); MMDeviceCollection? audioDevices = deviceEnumerator.EnumerateAudioEndPoints(DataFlow.All, DeviceState.Active);
List<IControllable> controllables = new(); List<IControllable> controllables = new();
controllables.AddRange(audioDevices.Select(a => _controllableFactory.Create(a.AudioSessionManager.AudioSessionControl, a.FriendlyName))); controllables.AddRange(audioDevices.Select(a => _controllableFactory.Create(a.AudioEndpointVolume, a.FriendlyName)));
Dictionary<string, List<AudioSessionControl>> sessionsById = new(); Dictionary<string, List<AudioSessionControl>> sessionsById = new();
foreach (var audioDevice in audioDevices) foreach (var audioDevice in audioDevices)
@ -63,7 +63,7 @@ namespace Lib.Audio
else else
name = id; name = id;
controllables.Add(_controllableFactory.Create(audioSessionControl, name)); controllables.Add(_controllableFactory.Create(idSessions, name));
} }
return controllables; return controllables;

Loading…
Cancel
Save