diff --git a/Lib.Audio/Device.cs b/Lib.Audio/Device.cs index f288ea5..881ec67 100644 --- a/Lib.Audio/Device.cs +++ b/Lib.Audio/Device.cs @@ -36,13 +36,16 @@ namespace Lib.Audio public List Channels { get; } public void StartCommunication(bool useMidiView) => _midiCommunication.Open(useMidiView); + public void StopCommunication() => _midiCommunication.Close(); private List InitializeChannels(IControllableCollector controllableCollector) => _driver.Channels == null ? new List() : _driver.Channels.Select(c => _channelFactory.Create(c, controllableCollector, _midiCommunication)).ToList(); private void OnMidiCommunicationMessageReceived(object? sender, IMidiMessage message) { - Channels[message.ChannelNumber - 1].HandleMessage(message); - Channels[message.ChannelNumber - 1].SendAcknowledge(); + IChannel channel = Channels.First(c => c.ChannelNumber == message.ChannelNumber); + + channel.HandleMessage(message); + channel.SendAcknowledge(); } private void OnMidiCommunicationErrorReceived(object? sender, IMidiMessage message) => diff --git a/Lib.Audio/Interfaces/IDevice.cs b/Lib.Audio/Interfaces/IDevice.cs index f815414..50f67f7 100644 --- a/Lib.Audio/Interfaces/IDevice.cs +++ b/Lib.Audio/Interfaces/IDevice.cs @@ -13,5 +13,6 @@ namespace Lib.Audio.Interfaces List Channels { get; } void StartCommunication(bool useMidiView); + void StopCommunication(); } } \ No newline at end of file