2016-03-05 80 views
0

我正在构建自己的自定义MIDI映射应用程序,迄今为止这么好。我一直在使用nAudio来接收MIDI信息,它的功能就像一个魅力。C#/ nAudio - 向控制器发送MIDI消息

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

enter image description here

但是,它不工作。我根本没有收到任何错误消息,但没有任何照明。我正在发送的

实施例:

midiOut = new MidiOut(MIDIInDevice); 
midiOut.Send(MidiMessage.StartNote(56, 1, 0).RawData); 

56是笔记,1体积和0的信道。

任何想法我做错了什么?

+0

'MIDIInDevice'是输出设备吗? –

+0

是的,它与我从 – ThomQ

+0

获得输入的位置相同,您说kk是按钮编号。那么90kk 7F是什么意思?此消息来自哪里? –

回答

0

您发布的页面说明灯光是通过“注意事项”消息进行控制的。我不熟悉C#库,但我猜StopNote发送一个注释关闭消息。尝试使用发送Note On消息的等效项。 (或许StartNote?)

+0

监督我简化代码。我已经尝试过StartNote,但遗憾的是无济于事。感谢您指出,但我会编辑 – ThomQ

+1

在这种情况下,您的消息看起来是正确的。接下来我要做的是检查设备是否接收到您认为正在发送的内容。在OS X上,我会使用[MIDIMonitor](https://www.snoize.com/MIDIMonitor/)查看从我的程序中传出的MIDI命令。希望Windows有这样的东西。 – SSteve

+0

只记得我在21世纪初使用过[MIDI-OX](http://www.midiox.com)。看起来它自Vista以来没有更新过,但它可能仍然有效。 – SSteve

0

选择正确的频道并尝试发送注意事项事件。

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