Как отправить MIDI из Unity на внешний VST

После моей неудачной попытки запустить VST инструмента из Unity, мой новый подход заключается в отправке миди-сообщений из Unity на внешний хост.

Для этого я пытался следовать этому подходу:

  1. Установите loopMIDI (http://www.tobias-erichsen.de/software/loopmidi.html )
  2. Создайте виртуальный MIDI-порт в loopMIDI
  3. Загрузите набор инструментов Sanford C# MIDI Toolkit http://www.codeproject.com/Articles/6228/C-MIDI-Toolkit
  4. Добавьте ссылку на MIDI Toolkit в свой проект
  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 Ox для мониторинга миди-сигналов, но, похоже, мой виртуальный midi-порт, и похоже, что midi-активности нет, несмотря на то, что весь мой код Unity работает нормально. Игра Unity на самом деле воспроизводит загруженный мной миди-файл, поэтому я знаю, что мой код Unity работает правильно, но я просто не могу правильно настроить виртуальный миди-порт.

Кто-нибудь знает, что я могу делать неправильно? Спасибо!


person spobin    schedule 22.08.2018    source источник
comment
Первое, что нужно сделать, это создать проект, отличный от Unity, и посмотреть, работает ли этот фрагмент кода. Если это работает, покажите нам, как вы установили SDK в Unity. Скриншоты еще лучше   -  person Programmer    schedule 22.08.2018
comment
@Programmer - я только что собрал небольшое консольное приложение на С#, которое возвращает OutputDevice.DeviceCount как 1 с запущенным loopMIDI, что указывает на то, что оно работает неправильно. Кажется, что независимо от того, сколько виртуальных миди-портов я создаю, ни один из них не работает должным образом. На данный момент я не думаю, что loopMidi выполняет свою работу...   -  person spobin    schedule 23.08.2018
comment
Ну вот и все. не тратьте свое время на него в Unity, если он даже не может работать в среде, отличной от Unity. Я предлагаю вам прокомментировать страницу codeproject проекта. Может автор поможет   -  person Programmer    schedule 23.08.2018
comment
Вы также можете попробовать использовать MIDI.NET github.com/obiwanjacobi/midi.net (только для Windows )   -  person obiwanjacobi    schedule 23.08.2018