private void inputDevice_ChannelMessageReceived(object sender, ChannelMessageEventArgs e)
{
log.Trace("Recv {4} cmd {0}, chn: {1} data1: {2} data2: {3}",
e.Message.Command,
e.Message.MidiChannel,
e.Message.Data1,
e.Message.Data2,
Name);
this.midiMessages.OnNext(e.Message);
try
{
var key = Tuple.Create(e.Message.MidiChannel, e.Message.Command, e.Message.Data1);
Action<ChannelMessage> action;
if (this.messageMapper.TryGetValue(key, out action))
{
action.Invoke(e.Message);
}
}
catch (Exception ex)
{
log.Error(ex, "Failed to invoke action");
}
}