From 2e8984bb3432eb7ae7db98875fb8fbdd7f01d354 Mon Sep 17 00:00:00 2001 From: Simon G Date: Fri, 9 Apr 2021 13:43:36 +0200 Subject: [PATCH] - move messages and add new ones --- Lib.Midi/Interfaces/IMidiCommunication.cs | 1 + Lib.Midi/Messages/ControlChangeMessage.cs | 16 ++++++ .../Factories/IMidiMessageFactory.cs | 4 +- .../Messages/Factories/MidiMessageFactory.cs | 54 +++++++++++++++++++ .../{ => Messages}/Interfaces/IMidiMessage.cs | 3 +- Lib.Midi/Messages/MidiMessage.cs | 26 +++++++++ Lib.Midi/Messages/NoteOnMessage.cs | 17 ++++++ Lib.Midi/Messages/PitchWheelChangeMessage.cs | 24 +++++++++ Lib.Midi/MidiCommunication.cs | 3 +- Lib.Midi/MidiMessage.cs | 19 ------- Mystify/Installers/MidiInstaller.cs | 4 +- 11 files changed, 146 insertions(+), 25 deletions(-) create mode 100644 Lib.Midi/Messages/ControlChangeMessage.cs rename Lib.Midi/{ => Messages}/Factories/IMidiMessageFactory.cs (77%) create mode 100644 Lib.Midi/Messages/Factories/MidiMessageFactory.cs rename Lib.Midi/{ => Messages}/Interfaces/IMidiMessage.cs (70%) create mode 100644 Lib.Midi/Messages/MidiMessage.cs create mode 100644 Lib.Midi/Messages/NoteOnMessage.cs create mode 100644 Lib.Midi/Messages/PitchWheelChangeMessage.cs delete mode 100644 Lib.Midi/MidiMessage.cs diff --git a/Lib.Midi/Interfaces/IMidiCommunication.cs b/Lib.Midi/Interfaces/IMidiCommunication.cs index a3cc630..eaf6990 100644 --- a/Lib.Midi/Interfaces/IMidiCommunication.cs +++ b/Lib.Midi/Interfaces/IMidiCommunication.cs @@ -3,6 +3,7 @@ // Copyright(c) 2021 SimonG. All Rights Reserved. using System; +using Lib.Midi.Messages.Interfaces; namespace Lib.Midi.Interfaces { diff --git a/Lib.Midi/Messages/ControlChangeMessage.cs b/Lib.Midi/Messages/ControlChangeMessage.cs new file mode 100644 index 0000000..254f6ec --- /dev/null +++ b/Lib.Midi/Messages/ControlChangeMessage.cs @@ -0,0 +1,16 @@ +// Author: Gockner, Simon +// Created: 2021-04-09 +// Copyright(c) 2021 SimonG. All Rights Reserved. + +using NAudio.Midi; + +namespace Lib.Midi.Messages +{ + public class ControlChangeMessage : MidiMessage + { + public ControlChangeMessage(long absolutTime, int channelNumber, int value) + { + ControlChangeEvent controlChangeEvent = new(absolutTime, channelNumber, (MidiController) 16, value); + } + } +} \ No newline at end of file diff --git a/Lib.Midi/Factories/IMidiMessageFactory.cs b/Lib.Midi/Messages/Factories/IMidiMessageFactory.cs similarity index 77% rename from Lib.Midi/Factories/IMidiMessageFactory.cs rename to Lib.Midi/Messages/Factories/IMidiMessageFactory.cs index e1d3c22..869d305 100644 --- a/Lib.Midi/Factories/IMidiMessageFactory.cs +++ b/Lib.Midi/Messages/Factories/IMidiMessageFactory.cs @@ -2,10 +2,10 @@ // Created: 2021-04-09 // Copyright(c) 2021 SimonG. All Rights Reserved. -using Lib.Midi.Interfaces; +using Lib.Midi.Messages.Interfaces; using NAudio.Midi; -namespace Lib.Midi.Factories +namespace Lib.Midi.Messages.Factories { public interface IMidiMessageFactory { diff --git a/Lib.Midi/Messages/Factories/MidiMessageFactory.cs b/Lib.Midi/Messages/Factories/MidiMessageFactory.cs new file mode 100644 index 0000000..d25dd91 --- /dev/null +++ b/Lib.Midi/Messages/Factories/MidiMessageFactory.cs @@ -0,0 +1,54 @@ +// Author: Gockner, Simon +// Created: 2021-04-09 +// Copyright(c) 2021 SimonG. All Rights Reserved. + +using System; +using Lib.Midi.Messages.Interfaces; +using NAudio.Midi; + +namespace Lib.Midi.Messages.Factories +{ + public class MidiMessageFactory : IMidiMessageFactory + { + public IMidiMessage Create(MidiInMessageEventArgs midiInMessageEventArgs) + { + switch (midiInMessageEventArgs.MidiEvent.CommandCode) + { + case MidiCommandCode.NoteOff: + break; + case MidiCommandCode.NoteOn: + break; + case MidiCommandCode.KeyAfterTouch: + break; + case MidiCommandCode.ControlChange: + break; + case MidiCommandCode.PatchChange: + break; + case MidiCommandCode.ChannelAfterTouch: + break; + case MidiCommandCode.PitchWheelChange: + return new PitchWheelChangeMessage(midiInMessageEventArgs); + case MidiCommandCode.Sysex: + break; + case MidiCommandCode.Eox: + break; + case MidiCommandCode.TimingClock: + break; + case MidiCommandCode.StartSequence: + break; + case MidiCommandCode.ContinueSequence: + break; + case MidiCommandCode.StopSequence: + break; + case MidiCommandCode.AutoSensing: + break; + case MidiCommandCode.MetaEvent: + break; + default: + throw new ArgumentOutOfRangeException(); + } + + return null; + } + } +} \ No newline at end of file diff --git a/Lib.Midi/Interfaces/IMidiMessage.cs b/Lib.Midi/Messages/Interfaces/IMidiMessage.cs similarity index 70% rename from Lib.Midi/Interfaces/IMidiMessage.cs rename to Lib.Midi/Messages/Interfaces/IMidiMessage.cs index 9360fe5..3569f25 100644 --- a/Lib.Midi/Interfaces/IMidiMessage.cs +++ b/Lib.Midi/Messages/Interfaces/IMidiMessage.cs @@ -2,10 +2,11 @@ // Created: 2021-04-09 // Copyright(c) 2021 SimonG. All Rights Reserved. -namespace Lib.Midi.Interfaces +namespace Lib.Midi.Messages.Interfaces { public interface IMidiMessage { + int ChannelNumber { get; } int RawMessage { get; } } } \ No newline at end of file diff --git a/Lib.Midi/Messages/MidiMessage.cs b/Lib.Midi/Messages/MidiMessage.cs new file mode 100644 index 0000000..5955188 --- /dev/null +++ b/Lib.Midi/Messages/MidiMessage.cs @@ -0,0 +1,26 @@ +// Author: Gockner, Simon +// Created: 2021-04-09 +// Copyright(c) 2021 SimonG. All Rights Reserved. + +using Lib.Midi.Messages.Interfaces; +using NAudio.Midi; + +namespace Lib.Midi.Messages +{ + public abstract class MidiMessage : IMidiMessage + { + protected MidiMessage(MidiInMessageEventArgs midiInMessageEventArgs) + { + ChannelNumber = midiInMessageEventArgs.MidiEvent.Channel; + RawMessage = midiInMessageEventArgs.RawMessage; + } + + protected MidiMessage() + { + + } + + public int ChannelNumber { get; protected init; } + public int RawMessage { get; protected init; } + } +} \ No newline at end of file diff --git a/Lib.Midi/Messages/NoteOnMessage.cs b/Lib.Midi/Messages/NoteOnMessage.cs new file mode 100644 index 0000000..c08b66e --- /dev/null +++ b/Lib.Midi/Messages/NoteOnMessage.cs @@ -0,0 +1,17 @@ +// Author: Gockner, Simon +// Created: 2021-04-09 +// Copyright(c) 2021 SimonG. All Rights Reserved. + +using NAudio.Midi; + +namespace Lib.Midi.Messages +{ + public class NoteOnMessage : MidiMessage + { + public NoteOnMessage(MidiInMessageEventArgs midiInMessageEventArgs) + : base(midiInMessageEventArgs) + { + + } + } +} \ No newline at end of file diff --git a/Lib.Midi/Messages/PitchWheelChangeMessage.cs b/Lib.Midi/Messages/PitchWheelChangeMessage.cs new file mode 100644 index 0000000..cceb2d2 --- /dev/null +++ b/Lib.Midi/Messages/PitchWheelChangeMessage.cs @@ -0,0 +1,24 @@ +// Author: Gockner, Simon +// Created: 2021-04-09 +// Copyright(c) 2021 SimonG. All Rights Reserved. + +using NAudio.Midi; + +namespace Lib.Midi.Messages +{ + public class PitchWheelChangeMessage : MidiMessage + { + public PitchWheelChangeMessage(MidiInMessageEventArgs midiInMessageEventArgs) + : base(midiInMessageEventArgs) + { + + } + + public PitchWheelChangeMessage(long absoluteTime, int channelNumber, int pitch) + { + PitchWheelChangeEvent pitchWheelChangeEvent = new(absoluteTime, channelNumber, pitch); + ChannelNumber = channelNumber; + RawMessage = pitchWheelChangeEvent.GetAsShortMessage(); + } + } +} \ No newline at end of file diff --git a/Lib.Midi/MidiCommunication.cs b/Lib.Midi/MidiCommunication.cs index f9d175c..50209dd 100644 --- a/Lib.Midi/MidiCommunication.cs +++ b/Lib.Midi/MidiCommunication.cs @@ -3,8 +3,9 @@ // Copyright(c) 2021 SimonG. All Rights Reserved. using System; -using Lib.Midi.Factories; using Lib.Midi.Interfaces; +using Lib.Midi.Messages.Factories; +using Lib.Midi.Messages.Interfaces; using NAudio.Midi; namespace Lib.Midi diff --git a/Lib.Midi/MidiMessage.cs b/Lib.Midi/MidiMessage.cs deleted file mode 100644 index 37c22a2..0000000 --- a/Lib.Midi/MidiMessage.cs +++ /dev/null @@ -1,19 +0,0 @@ -// Author: Gockner, Simon -// Created: 2021-04-09 -// Copyright(c) 2021 SimonG. All Rights Reserved. - -using Lib.Midi.Interfaces; -using NAudio.Midi; - -namespace Lib.Midi -{ - public class MidiMessage : IMidiMessage - { - public MidiMessage(MidiInMessageEventArgs midiInMessageEventArgs) - { - - } - - public int RawMessage { get; } - } -} \ No newline at end of file diff --git a/Mystify/Installers/MidiInstaller.cs b/Mystify/Installers/MidiInstaller.cs index 9fdd2cd..b7c2e65 100644 --- a/Mystify/Installers/MidiInstaller.cs +++ b/Mystify/Installers/MidiInstaller.cs @@ -5,6 +5,7 @@ using Lib.Midi; using Lib.Midi.Factories; using Lib.Midi.Interfaces; +using Lib.Midi.Messages.Factories; using LightweightIocContainer.Interfaces; using LightweightIocContainer.Interfaces.Installers; @@ -15,11 +16,10 @@ namespace Mystify.Installers public void Install(IIocContainer container) { container.Register(); - container.Register(); //factories container.RegisterFactory(); - container.RegisterFactory(); + container.Register(); } } } \ No newline at end of file