2016-03-05 46 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());