|
|
|
|
@ -19,14 +19,17 @@ namespace Lib.Audio |
|
|
|
|
{ |
|
|
|
|
public class Channel : IChannel |
|
|
|
|
{ |
|
|
|
|
private readonly IMidiCommunication _midiCommunication; |
|
|
|
|
private readonly int _channelNumber; |
|
|
|
|
private IMidiMessage? _acknowledgeMessage; |
|
|
|
|
|
|
|
|
|
public Channel(XmlChannel xmlChannel, |
|
|
|
|
IMidiCommunication midiCommunication, |
|
|
|
|
IFaderFactory faderFactory, |
|
|
|
|
IKnobFactory knobFactory, |
|
|
|
|
IButtonFactory buttonFactory) |
|
|
|
|
{ |
|
|
|
|
_midiCommunication = midiCommunication; |
|
|
|
|
_channelNumber = xmlChannel.ChannelNumber; |
|
|
|
|
|
|
|
|
|
if (xmlChannel.Fader != null) |
|
|
|
|
@ -51,7 +54,19 @@ namespace Lib.Audio |
|
|
|
|
public List<IButton>? Buttons { get; } |
|
|
|
|
public IControllable? Controllable { get; private set; } |
|
|
|
|
|
|
|
|
|
public void MapControllable(IControllable controllable) => Controllable = controllable; |
|
|
|
|
public void MapControllable(IControllable controllable) |
|
|
|
|
{ |
|
|
|
|
Controllable = controllable; |
|
|
|
|
|
|
|
|
|
ISelectButton? selectButton = Buttons?.OfType<ISelectButton>().FirstOrDefault(); |
|
|
|
|
IMidiMessage? selectMessage = selectButton?.Select(); |
|
|
|
|
|
|
|
|
|
if (selectMessage != null) |
|
|
|
|
_midiCommunication.Send(selectMessage); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public void HandleMessage(IMidiMessage message) |
|
|
|
|
{ |
|
|
|
|
if (message is NoteOnMessage noteOnMessage) |
|
|
|
|
@ -84,12 +99,12 @@ namespace Lib.Audio |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public void SendAcknowledge(IMidiCommunication midiCommunication) |
|
|
|
|
public void SendAcknowledge() |
|
|
|
|
{ |
|
|
|
|
if (_acknowledgeMessage == null) |
|
|
|
|
return; |
|
|
|
|
|
|
|
|
|
midiCommunication.Send(_acknowledgeMessage); |
|
|
|
|
_midiCommunication.Send(_acknowledgeMessage); |
|
|
|
|
_acknowledgeMessage = null; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|