C#/nAudio-向控制器发送MIDI消息

C#/nAudio-向控制器发送MIDI消息,c#,midi,naudio,C#,Midi,Naudio,我正在构建自己的自定义midi映射应用程序,目前为止效果良好。我一直在使用nAudio来接收midi消息,它的工作就像一个符咒 但是当我想寄一些东西回来时,我遇到了一些麻烦。要在我的控制器上启用灯,我必须在消息上发送一条注释:例如,90 kk 01,其中kk等于相应的键。(见下图) 然而,它不起作用。我没有收到任何错误消息,但也没有任何东西亮起 我发送的内容示例: midiOut = new MidiOut(MIDIInDevice); midiOut.Send(MidiMessage.St

我正在构建自己的自定义midi映射应用程序,目前为止效果良好。我一直在使用nAudio来接收midi消息,它的工作就像一个符咒

但是当我想寄一些东西回来时,我遇到了一些麻烦。要在我的控制器上启用灯,我必须在消息上发送一条注释:例如,90 kk 01,其中kk等于相应的键。(见下图)

然而,它不起作用。我没有收到任何错误消息,但也没有任何东西亮起

我发送的内容示例:

midiOut = new MidiOut(MIDIInDevice);
 midiOut.Send(MidiMessage.StartNote(56, 1, 0).RawData);
56是音符,1是音量,0是通道


你知道我做错了什么吗?

你发布的页面上说,灯光是通过留言来控制的。我不熟悉C#library,但我猜
StopNote
会发送一条备忘信息。尝试使用在消息中发送注释的等效项。(可能是
StartNote
?)

选择正确的频道并尝试发送NoteOn事件

var noteOnEvent = new NoteOnEvent(0L, channel, note, 127, 200);
midi.Send(noteOnEvent.GetAsShortMessage());
midi.Send(noteOnEvent.OffEvent.GetAsShortMessage());

MIDINDEVICE
是一个输出设备吗?是的,它和我从中获取输入的设备是同一个设备。你说kk是按钮编号。那么90 kk 7F是什么意思?这条信息是从哪里产生的呢?我的疏忽简化了代码。我已经试过StartNote了,可惜没用。谢谢你指出这一点,不过,我会做编辑在这种情况下,你的消息看起来是正确的。下一步我要做的是检查设备是否接收到您认为正在发送的内容。在OSX上,我用它来查看程序中的MIDI命令。希望Windows也有类似的功能。我记得我在21世纪初使用过。看起来它从Vista开始就没有更新过,但可能仍然可以工作;应该是midiOut=新midiOut(MIDINDEVICE+1),现在它可以完美地工作了