private void InputDeviceOnNrpn(NrpnMessage msg) { _nrpnMessages.AddOrUpdate(new NrpnKey(msg), key => new NrpnMessageHolder(msg), (key, holder) => { holder.SetMessage(msg); return(holder); }); }
public void Should_Not_Recognize_NRPN_Message_If_Different_Channels() { for (var i = 1; i < 4; i++) { // Setup var msgs = ControlChangeMessages(Channel.Channel1, ControlFunction.NonRegisteredParameterNumberMSB, ControlFunction.NonRegisteredParameterNumberLSB, ControlFunction.DataEntryMSB, ControlFunction.LSBForControl6DataEntry); msgs[i] = new ControlChangeMessage(Channel.Channel2, msgs[i].Control, msgs[i].Value); // Test Assert.False(NrpnMessage.IsExpectedControls(msgs)); } }
public void Should_Recognize_NRPN_Message_Including_Partials() { Assert.True(NrpnMessage.IsExpectedControls(ControlChangeMessages(Channel.Channel1, ControlFunction.NonRegisteredParameterNumberMSB))); Assert.True(NrpnMessage.IsExpectedControls(ControlChangeMessages(Channel.Channel1, ControlFunction.NonRegisteredParameterNumberMSB, ControlFunction.NonRegisteredParameterNumberLSB))); Assert.True(NrpnMessage.IsExpectedControls(ControlChangeMessages(Channel.Channel1, ControlFunction.NonRegisteredParameterNumberMSB, ControlFunction.NonRegisteredParameterNumberLSB, ControlFunction.DataEntryMSB))); Assert.True(NrpnMessage.IsExpectedControls(ControlChangeMessages(Channel.Channel1, ControlFunction.NonRegisteredParameterNumberMSB, ControlFunction.NonRegisteredParameterNumberLSB, ControlFunction.DataEntryMSB, ControlFunction.LSBForControl6DataEntry))); }
private void SendNrpn() { var nrpn = _device.Nrpn; if (nrpn != null) { var firstMsg = _messageQueue.Peek(); var parameter = DequeueInt14(); var value = DequeueInt14(); var msg = new NrpnMessage(_device, firstMsg.Channel, parameter.Value, value.Value, firstMsg.Time); nrpn(msg); } else { _messageQueue.Clear(); } // Stop queueing messages _queueMessages = false; }
public NrpnKey(NrpnMessage msg) : this(msg.Channel, msg.Parameter) { }