|
|
|
|
@ -20,11 +20,23 @@ namespace Lib.Audio.Controls.Buttons |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public int NoteNumber { get; } |
|
|
|
|
protected bool IsActive { get; private set; } |
|
|
|
|
|
|
|
|
|
public virtual IMidiMessage HandleOn(IControllable? controllable, int velocity) => |
|
|
|
|
new NoteOnMessage(0, _channelNumber, NoteNumber, velocity, 0); |
|
|
|
|
public virtual IMidiMessage? Handle(IControllable? controllable, Velocity velocity) |
|
|
|
|
{ |
|
|
|
|
if (velocity != Velocity.On) |
|
|
|
|
return null; |
|
|
|
|
|
|
|
|
|
IsActive = !IsActive; |
|
|
|
|
Handle(controllable); |
|
|
|
|
|
|
|
|
|
return IsActive ? new NoteOnMessage(0, _channelNumber, NoteNumber, (int) Velocity.On, 0) |
|
|
|
|
: new NoteMessage(0, _channelNumber, NoteNumber, (int) Velocity.Off); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public virtual IMidiMessage HandleOff(IControllable? controllable, int velocity) => |
|
|
|
|
new NoteMessage(0, _channelNumber, NoteNumber, velocity); |
|
|
|
|
protected virtual void Handle(IControllable? controllable) |
|
|
|
|
{ |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |