如何将MIDI从Unity发送到外部VST

时间:2018-08-22 17:36:00

标签: c# unity3d midi vst

my failed attempt to run a VST instrument from inside Unity开始,我的新方法是将Midi消息从Unity发送到外部主机。

为此,我一直在尝试遵循this approach

  1. 安装loopMIDI(http://www.tobias-erichsen.de/software/loopmidi.html
  2. 在loopMIDI中创建虚拟MIDI端口
  3. 下载Sanford C#MIDI工具包http://www.codeproject.com/Articles/6228/C-MIDI-Toolkit
  4. 在项目中添加对MIDI工具包的引用
  5. 写一些代码,即:

    private OutputDevice outDevice = null;
    
    private void MIDITest()
    {
        int devices = OutputDevice.DeviceCount;
    
        if (devices == 0)
        {
            MessageBox.Show("No MIDI output devices available.", "Warning!", MessageBoxButtons.OK, MessageBoxIcon.Warning);
            return;
        }
    
        if (outDevice != null)
        {
            outDevice.Close();
        }
    
        outDevice = new OutputDevice(0);    // Change this for other MIDI devices
        outDevice.Error += inDevice_Error;
        outDevice.Reset();
    
        // Send a Note On
        ChannelMessage cm = new ChannelMessage(ChannelCommand.NoteOn, 0, 60, 127);
        outDevice.Send(cm);
    }
    

我已经设法完成所有这些步骤,但是,我仍然无法检测到来自Unity的任何midi消息。我尝试安装Midi Ox来监视Midi信号,但是尽管我的所有Unity代码都运行良好,但它似乎没有显示我的虚拟Midi端口,并且似乎没有Midi活动。 Unity游戏实际上正在播放我已加载的midi文件,所以我知道我的Unity代码运行正常,只是似乎无法正确配置虚拟midi端口。

有人知道我在做什么错吗?谢谢!

0 个答案:

没有答案