naudio Midi 输入 - 将 e.MidiEvent 过滤为仅 data2 参数?

Posted

技术标签:

【中文标题】naudio Midi 输入 - 将 e.MidiEvent 过滤为仅 data2 参数?【英文标题】:naudio Midi input - filter e.MidiEvent to just data2 parameter? 【发布时间】:2017-03-29 02:34:15 【问题描述】:

使用 naudio 编写一个接受 MIDI 输入的应用程序。设法让 midi 输入正常输出到控制台,但要使用数据,我需要能够隔离部分数据。我的代码是

    void midiIn_MessageReceived(object sender, MidiInMessageEventArgs e)
    
        Console.WriteLine(e.MidiEvent);
    

将以下行写入控制台。

0 ControlChange Ch: 1 Controller 48 Value 51

这很好,但是我如何只获取 data2(值)然后传递给某些东西?我可以做一些可怕的事情,比如把它切成一个字符串,但这可能不是前进的方向......

【问题讨论】:

【参考方案1】:

你必须从消息信息中获取 MIDI 消息:

void midiIn_MessageReceived(object sender, MidiInMessageEventArgs e)

    MidiEvent me = e.MidiEvent;

然后你必须检查正确的消息类型:

    ControlChangeEvent cce = me as ControlChangeEvent;
    if (cce != null) 

并处理它:

        Console.WriteLine(cce.ControllerValue);
    

【讨论】:

耶!就是那个。干杯:)

以上是关于naudio Midi 输入 - 将 e.MidiEvent 过滤为仅 data2 参数?的主要内容,如果未能解决你的问题,请参考以下文章

使用 NAudio 在 MIDI 文件中设置 MIDI 速度

NAudio.Midi 延迟与 MidiIn

NAudio - 从 Stream 播放 MIDI

无法使用 NAudio.Midi 播放音符

如何使用 NAudio 读取 MIDI 音符?

NAudio 和 Midi 文件读取