- start implementing channel

master
Simon G 5 years ago
parent 88f3b434b9
commit 64002b3332
  1. 31
      Lib.Audio/Channel.cs
  2. 2
      Lib.Audio/Factories/IChannelFactory.cs
  3. 3
      Lib.Audio/Interfaces/IChannel.cs

@ -3,6 +3,9 @@
// Copyright(c) 2021 SimonG. All Rights Reserved. // Copyright(c) 2021 SimonG. All Rights Reserved.
using System.Collections.Generic; using System.Collections.Generic;
using Lib.Audio.Controls.Buttons.Factories;
using Lib.Audio.Controls.Buttons.Interfaces;
using Lib.Audio.Controls.Factories;
using Lib.Audio.Controls.Interfaces; using Lib.Audio.Controls.Interfaces;
using Lib.Audio.Interfaces; using Lib.Audio.Interfaces;
@ -10,9 +13,35 @@ namespace Lib.Audio
{ {
public class Channel : IChannel public class Channel : IChannel
{ {
public Channel(IDeviceButtonConfiguration buttonConfiguration,
IFaderFactory faderFactory,
IKnobFactory knobFactory,
IButtonFactory buttonFactory)
{
Fader = faderFactory.Create();
Knob = knobFactory.Create();
Buttons = InitializeButtons(buttonConfiguration, buttonFactory);
Fader.PositionChanged += OnFaderPositionChanged;
}
public IFader Fader { get; } public IFader Fader { get; }
public IKnob Knob { get; } public IKnob Knob { get; }
public List<IButton> Buttons { get; } public List<IButton> Buttons { get; }
public IControllable Controllable { get; } public IControllable Controllable { get; private set; }
public void AllocateControllable(IControllable controllable) => Controllable = controllable;
//TODO: fix button handling
private List<IButton> InitializeButtons(IDeviceButtonConfiguration buttonConfiguration, IButtonFactory buttonFactory)
{
List<IButton> buttons = new();
for (int i = 0; i < buttonConfiguration.NumberOfButtons; i++)
buttons.Add(buttonFactory.Create());
return buttons;
}
private void OnFaderPositionChanged(object? sender, float position) => Controllable.SetVolume(position);
} }
} }

@ -8,6 +8,6 @@ namespace Lib.Audio.Factories
{ {
public interface IChannelFactory public interface IChannelFactory
{ {
IChannel Create(); IChannel Create(IDeviceButtonConfiguration deviceButtonConfiguration);
} }
} }

@ -3,6 +3,7 @@
// Copyright(c) 2021 SimonG. All Rights Reserved. // Copyright(c) 2021 SimonG. All Rights Reserved.
using System.Collections.Generic; using System.Collections.Generic;
using Lib.Audio.Controls.Buttons.Interfaces;
using Lib.Audio.Controls.Interfaces; using Lib.Audio.Controls.Interfaces;
namespace Lib.Audio.Interfaces namespace Lib.Audio.Interfaces
@ -14,5 +15,7 @@ namespace Lib.Audio.Interfaces
List<IButton> Buttons { get; } List<IButton> Buttons { get; }
IControllable Controllable { get; } IControllable Controllable { get; }
void AllocateControllable(IControllable controllable);
} }
} }
Loading…
Cancel
Save