// Author: Gockner, Simon // Created: 2021-04-07 // Copyright(c) 2021 SimonG. All Rights Reserved. using System.Collections.Generic; using Lib.Audio.Factories; using Lib.Audio.Interfaces; using Lib.Midi.Factories; using Lib.Midi.Interfaces; using Lib.Midi.Messages; using Lib.Midi.Messages.Interfaces; namespace Lib.Audio { public class Device : IDevice { private readonly IMidiCommunication _midiCommunication; private readonly IDeviceButtonConfiguration _buttonConfiguration; public Device(IMidiCommunicationFactory midiCommunicationFactory, IChannelFactory channelFactory) { _midiCommunication = midiCommunicationFactory.Create(); _buttonConfiguration = new DeviceButtonConfiguration {HasMuteButton = true, NumberOfButtons = 4}; //FixMe: remove hard coded config Channels = new List(); for (uint i = 0; i < 8; i++) //FixMe: remove hard coded config Channels.Add(channelFactory.Create(i, _buttonConfiguration)); _midiCommunication.MessageReceived += OnMidiCommunicationMessageReceived; _midiCommunication.ErrorReceived += OnMidiCommunicationErrorReceived; } public List Channels { get; } public void StartCommunication() { _midiCommunication.Open(); // _midiCommunication.Send(new PitchWheelChangeMessage(5000, 1, 600)); _midiCommunication.Send(new ControlChangeMessage(0, 1, 127)); } private void OnMidiCommunicationMessageReceived(object? sender, IMidiMessage message) { int i = 0; if (message is PitchWheelChangeMessage) { i = 1; _midiCommunication.Send(message); } } private void OnMidiCommunicationErrorReceived(object? sender, IMidiMessage message) { int i = 0; } } }