From 555a37ee904a5ebcc5e0af7daae13b16b62fdbdf Mon Sep 17 00:00:00 2001 From: Simon G Date: Sat, 10 Apr 2021 21:44:10 +0200 Subject: [PATCH] - remove raw message from ctor --- Lib.Midi/Messages/ControlChangeMessage.cs | 3 ++- .../Messages/Factories/IMidiMessageFactory.cs | 2 +- .../Messages/Factories/MidiMessageFactory.cs | 14 +++++++------- Lib.Midi/Messages/MidiMessage.cs | 17 +++++------------ Lib.Midi/Messages/NoteMessage.cs | 11 +++++++---- Lib.Midi/Messages/NoteOnMessage.cs | 14 ++++++-------- Lib.Midi/Messages/PitchWheelChangeMessage.cs | 18 ++++++++++-------- Lib.Midi/MidiCommunication.cs | 4 ++-- 8 files changed, 40 insertions(+), 43 deletions(-) diff --git a/Lib.Midi/Messages/ControlChangeMessage.cs b/Lib.Midi/Messages/ControlChangeMessage.cs index 254f6ec..d5c45bb 100644 --- a/Lib.Midi/Messages/ControlChangeMessage.cs +++ b/Lib.Midi/Messages/ControlChangeMessage.cs @@ -9,8 +9,9 @@ namespace Lib.Midi.Messages public class ControlChangeMessage : MidiMessage { public ControlChangeMessage(long absolutTime, int channelNumber, int value) + : base(new ControlChangeEvent(absolutTime, channelNumber, (MidiController) 16, value)) { - ControlChangeEvent controlChangeEvent = new(absolutTime, channelNumber, (MidiController) 16, value); + } } } \ No newline at end of file diff --git a/Lib.Midi/Messages/Factories/IMidiMessageFactory.cs b/Lib.Midi/Messages/Factories/IMidiMessageFactory.cs index 869d305..dae25e0 100644 --- a/Lib.Midi/Messages/Factories/IMidiMessageFactory.cs +++ b/Lib.Midi/Messages/Factories/IMidiMessageFactory.cs @@ -9,6 +9,6 @@ namespace Lib.Midi.Messages.Factories { public interface IMidiMessageFactory { - IMidiMessage Create(MidiInMessageEventArgs midiInMessageEventArgs); + IMidiMessage Create(MidiEvent midiEvent); } } \ No newline at end of file diff --git a/Lib.Midi/Messages/Factories/MidiMessageFactory.cs b/Lib.Midi/Messages/Factories/MidiMessageFactory.cs index b7510c2..62c2beb 100644 --- a/Lib.Midi/Messages/Factories/MidiMessageFactory.cs +++ b/Lib.Midi/Messages/Factories/MidiMessageFactory.cs @@ -9,14 +9,14 @@ namespace Lib.Midi.Messages.Factories { public class MidiMessageFactory : IMidiMessageFactory { - public IMidiMessage Create(MidiInMessageEventArgs midiInMessageEventArgs) + public IMidiMessage Create(MidiEvent midiEvent) { - if (midiInMessageEventArgs.MidiEvent is PitchWheelChangeEvent pitchWheelChangeEvent) - return new PitchWheelChangeMessage(pitchWheelChangeEvent, midiInMessageEventArgs.RawMessage); - else if (midiInMessageEventArgs.MidiEvent is NoteOnEvent noteOnEvent) - return new NoteOnMessage(noteOnEvent, midiInMessageEventArgs.RawMessage); - else if (midiInMessageEventArgs.MidiEvent is NoteEvent noteEvent) - return new NoteMessage(noteEvent, midiInMessageEventArgs.RawMessage); + if (midiEvent is PitchWheelChangeEvent pitchWheelChangeEvent) + return new PitchWheelChangeMessage(pitchWheelChangeEvent); + else if (midiEvent is NoteOnEvent noteOnEvent) + return new NoteOnMessage(noteOnEvent); + else if (midiEvent is NoteEvent noteEvent) + return new NoteMessage(noteEvent); return null; } diff --git a/Lib.Midi/Messages/MidiMessage.cs b/Lib.Midi/Messages/MidiMessage.cs index 83e6ae9..e468f22 100644 --- a/Lib.Midi/Messages/MidiMessage.cs +++ b/Lib.Midi/Messages/MidiMessage.cs @@ -9,18 +9,11 @@ namespace Lib.Midi.Messages { public abstract class MidiMessage : IMidiMessage { - protected MidiMessage(MidiEvent midiEvent, int rawMessage) - { - ChannelNumber = midiEvent.Channel; - RawMessage = rawMessage; - } + protected readonly MidiEvent _midiEvent; + + protected MidiMessage(MidiEvent midiEvent) => _midiEvent = midiEvent; - protected MidiMessage() - { - - } - - public int ChannelNumber { get; protected init; } - public int RawMessage { get; protected init; } + public int ChannelNumber => _midiEvent.Channel; + public int RawMessage => _midiEvent.GetAsShortMessage(); } } \ No newline at end of file diff --git a/Lib.Midi/Messages/NoteMessage.cs b/Lib.Midi/Messages/NoteMessage.cs index 71159d0..924963f 100644 --- a/Lib.Midi/Messages/NoteMessage.cs +++ b/Lib.Midi/Messages/NoteMessage.cs @@ -8,10 +8,13 @@ namespace Lib.Midi.Messages { public class NoteMessage : MidiMessage { - public NoteMessage(NoteEvent noteEvent, int rawMessage) - : base(noteEvent, rawMessage) => - NoteNumber = noteEvent.NoteNumber; + public NoteMessage(NoteEvent noteEvent) + : base(noteEvent) + { + + } - public int NoteNumber { get; } + private NoteEvent NoteEvent => (NoteEvent) _midiEvent; + public int NoteNumber => NoteEvent.NoteNumber; } } \ No newline at end of file diff --git a/Lib.Midi/Messages/NoteOnMessage.cs b/Lib.Midi/Messages/NoteOnMessage.cs index a60c386..34e6a38 100644 --- a/Lib.Midi/Messages/NoteOnMessage.cs +++ b/Lib.Midi/Messages/NoteOnMessage.cs @@ -8,15 +8,13 @@ namespace Lib.Midi.Messages { public class NoteOnMessage : MidiMessage { - public NoteOnMessage(NoteOnEvent noteOnEvent, int rawMessage) - : base(noteOnEvent, rawMessage) => - NoteNumber = noteOnEvent.NoteNumber; - - public NoteOnMessage() + public NoteOnMessage(NoteOnEvent noteOnEvent) + : base(noteOnEvent) { - // NoteOnEvent noteOnEvent = new NoteOnEvent() + } - - public int NoteNumber { get; } + + private NoteOnEvent NoteOnEvent => (NoteOnEvent) _midiEvent; + public int NoteNumber => NoteOnEvent.NoteNumber; } } \ No newline at end of file diff --git a/Lib.Midi/Messages/PitchWheelChangeMessage.cs b/Lib.Midi/Messages/PitchWheelChangeMessage.cs index 6e75d9b..e247314 100644 --- a/Lib.Midi/Messages/PitchWheelChangeMessage.cs +++ b/Lib.Midi/Messages/PitchWheelChangeMessage.cs @@ -8,17 +8,19 @@ namespace Lib.Midi.Messages { public class PitchWheelChangeMessage : MidiMessage { - public PitchWheelChangeMessage(PitchWheelChangeEvent pitchWheelChangeEvent, int rawMessage) - : base(pitchWheelChangeEvent, rawMessage) => - Pitch = pitchWheelChangeEvent.Pitch; + public PitchWheelChangeMessage(PitchWheelChangeEvent pitchWheelChangeEvent) + : base(pitchWheelChangeEvent) + { + + } public PitchWheelChangeMessage(long absoluteTime, int channelNumber, int pitch) + : base(new PitchWheelChangeEvent(absoluteTime, channelNumber, pitch)) { - PitchWheelChangeEvent pitchWheelChangeEvent = new(absoluteTime, channelNumber, pitch); - ChannelNumber = channelNumber; - RawMessage = pitchWheelChangeEvent.GetAsShortMessage(); + } - - public int Pitch { get; } + + private PitchWheelChangeEvent PitchWheelChangeEvent => (PitchWheelChangeEvent) _midiEvent; + public int Pitch => PitchWheelChangeEvent.Pitch; } } \ No newline at end of file diff --git a/Lib.Midi/MidiCommunication.cs b/Lib.Midi/MidiCommunication.cs index d3cdc0e..295e3d9 100644 --- a/Lib.Midi/MidiCommunication.cs +++ b/Lib.Midi/MidiCommunication.cs @@ -75,8 +75,8 @@ namespace Lib.Midi } public void Send(IMidiMessage message) => _midiOut?.Send(message.RawMessage); - private void OnMidiInMessageReceived(object? sender, MidiInMessageEventArgs args) => MessageReceived?.Invoke(this, _midiMessageFactory.Create(args)); - private void OnMidiInErrorReceived(object? sender, MidiInMessageEventArgs args) => ErrorReceived?.Invoke(this, _midiMessageFactory.Create(args)); + private void OnMidiInMessageReceived(object? sender, MidiInMessageEventArgs args) => MessageReceived?.Invoke(this, _midiMessageFactory.Create(args.MidiEvent)); + private void OnMidiInErrorReceived(object? sender, MidiInMessageEventArgs args) => ErrorReceived?.Invoke(this, _midiMessageFactory.Create(args.MidiEvent)); public event EventHandler? MessageReceived; public event EventHandler? ErrorReceived;