Мы добавляем поддержку доступа к различным устройствам MIDI-контроллера в нашем приложении. Из наших собственных испытаний с использованием midiInOpen
кажется, что только одно приложение может получить доступ к устройству ввода MIDI с помощью midiInOpen
. Второе приложение, пытающееся открыть MIDI-устройство, завершается с ошибкой MMSYSERR_NOMEM
.
Однако у меня есть пример коммерческого приложения (стороннего), которому удается получить доступ к входному потоку MIDI одновременно с нашим приложением (которое использует midiInOpen
). Это говорит о том, что есть другой способ доступа к MIDI-потоку.
Я использовал анализатор API, чтобы увидеть вызовы API, и это приложение не использует midiInOpen
. Он использует midiInMessage
и midiOutMessage
, и из документов API видно, что они взаимодействуют напрямую с драйвером.
Из документации я вижу, что новая поддержка MIDI предоставляется в Windows 10; Я еще не экспериментировал с тем, как это работает вместе с приложением, использующим midiInOpen
, но, если возможно, мне нужно найти решение, которое работает с Windows 7 и выше.
Я связался со сторонним разработчиком приложения, чтобы узнать, могут ли они помочь. В настоящее время. наше приложение работает вместе с их приложением, но есть и другие приложения, которые используют midiInOpen
для доступа к MIDI-данным, и наше приложение не может сосуществовать с их приложениями. Первое приложение, вызывающее midiInOpen
, получает MIDI-поток; второй звонок не проходит.
Все эти тесты проводились с Windows 7. Нам нужна поддержка 7 и выше.
Наша версия приложения для Mac отлично работает в этом отношении.