diff --git a/Lib.Midi/Messages/ControlChangeMessage.cs b/Lib.Midi/Messages/ControlChangeMessage.cs index d5c45bb..963e63c 100644 --- a/Lib.Midi/Messages/ControlChangeMessage.cs +++ b/Lib.Midi/Messages/ControlChangeMessage.cs @@ -8,10 +8,20 @@ namespace Lib.Midi.Messages { public class ControlChangeMessage : MidiMessage { - public ControlChangeMessage(long absolutTime, int channelNumber, int value) - : base(new ControlChangeEvent(absolutTime, channelNumber, (MidiController) 16, value)) + public ControlChangeMessage(ControlChangeEvent controlChangeEvent) + : base(controlChangeEvent) { } + + public ControlChangeMessage(long absolutTime, int channelNumber, byte controller, int value) + : base(new ControlChangeEvent(absolutTime, channelNumber, (MidiController) controller, value)) + { + + } + + private ControlChangeEvent ControlChangeEvent => (ControlChangeEvent) _midiEvent; + public int Value => ControlChangeEvent.ControllerValue; + public byte Controller => (byte) ControlChangeEvent.Controller; } } \ No newline at end of file diff --git a/Lib.Midi/Messages/Factories/MidiMessageFactory.cs b/Lib.Midi/Messages/Factories/MidiMessageFactory.cs index 62c2beb..154823d 100644 --- a/Lib.Midi/Messages/Factories/MidiMessageFactory.cs +++ b/Lib.Midi/Messages/Factories/MidiMessageFactory.cs @@ -17,6 +17,8 @@ namespace Lib.Midi.Messages.Factories return new NoteOnMessage(noteOnEvent); else if (midiEvent is NoteEvent noteEvent) return new NoteMessage(noteEvent); + else if (midiEvent is ControlChangeEvent controlChangeEvent) + return new ControlChangeMessage(controlChangeEvent); return null; }