- add more messages

- change base ctor
master
Simon G 5 years ago
parent 348883a4d3
commit bce47735c5
  1. 42
      Lib.Midi/Messages/Factories/MidiMessageFactory.cs
  2. 6
      Lib.Midi/Messages/MidiMessage.cs
  3. 17
      Lib.Midi/Messages/NoteMessage.cs
  4. 11
      Lib.Midi/Messages/NoteOnMessage.cs
  5. 10
      Lib.Midi/Messages/PitchWheelChangeMessage.cs

@ -2,7 +2,6 @@
// Created: 2021-04-09 // Created: 2021-04-09
// Copyright(c) 2021 SimonG. All Rights Reserved. // Copyright(c) 2021 SimonG. All Rights Reserved.
using System;
using Lib.Midi.Messages.Interfaces; using Lib.Midi.Messages.Interfaces;
using NAudio.Midi; using NAudio.Midi;
@ -12,41 +11,12 @@ namespace Lib.Midi.Messages.Factories
{ {
public IMidiMessage Create(MidiInMessageEventArgs midiInMessageEventArgs) public IMidiMessage Create(MidiInMessageEventArgs midiInMessageEventArgs)
{ {
switch (midiInMessageEventArgs.MidiEvent.CommandCode) if (midiInMessageEventArgs.MidiEvent is PitchWheelChangeEvent pitchWheelChangeEvent)
{ return new PitchWheelChangeMessage(pitchWheelChangeEvent, midiInMessageEventArgs.RawMessage);
case MidiCommandCode.NoteOff: else if (midiInMessageEventArgs.MidiEvent is NoteOnEvent noteOnEvent)
break; return new NoteOnMessage(noteOnEvent, midiInMessageEventArgs.RawMessage);
case MidiCommandCode.NoteOn: else if (midiInMessageEventArgs.MidiEvent is NoteEvent noteEvent)
break; return new NoteMessage(noteEvent, midiInMessageEventArgs.RawMessage);
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; return null;
} }

@ -9,10 +9,10 @@ namespace Lib.Midi.Messages
{ {
public abstract class MidiMessage : IMidiMessage public abstract class MidiMessage : IMidiMessage
{ {
protected MidiMessage(MidiInMessageEventArgs midiInMessageEventArgs) protected MidiMessage(MidiEvent midiEvent, int rawMessage)
{ {
ChannelNumber = midiInMessageEventArgs.MidiEvent.Channel; ChannelNumber = midiEvent.Channel;
RawMessage = midiInMessageEventArgs.RawMessage; RawMessage = rawMessage;
} }
protected MidiMessage() protected MidiMessage()

@ -0,0 +1,17 @@
// Author: Simon Gockner
// Created: 2021-04-10
// Copyright(c) 2021 SimonG. All Rights Reserved.
using NAudio.Midi;
namespace Lib.Midi.Messages
{
public class NoteMessage : MidiMessage
{
public NoteMessage(NoteEvent noteEvent, int rawMessage)
: base(noteEvent, rawMessage) =>
NoteNumber = noteEvent.NoteNumber;
public int NoteNumber { get; }
}
}

@ -8,10 +8,15 @@ namespace Lib.Midi.Messages
{ {
public class NoteOnMessage : MidiMessage public class NoteOnMessage : MidiMessage
{ {
public NoteOnMessage(MidiInMessageEventArgs midiInMessageEventArgs) public NoteOnMessage(NoteOnEvent noteOnEvent, int rawMessage)
: base(midiInMessageEventArgs) : base(noteOnEvent, rawMessage) =>
NoteNumber = noteOnEvent.NoteNumber;
public NoteOnMessage()
{ {
// NoteOnEvent noteOnEvent = new NoteOnEvent()
} }
public int NoteNumber { get; }
} }
} }

@ -8,11 +8,9 @@ namespace Lib.Midi.Messages
{ {
public class PitchWheelChangeMessage : MidiMessage public class PitchWheelChangeMessage : MidiMessage
{ {
public PitchWheelChangeMessage(MidiInMessageEventArgs midiInMessageEventArgs) public PitchWheelChangeMessage(PitchWheelChangeEvent pitchWheelChangeEvent, int rawMessage)
: base(midiInMessageEventArgs) : base(pitchWheelChangeEvent, rawMessage) =>
{ Pitch = pitchWheelChangeEvent.Pitch;
}
public PitchWheelChangeMessage(long absoluteTime, int channelNumber, int pitch) public PitchWheelChangeMessage(long absoluteTime, int channelNumber, int pitch)
{ {
@ -20,5 +18,7 @@ namespace Lib.Midi.Messages
ChannelNumber = channelNumber; ChannelNumber = channelNumber;
RawMessage = pitchWheelChangeEvent.GetAsShortMessage(); RawMessage = pitchWheelChangeEvent.GetAsShortMessage();
} }
public int Pitch { get; }
} }
} }
Loading…
Cancel
Save