Как создать Virtual MIDI device ?
От: Михaил  
Дата: 29.01.21 12:33
Оценка:
Привет
Насколько трудоемко создать драйвер, который позволит моему приложению показываться в списке midi устройств (мне нужно, чтобы другое приложение могло читать MIDI сообщения из моего приложения)? Насколько я понимаю, тут достаточно user-mode .dll'ки. Возможно, кто-нибудь сталкивался с примерами с исходниками таких устройств? Несколько дней поиска ни к чему не привели.

Есть несколько закрытых проектов, наподобие https://www.tobias-erichsen.de/software/virtualmidi.html и http://www.midiox.com/. Это что-то вроде virtual midi cable, создающий виртуальный midi прокси девайс, в который одно приложение пишет, а другое — читает. Вот хотелось бы обойтись без оных закрытых 3rd party проектов.

Насколько это возможно?

Спасибо
windows midi
Re: Как создать Virtual MIDI device ?
От: Евгений Музыченко Франция https://software.muzychenko.net/ru
Дата: 29.01.21 15:28
Оценка: 6 (1)
Здравствуйте, Михaил, Вы писали:

М>Насколько я понимаю, тут достаточно user-mode .dll'ки.


DLL было достаточно вплоть до XP. Тогда всей мультимедией заведовала WinMM.DLL, и DLL своего драйвера можно было прописать в одном из значений midiN в UserInstallable.Drivers/Drivers32. В висте структуру мультимедийной подсистемы поменяли, и теперь там везде только wdmaud.drv, который работает с драйверами WDM/KS, и winmm.dll, насколько я помню, загружает ее явно, а не через реестровые ключи, поэтому что-то менять/добавлять в этих ключах бесполезно. Но последний раз я это проверял лет пятнадцать назад — возможно, что-то упустил. С загрузкой звуковых (wave) драйверов точно были проблемы, но возможно, что MIDI так не перелопачивали.

Стандартный способ добавления устройства — загрузка ядерного драйвера WDM/KS, поддерживающего соответствующие форматы данных (KSDATARANGE_MUSIC, KSDATAFORMAT_TYPE_MUSIC, KSDATAFORMAT_SUBTYPE_MIDI_BUS).

Если хотите попробовать через DLL — попробуйте собрать/установить этот древний проект, и посмотреть, будет ли там что-нибудь шевелиться при подключении MIDI-приложений. Если не будет собираться — выкидывайте оттуда все, кроме минимальной обработки сообщений MODM_xxx, чтоб не тратить лишнего времени на оценку применимости.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.