Предотвратить спящий драйвер midi на MS Surface 4 - PullRequest
0 голосов
/ 24 января 2019

У меня есть приложение Windows Forms, которое реагирует на события Midi, возникающие при нажатии кнопки на педальном переключателе Midi / USB. Это прекрасно работает с очень небольшой задержкой почти на всех ПК ... Однако на планшете Microsoft Surface 4 (и, вероятно, 5, 6 и т. Д.) Microsoft, похоже, переводит драйвер Midi (или USB) в спящий режим как можно скорее после звука перестает играть на устройстве ... сразу после! Я уверен, что Surface делает это, чтобы сэкономить энергию / батарею, но это мешает моему приложению.

В моем приложении мне нужно реагировать на нажатие кнопки педального переключателя практически без задержки независимо от того, воспроизводится звук в данный момент или нет. На первый взгляд, после того, как драйвер Midi переходит в спящий режим, задержка пользователя между нажатием кнопки на педальном переключателе midi / USB и появлением соответствующего события midi, поступающего в код моего приложения, составляет около 1 секунды. Эта задержка мешает моему приложению, поскольку мое приложение использует нажатия кнопок для запуска музыки / звука / заметок, и эта задержка (фактически прямая длительная задержка в 1 секунду) делает невозможным воспроизведение музыки.

Учитывая некоторую работу, которую я проделал, пытаясь обойти эту проблему, я считаю, что это скорее спящий драйвер midi, чем спящий драйвер USB. Я создал некоторый код, который отправлял поддельное сообщение Midi каждую 1 секунду, чтобы держать драйвер midi активным, и это работало, но я столкнулся с некоторыми другими проблемами, которые привели к тому, что обходной путь не был хранителем / возможностью.

Есть ли способ заставить Windows и планшет MS Surface держать драйвер midi (или USB) в активном состоянии (не допустить, чтобы драйвер спал)? Есть ли реестр или другой параметр, который управляет спящим драйвером midi? Или есть код, который я могу добавить в свое приложение, которое заставит драйвер midi не спать?

Спасибо!

1 Ответ

0 голосов
/ 25 января 2019

Обнаружил обходной путь ... Я заметил, что планшет MS Surface, кажется, держит драйвер Midi полностью активным, пока на устройстве воспроизводится какой-либо звук, поэтому я написал некоторый код (используя NAudio) для воспроизведения любого "тихого звука". время, которое я хочу / нужно держать бодрствующего водителя.

См. NAudio.Wave.SilenceProvider, если вам нужно подобное решение.

NAudio оказался чрезвычайно полезным инструментом для работы со звуком и миди в MS Windows. Большое спасибо Марку Хиту!

...