Есть ли у Windows 10 MIDI
Windows 10 MIDI драйверы: как установить их за несколько шагов
Команда Windows хотела бы услышать ваши отзывы. Пожалуйста, сохраните отзывы, используя наш сайт разработчика Windows USERVOICE. Если у вас есть прямая ошибка, используйте инструмент обратной связи Windows, встроенный непосредственно в Windows 10.
Миди
В этой статье показано, как перечислять устройства MIDI (музыкальный инструмент цифровой интерфейс) и отправлять и получать MIDI -сообщения из приложения Universal Windows. Windows 10 поддерживает MIDI над USB (совместимые с классами и большинство проприетарных водителей), MIDI Over Bluetooth LE (Windows 10 Anniversary Edition и позже), а также через свободно доступные сторонние продукты, MIDI Over Ethernet и направленные MIDI.
Перечислять устройства MIDI
.
Использование Windows.Устройства.Перечисление;
Использование Windows.Устройства.Миди;
Использование системы.Резьба.Задания;
Добавить Списки Управление на вашей странице XAML, которая позволит пользователю выбрать одно из устройств MIDI ввода, прикрепленных к системе. Добавьте еще один, чтобы перечислить устройства MIDI вывода.
А Findallasync метод Информация об устройстве Класс используется для перечисления множества различных типов устройств, которые распознаются Windows. Чтобы указать, что вы хотите, чтобы метод нашел устройства MIDI ввода, используйте строку селектора, возвращаемая Midiinport.GetDeviceselector. Findallasync Возвращает а DeviceInformationCollection это содержит Информация об устройстве Для каждого устройства MIDI ввода, зарегистрированного в системе. Если возвращаемая коллекция не содержит элементов, то нет доступных устройств MIDI ввода. Если в коллекции есть предметы, проберите Информация об устройстве объекты и добавьте имя каждого устройства в устройство MIDI ввода Списки.
Частная асинхронная задача encumeratemidiinputdevices ()
{
// Найти все входные устройства MIDI
string midiinputquerystring = midiinport.GetDeviceSelector ();
DeviceInformationCollection midiInputDevices = await deviceInformation.Findallasync (midiinputquerystring);
midiinportlistbox.Предметы.Прозрачный();
// возвращать, если внешние устройства не подключены
if (midiinputdevices.Count == 0)
{
.midiinportlistbox.Предметы.Добавить («Устройства ввода MIDI не найдено!");
этот.midiinportlistbox.IsEnabled = false;
возвращаться;
}
// else, добавьте каждое подключенное устройство ввода в список
Foreach (DeviceInformation DeviceInfo в midiinputDevices)
{
этот.midiinportlistbox.Предметы..Имя);
}
этот.midiinportlistbox.IsEnabled = true;
}
Перечисление устройств MIDI вывода работает точно так же, как перечисление устройств ввода, за исключением того, что вы должны указать строку селектора, возвращенную Midioutport.GetDeviceselector При звонке Findallasync.
Частная асинхронная задача encumeratemidioutputdevices ()
{
// Найти все выходные устройства MIDI
string midioutportquerystring = midioutport.GetDeviceSelector ();
DeviceInformationCollection midiOutputDevices = await deviceInformation.Findallasync (midioutportquerystring);
midioutportlistbox.Предметы.Прозрачный();
// возвращать, если внешние устройства не подключены
if (midioutputdevices.Count == 0)
{
этот.midioutportlistbox.Предметы.Добавить ("Устройства вывода MIDI не найдены!");
этот.midioutportlistbox.IsEnabled = false;
возвращаться;
}
// else, добавьте каждое подключенное устройство ввода в список
Foreach (DeviceInformation DeviceInfo в midioutputDevices)
{
этот.midioutportlistbox.Предметы.Добавить (DeviceInfo.Имя);
}
этот.midioutportlistbox.IsEnabled = true;
}
Создать класс Heper Watcher Watcher
А Окна.Устройства.Перечисление Пространство имен предоставляет Наблюдатель устройств который может уведомить ваше приложение, если устройства добавлены или удалены из системы, или если обновлена информация для устройства. Поскольку приложения с поддержкой MID-инциденты обычно заинтересованы как в устройствах ввода, так и в выводе, этот пример создает вспомогательный класс, который реализует Наблюдатель устройств шаблон, так что один и тот же код может использоваться как для устройств MIDI, так и для вывода MIDI, без необходимости дублирования.
Добавьте новый класс в свой проект, чтобы служить наблюдателем за устройством. В этом примере класс назван Mymididevicewatcher. Остальная часть кода в этом разделе используется для реализации помощника класса.
Добавьте несколько переменных членов в класс:
- А Наблюдатель устройств объект, который будет контролировать изменения устройства.
- Строка селектора устройства, которая будет содержать MIDI в строке селектора портов для одного экземпляра и строки селектора портов MIDI для другого экземпляра.
- А Списки управление, которое будет заполнено именами доступных устройств.
- А Coredispatcher Это необходимо для обновления пользовательского интерфейса из потока, кроме потока пользовательского интерфейса.
Whipatcher devicewatcher;
String DeficesElectorString;
Listbox Devicelistbox;
Coredispatcher coredispatcher;
Добавить DeviceInformationCollection свойство, которое используется для доступа к текущему списку устройств из -за пределов помощника.
public DeviceInformationCollection DeviceInformationCollection {get; частный набор; }
В конструкторе класса вызывающий абонент проходит в строке селектора устройств MIDI, Списки для перечисления устройств и Диспетчер Нужно обновить пользовательский интерфейс.
Вызов Информация об устройстве.CreateWatcher Чтобы создать новый экземпляр Наблюдатель устройств Класс, прохождение строки селектора устройств MIDI.
Зарегистрируйте обработчики для обработчиков событий наблюдателя.
Public Mymididevicewatcher (String midideviceselectorstring, Listbox Mididevicelistbox, диспетчер Coredispatcher) { DeficesElectorString = midideviceselectorString; devicelistbox = mididevicelistbox; coredispatcher = диспетчер; DeviceWatcher = DeviceInformation.CreateWatcher (DeficesElectorString); Наблюдатель устройств.Добавлен += deviceWatcher_added; Наблюдатель устройств.Удален += deviceWatcher_Removed; Наблюдатель устройств.Обновлено += DeviceWatcher_Updated; Наблюдатель устройств.Enumerationcompleted += devicewatcher_enumerationcompleted; }
Вопрос 1: Как я могу перечислять устройства MIDI ввода в приложении Universal Windows?
Вы можете перечислить устройства MIDI ввода в универсальном приложении Windows, используя Findallasync Метод Информация об устройстве сорт. Чтобы указать, что вы хотите найти только устройства ввода MIDI, используйте строку селектора, возвращенную Midiinport.GetDeviceselector. Петлю через Информация об устройстве объекты в возвращенных DeviceInformationCollection и добавьте имя каждого устройства в управление ListBox.
Вопрос 2: Как я могу перечислять устройства MIDI вывода в приложении Universal Windows?
Вы можете перечислить устройства MIDI вывода в универсальном приложении Windows, используя тот же метод, что и перечисление устройств ввода. Просто используйте строку селектора, возвращенную Midioutport.GetDeviceselector Вместо этого при звонке Findallasync.
Вопрос 3: Как создать класс Heper Watcher в универсальном приложении Windows?
Вы можете создать класс Heper Watcher Watcher в универсальном приложении Windows, внедрив Наблюдатель устройств шаблон из Окна.Устройства.Перечисление Пространство имен. Это позволяет уведомлять ваше приложение при добавлении или удалении устройств из системы, или если обновляется информация для устройства. Класс помощника может использоваться как для устройств MIDI, так и для вывода без дублирования кода.
Вопрос 4: Как я могу использовать управление списками для списки устройств MIDI ввода в приложении Universal Windows?
В универсальном приложении Windows вы можете использовать управление ListBox для списки устройств MIDI ввода. Добавьте элемент управления Listbox на страницу XAML и заполните его именами устройств MIDI ввода, пройдя через Информация об устройстве объекты в DeviceInformationCollection получен из Findallasync.
Вопрос 5: Как я могу использовать управление списками для списки устройств MIDI вывода в приложении Universal Windows?
Использование управления ListBox для списки устройств MIDI вывода в приложении Universal Windows аналогично листингу устройств ввода. Просто получите DeviceInformationCollection Для вывода устройств с использованием Findallasync и пройти через Информация об устройстве Объекты для заполнения управления ListBox.
Вопрос 6: Как я могу обновить пользовательский интерфейс из потока, кроме потока пользовательского интерфейса в универсальном приложении Windows?
Вы можете обновить пользовательский интерфейс из потока, кроме потока пользовательского интерфейса в универсальном приложении Windows, с помощью Coredispatcher сорт. Передайте экземпляр Coredispatcher в класс Heper Watcher Helper и используйте его Runasync Метод для выполнения кода в потоке пользовательского интерфейса.
Вопрос 7: Как я могу отслеживать изменения устройства в приложении Universal Windows?
В универсальном приложении Windows вы можете отслеживать изменения устройства, используя Наблюдатель устройств сорт. Зарегистрировать обработчики мероприятий для Добавлен, Удаленный, Обновлено, и Enumerationcompleted События наблюдения за устройством, которые будут уведомлены при добавлении, удалении, обновлении, обновлении или после завершения операции перечисления.
Вопрос 8: Как я могу справиться с событием, когда в универсальном приложении Windows добавлено новое устройство MIDI?
Вы можете обрабатывать событие, когда в универсальном приложении Windows добавлено новое MIDI -устройство, подписываясь на Добавлен Событие наблюдателя за устройством. В случае обработчика событий вы можете обновить пользовательский интерфейс, чтобы отразить новое устройство.
Вопрос 9: Как я могу справиться с событием, когда устройство MIDI удалено в универсальном приложении Windows?
Для обработки события, когда устройство MIDI удаляется в универсальном приложении Windows, подпишитесь на Удаленный Событие наблюдателя за устройством. В случае обработчика событий вы можете обновить пользовательский интерфейс для удаления устройства из списка.
Вопрос 10: Как я могу обработать событие, когда информация для устройства MIDI обновляется в приложении Universal Windows?
В универсальном приложении Windows вы можете обрабатывать событие, когда информация для устройства MIDI обновляется путем подписки на Обновлено Событие наблюдателя за устройством. В случае обработчика событий вы можете обновить пользовательский интерфейс, чтобы отразить обновленную информацию устройства.
Вопрос 11: Как я могу определить, есть ли нет доступных устройств MIDI ввода в универсальном приложении Windows?
В универсальном приложении Windows вы можете определить, нет ли доступных устройств MIDI ввода, проверив количество DeviceInformationCollection получен из Findallasync. Если счет равен 0, это означает, что нет доступных устройств MIDI ввода.
Вопрос 12: Как я могу определить, есть ли нет доступных устройств MIDI вывода в приложении Universal Windows?
В приложении Universal Windows вы можете определить, нет ли доступных устройств MIDI вывода, проверив количество DeviceInformationCollection получен из Findallasync. Если счет равен 0, это означает, что нет доступных устройств MIDI вывода.
Вопрос 13: Как я могу справиться с событием, когда перечисление устройств MIDI завершено в универсальном приложении Windows?
Вы можете обрабатывать событие, когда перечисление устройств MIDI будет завершено в универсальном приложении Windows, подписываясь на Enumerationcompleted Событие наблюдателя за устройством. В случае обработчика событий вы можете выполнить любые необходимые действия после завершения перечисления.
Вопрос 14: Как я могу проверить, является ли конкретное устройство MIDI устройством ввода или устройством вывода в универсальном приложении Windows?
В универсальном приложении Windows вы можете проверить, является ли конкретное устройство MIDI устройством ввода или устройством вывода, используя Информация об устройстве свойства объекта. Свойства устройства содержат информацию о типе устройства, например, является ли это устройством ввода или вывода.
ВОПРОС 15: Как я могу получить доступ к текущему списку устройств MIDI из -за пределов класса Heper Watcher в универсальном приложении Windows?
В универсальном приложении Windows вы можете получить доступ к текущему списку устройств MIDI из -за пределов класса Heper Watcher, используя свойство. Создайте публичную собственность типа DeviceInformationCollection В классе Helper и устанавливайте его значение всякий раз, когда обновляется список устройств. Затем вы можете получить доступ к этому свойству из других частей вашего приложения, чтобы получить текущий список устройств MIDI.
Windows 10 MIDI драйверы: как установить их за несколько шагов
Команда Windows хотела бы услышать ваши отзывы. Пожалуйста, сохраните отзывы, используя наш сайт разработчика Windows USERVOICE. Если у вас есть прямая ошибка, используйте инструмент обратной связи Windows, встроенный непосредственно в Windows 10.
Миди
В этой статье показано, как перечислять устройства MIDI (музыкальный инструмент цифровой интерфейс) и отправлять и получать MIDI -сообщения из приложения Universal Windows. Windows 10 поддерживает MIDI над USB (совместимые с классами и большинство проприетарных водителей), MIDI Over Bluetooth LE (Windows 10 Anniversary Edition и позже), а также через свободно доступные сторонние продукты, MIDI Over Ethernet и направленные MIDI.
Перечислять устройства MIDI
Перед перечислением и использованием устройств MIDI добавьте следующие пространства имен в свой проект.
Использование Windows.Устройства.Перечисление; Использование Windows.Устройства.Миди; Использование системы.Резьба.Задания;
Добавить Списки Управление на вашей странице XAML, которая позволит пользователю выбрать одно из устройств MIDI ввода, прикрепленных к системе. Добавьте еще один, чтобы перечислить устройства MIDI вывода.
А Findallasync метод Информация об устройстве Класс используется для перечисления множества различных типов устройств, которые распознаются Windows. Чтобы указать, что вы хотите, чтобы метод нашел устройства MIDI ввода, используйте строку селектора, возвращаемая Midiinport.GetDeviceselector. Findallasync Возвращает а DeviceInformationCollection это содержит Информация об устройстве Для каждого устройства MIDI ввода, зарегистрированного в системе. Если возвращаемая коллекция не содержит элементов, то нет доступных устройств MIDI ввода. Если в коллекции есть предметы, проберите Информация об устройстве объекты и добавьте имя каждого устройства в устройство MIDI ввода Списки.
Частная асинхронная задача encumeratemidiinputdevices () < // Find all input MIDI devices string midiInputQueryString = MidiInPort.GetDeviceSelector(); DeviceInformationCollection midiInputDevices = await DeviceInformation.FindAllAsync(midiInputQueryString); midiInPortListBox.Items.Clear(); // Return if no external devices are connected if (midiInputDevices.Count == 0) < this.midiInPortListBox.Items.Add("No MIDI input devices found!"); this.midiInPortListBox.IsEnabled = false; return; >// else, добавьте каждое подключенное устройство ввода в список Foreach (DeviceInformation DeviceInfo в midiinputDevices) < this.midiInPortListBox.Items.Add(deviceInfo.Name); >этот.midiinportlistbox.IsEnabled = true; >
Перечисление устройств MIDI вывода работает точно так же, как перечисление устройств ввода, за исключением того, что вы должны указать строку селектора, возвращенную Midioutport.GetDeviceselector При звонке Findallasync.
Частная асинхронная задача encumeratemidioutputdevices () < // Find all output MIDI devices string midiOutportQueryString = MidiOutPort.GetDeviceSelector(); DeviceInformationCollection midiOutputDevices = await DeviceInformation.FindAllAsync(midiOutportQueryString); midiOutPortListBox.Items.Clear(); // Return if no external devices are connected if (midiOutputDevices.Count == 0) < this.midiOutPortListBox.Items.Add("No MIDI output devices found!"); this.midiOutPortListBox.IsEnabled = false; return; >// else, добавьте каждое подключенное устройство ввода в список Foreach (DeviceInformation DeviceInfo в midioutputDevices) < this.midiOutPortListBox.Items.Add(deviceInfo.Name); >этот.midioutportlistbox.IsEnabled = true; >
Создать класс Heper Watcher Watcher
А Окна.Устройства.Перечисление Пространство имен предоставляет Наблюдатель устройств который может уведомить ваше приложение, если устройства добавлены или удалены из системы, или если обновлена информация для устройства. Поскольку приложения с поддержкой MID-инциденты обычно заинтересованы как в устройствах ввода, так и в выводе, этот пример создает вспомогательный класс, который реализует Наблюдатель устройств шаблон, так что один и тот же код может использоваться как для устройств MIDI, так и для вывода MIDI, без необходимости дублирования.
Добавьте новый класс в свой проект, чтобы служить наблюдателем за устройством. В этом примере класс назван Mymididevicewatcher. Остальная часть кода в этом разделе используется для реализации помощника класса.
Добавьте несколько переменных членов в класс:
- А Наблюдатель устройств объект, который будет контролировать изменения устройства.
- Строка селектора устройства, которая будет содержать MIDI в строке селектора портов для одного экземпляра и строки селектора портов MIDI для другого экземпляра.
- А Списки управление, которое будет заполнено именами доступных устройств.
- А Coredispatcher Это необходимо для обновления пользовательского интерфейса из потока, кроме потока пользовательского интерфейса.
Whipatcher devicewatcher; String DeficesElectorString; Listbox Devicelistbox; Coredispatcher coredispatcher;
Добавить DeviceInformationCollection свойство, которое используется для доступа к текущему списку устройств из -за пределов помощника.
Общедоступное устройство
В конструкторе класса вызывающий абонент проходит в строке селектора устройств MIDI, Списки для перечисления устройств и Диспетчер Нужно обновить пользовательский интерфейс.
Вызов Информация об устройстве.CreateWatcher Чтобы создать новый экземпляр Наблюдатель устройств Класс, прохождение строки селектора устройств MIDI.
Зарегистрируйте обработчики для обработчиков событий наблюдателя.
Public Mymididevicewatcher (String midideviceselectorstring, Listbox Mididevicelistbox, диспетчер Coredispatcher)
А Наблюдатель устройств имеет следующие события:
- Добавлен – Поднято при добавлении нового устройства в систему.
- Удаленный – Поднято при удалении устройства из системы.
- Обновлено – Поднята, когда обновляется информация, связанная с существующим устройством.
- Enumerationcompleted – Поднят, когда наблюдатель завершил перечисление запрошенного типа устройства.
В случае обработчика событий для каждого из этих событий, вспомогательный метод, Обновления, призван для обновления Списки с текущим списком устройств. Потому что Обновления Обновления элементов пользовательского интерфейса, и эти обработчики событий не вызываются в потоке пользовательского интерфейса, каждый вызов должен быть завернут в вызов к Runasync, который приводит к запуску указанного кода в потоке пользовательского интерфейса.
Private Async void DeviceWatcher_Removed (отправитель устройств, отправитель DeviceInformationUpdate Args) < await coreDispatcher.RunAsync(CoreDispatcherPriority.High, () =>< // Update the device list UpdateDevices(); >); > Private Async void DeviceWatcher_Added (отправитель устройств, отправитель DeviceInformation Args) < await coreDispatcher.RunAsync(CoreDispatcherPriority.High, () =>< // Update the device list UpdateDevices(); >); > Private Async void DeviceWatcher_EnumerationCompleted (Отправитель DeviceWatcher, Object Args) < await coreDispatcher.RunAsync(CoreDispatcherPriority.High, () =>< // Update the device list UpdateDevices(); >); > Private Async void deviceWatcher_Updated (отправитель -устройства, отправитель DeviceInformationUpdate Args) < await coreDispatcher.RunAsync(CoreDispatcherPriority.High, () =>< // Update the device list UpdateDevices(); >); >
А Обновления Полученные методы вызовы Информация об устройстве.Findallasync и обновляет Списки с именами возвращенных устройств, как описано ранее в этой статье.
private async void updatedEvices () < // Get a list of all MIDI devices this.DeviceInformationCollection = await DeviceInformation.FindAllAsync(deviceSelectorString); deviceListBox.Items.Clear(); if (!this.DeviceInformationCollection.Any()) < deviceListBox.Items.Add("No MIDI devices found!"); >foreach (var deviceInformation в этом.DeviceInformationCollection) < deviceListBox.Items.Add(deviceInformation.Name); >>
Добавить методы, чтобы начать наблюдатель, используя Наблюдатель устройств объекты Начинать метод и остановить наблюдателя, используя Останавливаться метод.
public void startwatcher () < deviceWatcher.Start(); >public void spopwatcher ()
Предоставьте деструктор, чтобы нерегистрироваться.
~ Mymididevicewatcher ()
Создать порты MIDI для отправки и получения сообщений
В коде, стоящем за вашей страницей, объявьте переменные участника, чтобы удерживать два экземпляра Mymididevicewatcher Helper Class, один для устройств ввода и один для вывода устройств.
Mymididevicewatcher inputedevicewatcher; Mymididevicewatcher outputedevicewatcher;
Создайте новый экземпляр классов вспомогательных помощников, передавая строку селектора устройств, Списки быть заполненным, и Coredispatcher объект, к которому можно получить доступ через страницу Диспетчер свойство. Затем вызовите метод, чтобы запустить каждый объект Наблюдатель устройств.
Вскоре после каждого Наблюдатель устройств начинается, он завершит перечисление текущих устройств, подключенных к системе, и повысит ее Enumerationcompleted событие, которое вызовет каждое Списки быть обновленным с помощью текущих устройств MIDI.
inputDeviceWatcher = new MyMidideviceWatcher (midiinport.GetDeviceselector (), midiinportlistbox, диспетчер); inputDeviceWatcher.StartWatcher (); outputDevicewatcher = new Mymididevicewatcher (midioutport.GetDeviceselector (), midioutportlistbox, диспетчер); outputDeviceWatcher.StartWatcher ();
Когда пользователь выбирает элемент на входе MIDI Списки, а SelectionChanged событие поднято. В обработке этого события доступ DeviceInformationCollection Собственность помощника класса для получения текущего списка устройств. Если в списке есть записи, выберите Информация об устройстве объект с индексом, соответствующим Списки контроль SelectedIndex.
Создать Midiinport объект, представляющий выбранное устройство ввода, вызывая Midiinport.Fromidasync, прохождение в Идентификатор свойство выбранного устройства.
Зарегистрировать обработчик для Сообщение доставлено событие, которое поднимается всякий раз, когда через указанное устройство получает сообщение MIDI.
Midiinport midiinport; Imidioutport midioutport;
Private Async void midiinportlistbox_selectionChanged (отправитель объекта, SelectionChangeDeventargs e) < var deviceInformationCollection = inputDeviceWatcher.DeviceInformationCollection; if (deviceInformationCollection == null) < return; >DeviceInformation devinfo = deviceInformationCollection [midiinportListbox.SelectedIndex]; if (devinfo == null) < return; >midiinport = ждать midiinport.Fromidasync (Devinfo.Идентификатор); if (midiinport == null) < System.Diagnostics.Debug.WriteLine("Unable to create MidiInPort from input device"); return; >Midiinport.MessagerEceived += midiinport_messagereceived; >
Когда Сообщение доставлено обработчик называется, сообщение содержится в Сообщение собственность MidImesereCeivedEventargs. А Тип объекта сообщения является значением из MidImessAgeType перечисление, указывающее тип полученного сообщения. Данные сообщения зависят от типа сообщения. Этот пример проверяет, является ли сообщение примечанием в сообщении, и, если это так, выводит MIDI -канал, примечание и скорость сообщения.
private void midiinport_messageceedived (отправитель Midiinport, Midimesgereceivedeventargs Args) < IMidiMessage receivedMidiMessage = args.Message; System.Diagnostics.Debug.WriteLine(receivedMidiMessage.Timestamp.ToString()); if (receivedMidiMessage.Type == MidiMessageType.NoteOn) < System.Diagnostics.Debug.WriteLine(((MidiNoteOnMessage)receivedMidiMessage).Channel); System.Diagnostics.Debug.WriteLine(((MidiNoteOnMessage)receivedMidiMessage).Note); System.Diagnostics.Debug.WriteLine(((MidiNoteOnMessage)receivedMidiMessage).Velocity); >>
А SelectionChanged обработчик для устройства вывода Списки работает так же, как и обработчик для устройств ввода, за исключением случаев, когда обработчик событий не зарегистрирован.
Private Async void midioutportlistbox_selectionChanged (отправитель объекта, SelectionChangeDeventargs e) < var deviceInformationCollection = outputDeviceWatcher.DeviceInformationCollection; if (deviceInformationCollection == null) < return; >DeviceInformation devinfo = deviceInformationCollection [midioutportlistbox.SelectedIndex]; if (devinfo == null) < return; >midioutport = ждать midioutport.Fromidasync (Devinfo.Идентификатор); if (midioutport == null) < System.Diagnostics.Debug.WriteLine("Unable to create MidiOutPort from output device"); return; >>
После создания выходного устройства вы можете отправить сообщение, создав новое Imidimessage Для типа сообщения, которое вы хотите отправить. В этом примере сообщение NoteNmessage. А Отправить сообщение Метод Imidioutport Объект вызван для отправки сообщения.
байтовый канал = 0; байтовая заметка = 60; байтовая скорость = 127; Imidimessage midimessagetosend = new MidinoteOnmessage (канал, примечание, скорость); midioutport.Sendmessage (midimessagetosend);
Когда ваше приложение деактивировано, обязательно очистите ресурсы ваших приложений. Зарегистрируйте обработчики вашего события и установите MIDI в порт и Out Out Port Objects на NULL. Остановите наблюдателей за устройством и установите их на NULL.
inputDeviceWatcher.Spectwatcher (); inputDeviceWatcher = null; outputDeviceWatcher.Spectwatcher (); outputDeviceWatcher = null; Midiinport.MessagereCeived -= midiinport_messagereceived; Midiinport.Расположить (); midiinport = null; midioutport.Расположить (); midioutport = null;
Использование встроенного Windows General Midi Synth
Когда вы перечисляете выходные устройства MIDI, используя методику, описанную выше, ваше приложение обнаружит устройство MIDI под названием «Microsoft GS Waveetable Synth -Synth». Это встроенный общий синтезатор MIDI, который вы можете сыграть из своего приложения. Тем не менее, попытка создать MIDI Outport для этого устройства потерпит неудачу, если вы не включите расширение SDK для встроенного синтезатора в вашем проекте.
Чтобы включить расширение General Midi Synth SDK в проект вашего приложения
- В Решение исследователя, Под вашим проектом щелкните правой кнопкой мыши Рекомендации и выберите Добавить ссылку.
- Расширить Универсальные окна узел.
- Выбирать Расширения.
- В списке расширений выберите Microsoft General Midi DLS для универсальных приложений Windows.
Примечание Если есть несколько версий расширения, обязательно выберите версию, которая соответствует цели для вашего приложения. Вы можете увидеть, на какую версию SDK нацелено на ваше приложение на Приложение вкладка свойств проекта.
Windows 10 MIDI драйверы: как установить их за несколько шагов
Чтобы исправить различные проблемы с ПК, мы рекомендуем Driverfix: Это программное обеспечение будет держать ваших драйверов в процессе работы, тем самым обеспечивая защиту от общих компьютерных ошибок и сбоя аппаратного обеспечения. Проверьте все свои драйверы сейчас в 3 простых шагах:
- Скачать Driverfix (проверенный файл загрузки).
- Нажимать Начать сканирование Чтобы найти всех проблемных драйверов.
- Нажимать Обновление драйверов Чтобы получить новые версии и избежать неисправностей системы.
- Driverfix был загружен 0 читателями в этом месяце.
MIDI – это технический термин для музыкального цифрового интерфейса, и он состоит из устройства, способного подключаться к множеству музыкальных устройств.
Первоначально были сделаны водители MIDI для управления клавиатурами с компьютера. Водители MIDI развивались за эти годы и в настоящее время используются миллионами пользователей Windows 10 по всей планете.
В конкретном случае касается драйверов MIDI Windows 10 Bluetooth, поскольку они кажутся еще более деликатными и могут легко не быть распознаны Windows.
Поддерживает ли Windows 10 MIDI над Bluetooth?
Это так, да. Просто откройте Настройки на вашем компьюте Устройства, затем Bluetooth и другие устройства. Здесь выберите Bluetooth и соединить свое устройство.
Тем не менее, некоторые пользователи сообщили, что их устройство MIDI больше не было признано после обновления Windows. Если это также ваш случай, здесь’S то, что мы предлагаем:
- Удалить все подключенные устройства MIDI и попытаться соединить их снова (как показано выше)
- Щелкните правой кнопкой мыши значок тома на панели задач и выберите Звуки. Если у вашего устройства MIDI отсутствует, выберите Показать отключенные/отключенные устройства и посмотрим, поможет ли это.
Как установить драйверы MIDI на Windows 10?
1. Используйте устранение неполадок Windows
- Перейдите к Панель задач поисковая строка.
- Тип Устранение неполадок.
- Выбирать Устранение неполадок из списка.
- Выбирать Аппаратное и устройства от устранения неполадок.
- Как только устранение неполадок открывается щелчок Следующий.
- Выберите программу, которая не функционирует в списке населения.
- Выберите нужную опцию по устранению неполадок.
Большинство аппаратных средств. Это означает, что они просто подключаются к компьютеру, а компьютер установит правильные драйверы.
Это не’t всегда тренируйтесь в пользователях’ предпочтение и дайвер должен быть загружен из другого источника. Прежде чем потратить время на поиски драйвера, выполнить следующие задачи, чтобы устранить вопрос:
Устранение неполадок протестирует программу, чтобы убедиться, что она работает. Запустите устранение неполадок в совместимости для любых других программ, которые не совместимы.
Не совместим? Не проблема
- Нажмите в поле поиска панели задач.
- Тип Запустить программы.
- Выбирать Запустить программы, сделанные для предыдущих версий Windows.
- Это откроет Устранение неполадок в совместимости.
- Следуйте по подсказкам на экране.
Так что вы’я пытался запустить устранение неполадок, и он не сделал’T Работа. Что’S хорошо, вернись и попробуй еще раз. Есть способ сделать вашу программу совместимой с вашей версией Windows. Здесь’S, как это сделать:
Убедитесь, что вы запускаете устранение неполадок для каждой программы, нуждающейся в драйверах.
Совет эксперта:
Спонсируется
Устаревшие драйверы являются основной причиной ошибок и системных проблем. Если некоторые из ваших файлов отсутствуют или сбиваются, автоматизированное решение, подобное Driverfix может решить эти проблемы всего за пару кликов. И это также легкий в вашей системе!
У вас проблемы с устранением неполадок с Windows? Здесь’S отличный гид по исправлению устранения неполадок, если он перестал работать на вас.
2. Поиск водителей
Установка водителей вручную – ваш следующий вариант. Ручная установка драйверов может быть опасной, если вы загружаете драйверы из неизвестного или непризнанного источника.
Убедитесь, что все водители загружаются из надежных источников, таких как производители’ Веб -сайты.
Обновление драйверов автоматически
Если ты не ДОН’Не хочу пройти проблему с ручным поиском в Интернете для последнего доступного драйвера, мы предлагаем использовать стороннее программное обеспечение для обновления драйверов, которое автоматически сделает это для вас.
Программное обеспечение не только легко обновит вашу прошивку, но и само по себе будет постоянно сканировать ваше устройство на наличие новых драйверов, так что вы надеваете’Т даже должен это сделать.
3. Запустить в режиме совместимости
- Найдите программу, которую вы’Посмотреть в поисках забега Режим совместимости.
- Щелкните правой кнопкой мыши в программе и выберите Характеристики.
- Нажать на Вкладка совместимости.
- Нажмите на поле в режиме совместимости.
- Выберите версию Windows, над которой программа может работать.
- Нажмите на Применять.
У большинства программ есть возможность работать в режиме совместимости. Чтобы заставить вашу программу запустить в этом режиме, выполните вышеупомянутые шаги.
Узнайте больше об этой теме
- Исправить ошибку нарушения драйвера в Windows 10
- Как исправить устаревшую ошибку драйверов в Windows 11
- Windows не может скачать драйверы? Исправьте это сейчас с помощью этих решений
- Исправить acpi_driver_internal ошибка в Windows 10
- Увидеть код ошибки драйвера 32? Исправить это в 4 простых шагах
4. Когда все остальное терпит неудачу
Драйверы MIDI значительно сложнее установить в Windows 10 из -за ряда проблем совместимости. Каждое из исправлений, упомянутых в этой статье, может потенциально решить проблему для вашего водителя.
Если вы’В конверт, выберите опции, позвоните производителю для вашего устройства и попросите о помощи или о месте совместимых драйверов.
Что’S об этом для этой статьи. Если вам есть что добавить по предмету, пожалуйста, не стесняйтесь делать это в разделе комментариев ниже.
- Водитель
- Windows 10 Guides
Улучшения MIDI в Windows 10
По мере развития Windows 10 мы продолжаем создавать поддержку технологий, ориентированных на музыканта.
Позволять’S Взгляните на Миди. У Windows была встроенная поддержка MIDI, возвращаясь к 16-битным дням. С тех пор большинство интерфейсов MIDI переехали в USB, и наша поддержка в ящике не отставала, с водителем класса и API, которые поддерживают эти новые интерфейсы.
Те, кто не знаком с музыкальной технологией, могут думать о Миди как просто .Средние музыкальные файлы. Но затем’S лишь крошечная часть того, что на самом деле Миди. С момента своей стандартизации в 1983 году MIDI остается наиболее используемым и, возможно, наиболее важным протоколом коммуникаций в производстве музыки. Это’S Используется для всего, от контроля синтезаторов и секвенсоров и изменений исправлений для списков, синхронизации миксеров и даже переключения камер на подкастах с использованием поверхности MIDI управления. Даже протокол Arduino Firmata основан на MIDI.
В этом посте мы’Поговорим о нескольких новых вещах, которые мы’VE создан, чтобы сделать MIDI еще более полезным в ваших приложениях:
- Основы UWP MIDI – Использование MIDI в приложениях Windows Store
- Новая поддержка Bluetooth Le Midi в обновлении Windows 10 Anniversary
- Win32 обертка для UWP MIDI (делая API доступным для настольных приложений)
- Миди -вспомогательные библиотеки для C# и PowerShell
Кроме того, мы включили ряд усовершенствований, ориентированных на аудио, когда Windows 10 была выпущена прошлым летом. Эти усовершенствования включали в себя: улучшения с низкой задержкой в WasAPI, дополнительная работа с партнерами с партнерами, чтобы принять участие в меньших буферах для более низкой задержки на современных устройствах Windows 10, таких как поверхность и телефоны, такие как 950/950XL; Настройки, чтобы включить необработанную обработку аудио без какого-либо DSP, адаптирующего задержку; Новый API API и эффекты с низкой задержкой UWP под названием Audiograph; и, конечно же, новый UWP MIDI API.
Мы’Также недавно добавил поддержку пространственного аудио для иммерсивного опыта. Прошлой осенью, в обновлении 1511 года, мы включили очень перспективную поддержку ОС для аудиоустройств Thunderbolt 3, чтобы убедиться, что мы’там, когда производители начинают создавать эти устройства и их высокопроизводительные водители звука. В совокупности это было много отличной работы от Windows Engineering, все нацеливались на музыкантов и приложения для создания музыки.
UWP MIDI Основы
В Windows 10 RTM в прошлом году мы представили новый MIDI API, доступный для приложений UWP практически на всех устройствах Windows 10, что обеспечивает современный способ доступа к этим интерфейсам MIDI. Мы создали этот API, чтобы обеспечить высокую производительность и гибкую базу, на которой мы можем создать поддержку для новых интерфейсов MIDI.
Первоначально мы выпустили этот API для комментариев в качестве пакета Nuget в Windows 8.1 и получил много отзывов от разработчиков приложений. То, что вы видите в Windows 10, является прямым результатом этой обратной связи и нашего тестирования.
API хорошо подключается к перечислению устройств и API -интерфейсам наблюдателя в UWP, что позволяет легко обнаружить горячую пробку/отключение устройств, пока ваше приложение работает.
Здесь’S простой способ получить список устройств MIDI и их идентификаторов, используя C#:
Использование Windows.Устройства.Миди;
Использование Windows.Устройства.Перечисление;
…
Private Async void listmididevices ()
// перечислять устройства ввода
var devicelist = await deviceinformation.Findallasync (
Midiinport.GetDeviceSelector ());
foreach (var deviceinfo в Devicelist)
Система.Диагностика.Отлаживать.WriteLine (DeviceInfo.Идентификатор);
Система.Диагностика.Отлаживать.WriteLine (DeviceInfo.Имя);
Система.Диагностика.Отлаживать.Writeline (“———-“);
>
// выходные устройства перечислены одинаково, но
// Использование midioutport.GetDeviceselector ()
>
И здесь’S, как настроить наблюдения и обработать перечисление/события наблюдателя, а также получить список подключенных интерфейсов. Это немного больше кода, но это’S более подходящий подход для большинства приложений:
private void startWatchingInputDevices ()
var Watcher = deviceInformation.CreateWatcher (
Midiinport.GetDeviceSelector ());
наблюдатель.Добавлен += onmidiinputDeviceadded;
наблюдатель.Удален += onmidiinputdeviceremoved;
наблюдатель.Enumerationcompleted += onmidiinputDeviceEnumerationcompleted;
private void onmidiinputDeviceEnumerationcompleted (
Отправитель для наблюдения за устройством, объект Args)
// начальное перечисление завершено. Это когда
// вы можете представить список интерфейсов на
// Пользователь вашего приложения.
>
private void onmidiinputdeviceremoved (
Отправитель для наблюдения за устройством, DeviceInformationUpdate Args)
// обрабатывать удаление устройства ввода MIDI
>
Private void onmidiinputDeviceadded (
Отправитель устройств, DeviceInformation Args)
// обрабатывать добавление нового устройства MIDI ввода
>
Использование наблюдателя для листинга устройств и обработки добавить/удалить – наилучшая практика, чтобы следовать в ваших приложениях. Никто не хочет перезагрузить свое приложение только потому, что они забыли подключить или включить свой MIDI -контроллер. Использование наблюдателя позволяет вашему приложению легко обрабатывать эти дополнения/удаления во время выполнения.
API прост в использовании, с сильно напечатанными классами для всех стандартных сообщений, а также поддержку операций SYSEX и Buffer на основе. Этот пример C# показывает, как открывать порты ввода и вывода и отвечать на конкретные сообщения MIDI.
Использование Windows.Устройства.Миди;
Использование Windows.Устройства.Перечисление;
…
Частный Async void midiexample ()
string outPortId = “ID, который вы получите через перечисление устройства”;
string inPortId = “ID, который вы получите через перечисление устройства”;
// Открыть порт вывода и отправить сообщение
var outport = ждать midioutport.Fromidasync (outportid);
var notonmessage = new MidinoteOnmessage (0, 110, 127);
Outport.Sendmessage (notonmessage);
// Откройте порт ввода и прослушайте сообщения
var inport = ждать midiinport.Fromidasync (inportid);
inport.MessagerEceived += onmidimesseareCeed;
>
private void onmidimessageceedived (отправитель Midiinport,
MidImeserCeeVivedEventargs Args)
Переключение (Args.Сообщение.Тип)
CASE MIDIMESSAGETYPE.Noton:
перерыв;
CASE MIDIMESSAGETYPE.PolyphonickeyPressure:
перерыв;
// и т. д.
>
>
В большинстве случаев вы будете осмотреть тип сообщения, а затем подготовили имидимерсесу одному из сообщений с сильным типом, определенным в Windows.Устройства.Пространство имен MIDI, такое как midinoteonmessage или midipitchbendchangemessage. Ты’не обязательно это делать, однако; Вы всегда можете работать с необработанными байтами данных, если вы предпочитаете.
API Windows 10 UWP MIDI подходит для создания всех видов музыкальных приложений Windows Store. Вы можете создавать управляющие поверхности, секвенсоры, синтезаторы, приложения для утилиты, библиотекари патчей, контроллеры освещения, синтезаторы катушки Tesla высокого напряжения и многое другое.
Как и более старые MIDI API, Windows 10 UWP MIDI API хорошо работает со сторонними дополнениями, такими как Тобиас Эрихсен’S Great Rtpmidi Driver, обеспечивающий поддержку MIDI над Wired и Wi-Fi Networking.
Одна замечательная особенность нового API-это то, что он многокничный. Пока все приложения с открытым портом используют API Windows 10 UWP MIDI, а не старые API Win32 MME или DirectMusic, они могут поделиться тем же устройством. Это то, что старый API Don’T обращайтесь без пользовательских драйверов и был общим запросом от наших партнеров и клиентов.
Наконец, это’Важно отметить, что API Windows 10 UWP MIDI работает со всеми распознанными устройствами MIDI, независимо от того, используют ли они драйверы класса или свои собственные драйверы. Это включает в себя многие программные утилиты MIDI, реализованные в качестве драйверов в Windows 10.
Новая поддержка Bluetooth Le Midi в UWP MIDI
В дополнение к поддержке с несколькими клиентами и улучшениям, которые мы’VE, сделанный в производительности и стабильности, является веской причиной для использования API Windows 10 UWP MIDI из -за его поддержки новых стандартов и транспортов.
Microsoft активно участвует в процессе стандартов MIDI и имеет представители в рабочих группах. В Microsoft есть несколько из них, которые непосредственно участвуют в создании, проверке и голосовании стандартов на MIDI и для аудио в целом.
Один захватывающий и относительно новый стандарт MIDI, который быстро набирает популярность, – это Bluetooth Le Midi. Microsoft проголосовала за ратификацию стандарта на основе новаторской работы, которую Apple сделала в этом пространстве; В результате Apple, Microsoft и другие совместимы со стандартом, который видит реальную тягу в сообществе музыкантов, и уже имеет ряд совместимых периферийных устройств.
В Windows 10 Anniversary Edition мы’Включено в больницу для Bluetooth Le Midi для любого приложения, используя Windows 10 UWP MIDI API.
В Windows 10 Anniversary Edition мы’Включено в больницу для Bluetooth Le Midi для любого приложения, используя Windows 10 UWP MIDI API. Это дополнение, которое не требует изменений в вашем коде, так как сам интерфейс является просто еще одним прозрачным транспортом, всплывшим на MIDI API.
Этот тип интерфейса MIDI использует радио Bluetooth, уже в вашем ПК, телефоне, устройстве IoT или другое устройство Windows 10 для общения с периферийными устройствами Bluetooth Midi, такими как клавиатуры, педали и контроллеры. В настоящее время сам компьютер может’это периферийным, но мы’Посмотрите на это на будущее. Хотя есть несколько отличных Din Midi для Bluetooth Le Midi и аналогичных адаптеров, для Bluetooth Le Midi в Windows 10 не требуется дополнительного оборудования, если у вашего ПК есть доступное радио Bluetooth LE.
Мы знаем, что задержка важна для музыкантов, поэтому мы убедились, что наша реализация конкурентоспособна с другими платформами. Конечно, Bluetooth имеет более высокую задержку, чем проводное USB -соединение, но этот компромисс может стоить того, чтобы устранить кабельный беспорядок.
В паре, периферийное устройство Bluetooth Le Midi будет отображаться в качестве устройства MIDI в Explorer и будет автоматически включена в перечисление устройства UWP MIDI. Это полностью прозрачно для вашего приложения.
Для получения дополнительной информации о том, как обнаружить и сочетать устройства, включая устройства Bluetooth Le Midi, см. Пример перечисления устройства и спаривания на GitHub.
Мы добавили эту возможность в Windows 10 Anniversary Edition в качестве прямого результата партнерских и клиентских отзывов. я’M действительно взволнован Bluetooth Le Midi в Windows 10 и устройствах, которые теперь можно использовать в Windows 10.
Поддержка настольного приложения для UWP MIDI API
Мы знаем, что большинство музыкантов используют настольные DAW и утилиты Win32. UWP MIDI API доступен для настольных приложений, но мы знаем, что доступ к API UWP с разных языков и средами для строительства может быть сложным.
Чтобы помочь разработчикам настольных приложений с новым API и уменьшить трение, мой коллега Дейл Штанген в нашей команде WDG/Pax Spark собрал обертку Win32 для Windows 10 UWP MIDI API.
Работа, которую выполняет наша команда, включая эту обертку API, в основном управляется партнером. Это означает, что в результате запросов и обратной связи мы создаем вещи, позволяющие партнерам добиться успеха в Windows. Один из партнеров, с которыми мы работали при создании, – это Cakewalk, производители популярного настольного настольного приложения Sonar.
Это то, что их разработчики должны были сказать о обертке Win32 для UWP MIDI API, и о нашей поддержке Bluetooth Le Midi:
“Мы’Повторный рад видеть, как Microsoft поддерживает спецификацию Bluetooth MIDI и подвергает ее разработчикам Windows через упрощенный API. Используя новую обертку Win32 для UWP MIDI API, мы смогли очень быстро прототипировать поддержку Bluetooth MIDI. В Cakewalk мы’Повторный взгляд на поддержку беспроводных периферийных устройств, так что это очень приятное дополнение от Microsoft.”
Ноэль Бортвик, технический директор, Cakewalk
Мы любим работать с такими замечательными партнерами, как Cakewalk, зная, что результат будет непосредственно принести пользу нашим взаимным клиентам.
Эта обертка Win32 позволяет использовать API так же, как и любой API Flat Win32. Он увеличивает все возможности API Windows 10 UWP MIDI и устраняет требование для вашего приложения Win32, чтобы быть UWP-AWARE. Кроме того, там’S не требуется использовать C ++/CX или иным образом изменить ваши инструменты и процессы сборки. Здесь’S A C ++ Win32 Console App Пример:
// Открыть Midi Out Port 0
result = gmidioutportopenfunc (midiptr, 0, & gmidioutport);
if (результат != Winrt_no_error)
Cout goto learup;
>
// Отправить записку в сообщение в порт MIDI Out
Без знака буфера [3] = < 144, 60 , 127 >;
Cout gmidioutportsendfunc (Gmidioutport, Buffer, 3);
// Отправить записку с сообщения в порт MIDI Out
Cout Buffer [0] = 128;
gmidioutportsendfunc (Gmidioutport, Buffer, 3);
Этот API оптимизирован для работы с существующими приложениями Win32, поэтому мы отказываемся от сильных сообщений MIDI и работают вместо этого с байтовыми массивами, как разработчики музыкальных приложений Win32, привыкли к.
Мы’Re все еще получает отзывы от партнеров и разработчиков на обертке API, и пожелает ваш. Вы можете найти исходный код на GitHub. Мы можем изменить местоположение позже, так что АКА.MS Link (http: // aka.MS/WIN10MIDIWIN32) – это тот, который вы хотите сохранить под рукой.
Для разработчиков, использующих недавние версии Visual Studio, мы’VE также сделал удобный пакет Nuget.
Мы’RE уже работая с партнерами по настольным приложениям для включения в свои приложения. Если у вас есть настольное приложение, нацеленное на профессиональных музыкантов, и у вас есть вопросы, пожалуйста, свяжитесь со мной по адресу @pete_brown в Твиттере или Пит Дот Браун в Microsoft Dot Com.
Миди -помощники библиотеки для приложений Windows Store
В дополнение к обертке API Win32, у нас также есть несколько небольших помощников для разработчиков приложений и пользователей PowerShell.
Первый – это мой вспомогатель Windows 10 UWP MIDI API, для приложений C#, VB и C ++ Windows. Это предназначено для того, чтобы облегчить перечисление устройств MIDI, привязанность к результатам в XAML и реагировать на любые изменения горячей пробки/отключения. Это’S доступен как в качестве источника, так и в виде скомпилированного пакета Nuget.
Он включает в себя класс наблюдателя с xaml-дружественными для привязываемых / наблюдаемых коллекций для экземпляров информации об устройстве.
Сообщения RPN и NRPN
Кроме того, библиотека Helper содержит код для оказания помощи с сообщениями RPN (зарегистрированный номер параметра) и NRPN (номер незарегистрированного параметра). Это может быть более сложным для новых разработчиков, потому что они представляют собой логические сообщения, состоящие из нескольких различных сообщений, агрегированных вместе, отправленных последовательно.
Потому что мы разоблачили окна.Устройства.Миди.Интерфейс Imidimessage в UWP, и базовый выходной код MIDI отправляет все, что находится в буфере, создание сильно напечатанных классов агрегатных сообщений было довольно простым. При отправке сообщений вы используете эти классы, как и любое другое, сильно напечатанное MIDI Message.
я’M Исследование включения поддержки предлагаемого MPE (многомерная полифоническая экспрессия), а также для анализа и агрегирования входящих RPN -сообщений и NRPN. Если эти функции будут полезны для вас в ваших собственных приложениях, пожалуйста, свяжитесь со мной и дайте мне знать.
Миди -часы генератор
Еще одна часть, которую включает в себя библиотеку, – это генератор MIDI Clock. Если вам нужен генератор MIDI Clock (не для цикла управления секвенсором, а просто для создания исходящих сообщений часов), библиотека содержит реализацию, которую вы найдете полезным. Здесь’S, как вы используете его из C#:
Частный MidiclockGenerator _clock = новый MidiclockGenerator ();
…
_Часы.Sendmidistartmessage = true;
_Часы.Sendmidistopmessage = true;
FOREACH (Информация DeviceInformation в DeviceWatcher.OutputportDescriptors)
var port = (midioutport) ждать midioutport.Fromidasync (информация.Идентификатор);
if (порт != null)
_Часы.Outputports.Добавить (порт);
>
public void startClock ()
_Часы.Начинать();
>
Public Void Sopclock ()
_Часы.Останавливаться();
>
My Github Repo включает в себя источник C ++/CX и клиентское приложение C#/XAML. В сторону: это был мой первый проект C ++/CX. Хотя я все еще нахожу C# для большинства задач, я нашел здесь C ++ CX довольно доступным. Если вы’Re A C# Developer, который думал об использовании C ++ CX, дайте ему вихрь. Вы можете найти его более знакомым, чем вы ожидаете!
Эта библиотека поможет разработчикам следить за лучшими практиками для приложений MIDI в магазине Windows. Как и с настольными приложениями, если вы’Построить здесь приложение, ориентированное на музыканта, и у вас есть вопросы, пожалуйста, свяжитесь со мной по адресу @pete_brown в Twitter, или Пит Дот Браун в Microsoft Dot Com.
Вторая Helper Library – это набор команд PowerShell для использования Windows 10 UWP MIDI API. я’В поговорил с людьми, которые используют это для автоматизации сценариев обновлений MIDI для синхронизации различных миксеров в большой инсталляции и других, которые используют его как “клей” Для перевода сообщений между различными устройствами. Там’Много вы можете сделать с PowerShell в Windows 10, и теперь Миди является частью этого. Репо включает примеры использования, поэтому я выиграл’t повторите это здесь.
Заключение
я’Я действительно взволнован работой, которую мы продолжаем выполнять в аудиосамберетельном пространстве, чтобы помочь музыкантам и разработчикам музыкальных приложений в Windows.
В целом, UWP MIDI API, обертка WIN32 для UWP MIDI API и Helper Bibraries для приложений Windows Store и для сценариев PowerShell позволяет приложениям и сценариям воспользоваться последними технологиями MIDI в Windows 10, включая Bluetooth Midi.
я’M очень с нетерпением жду предстоящих приложений для настольных компьютеров и магазинов Windows, которые будут поддерживать этот API, и такие технологии, как Bluetooth Le Midi. И, как я упоминал выше, пожалуйста, свяжитесь со мной напрямую, если вы’Построить приложение для профессионального музыканта и нуждаться в руководстве или иным образом иметь вопросы.
Ресурсы
- Начните разрабатывать приложения UWP
- Устройства.Документация MIDI имена. Документация
- Официальный образец Windows 10 UWP MIDI API
- Github Repo для Win32 Midi Wrapper
- Пит’S GitHub Repos с MIDI и аудио -проектами
- Nuget Package для Win32 Midi Wrapper
- Пит Браун Summer Namm 2015 Основной доклад о Windows 10
- Миди ассоциация
- Студия на ладони: разработка приложений для создания аудио и видео для Windows 10
- Пространственный аудио с аудиографом в UWP
- Пространственный аудио в приложениях и играх UWP
Скачать Visual Studio, чтобы начать.
Команда Windows хотела бы услышать ваши отзывы. Пожалуйста, сохраните отзывы, используя наш сайт разработчика Windows USERVOICE. Если у вас есть прямая ошибка, используйте инструмент обратной связи Windows, встроенный непосредственно в Windows 10.
Midi Port Driver
Драйвер порта MIDI управляет синтезатором MIDI или устройством захвата. Драйвер адаптера предоставляет соответствующий драйвер MIDI Miniport, который связывается с объектом Driver Midi Port, чтобы сформировать MIDI -фильтр (см. MIDI и DirectMusic Filter.
Драйвер порта MIDI обнажает интерфейс iportmidi для драйвера Miniport. Iportmidi наследует методы в базовом интерфейсе iport. Iportmidi предоставляет следующие дополнительные методы:
Уведомляет драйвер порта, что MIDI -синтезатор или устройство захвата продвинулись в новую позицию в потоке MIDI. Iportmidi :: registerservicegroup
Регистрирует объект сервисной группы с драйвером порта. Сервисная группа содержит список из одной или нескольких средств службы, которые должны быть вызваны при вызове драйвера Miniport Поставить в известность; Для получения дополнительной информации см. Объекты Service Snoining and Service Group.
Объекты MIDI -порта и драйвера Miniport общаются друг с другом через их соответствующие Iportmidi и Iminiportmidi интерфейсы. Драйвер Miniport использует драйвер порта Iportmidi интерфейс для уведомления о драйвере порта об аппаратном прерывании. Кроме того, драйвер порта связывается с объектами потока драйвера Miniport через свои интерфейсы iminiportmidistream.
В Windows XP, а затем, Iportmidi И интерфейсы iportdmus реализованы в одном модуле внутреннего драйвера. Эта консолидация облегчена сходством этих двух интерфейсов. Например, одни и те же методы определены для обоих интерфейсов. Приложения, написанные для предыдущих версий Windows Iportmidi и Iportdmus Интерфейсы, возникающие в результате консолидации водителей порта MIDI и DMUS.
Обратная связь
Отправить и просмотреть обратную связь для
Улучшения MIDI в Windows 10
Недавно Пит Браун из Microsoft опубликовал очень информативный пост в блоге о улучшениях MIDI в Windows 10.
Пост в блоге охватывает ряд тем, включая
- Основы UWP MIDI – Использование MIDI в приложениях Windows Store
- Новая поддержка Bluetooth Le Midi в обновлении Windows 10 Anniversary
- Win32 обертка для UWP MIDI (делая API доступным для настольных приложений)
- Миди -вспомогательные библиотеки для C# и PowerShell
Улучшения MIDI в Windows 10 | Создание приложений для Windows
«Мы рады видеть, что Microsoft поддерживает спецификацию Bluetooth MIDI и подвергает ее разработчикам Windows через упрощенный API. Используя новую обертку Win32 для UWP MIDI API, мы смогли очень быстро прототипировать поддержку Bluetooth MIDI. В Cakewalk мы стремимся поддержать беспроводные периферийные устройства, так что это очень приятное дополнение от Microsoft.”
Ноэль Бортвик, технический директор, Cakewalk
Существует также хорошее объяснение в статье Пита о том, как работают RPN и NRPNS и их структуру данных.
С выпуском Windows 10, все три из основных компаний операционной системы (Apple, Google и Microsoft) имеют разработку стандарта ассоциации производителей MIDI для MIDI, а не Bluetooth Low Energy, которую можно найти в разделе Spects этого сайта и доступен для загрузки членами MIDI Association бесплатно.