Windows 10 MIDI Drivers: Jak je zainstalować w kilku krokach

Zespół Windows chciałby usłyszeć twoją opinię. Proszę zachować opinię przy użyciu naszej witryny Uservoice Windows Developer. Jeśli masz bezpośredni błąd, skorzystaj z narzędzia Windows Feed Informacje wbudowane bezpośrednio w system Windows 10.

Midi

Ten artykuł pokazuje, jak wyliczyć urządzenia MIDI (interfejs cyfrowy instrumentu muzycznego) oraz wysłać i odbierać wiadomości MIDI z uniwersalnej aplikacji Windows. Windows 10 obsługuje MIDI w stosunku do USB (zgodny z klasą i większość zastrzeżonych sterowników), MIDI nad Bluetooth LE (Edycja rocznicowa Windows 10 i później) oraz poprzez swobodnie dostępne produkty stron trzecich, MIDI przez Ethernet i kierował MIDI.

Wymień urządzenia MIDI

Przed wyliczeniem i użyciem urządzeń MIDI, dodaj następujące przestrzenie nazw do swojego projektu.

za pomocą Windows.Urządzenia.Wyliczenie;
za pomocą Windows.Urządzenia.Midi;
za pomocą systemu.Gwintowanie.Zadania;

Dodać Skrzynka na listy Kontrola strony XAML, która pozwoli użytkownikowi wybrać jedno z urządzeń wejściowych MIDI dołączone do systemu. Dodaj kolejny, aby wymienić urządzenia wyjściowe MIDI.

FINDALLASYNC metoda Informacje o urządzeniu Klasa służy do wyliczenia wielu różnych rodzajów urządzeń, które są rozpoznawane przez system Windows. Aby określić, że chcesz, aby metoda znajdowała urządzenia wejściowe MIDI, użyj łańcucha selektora zwróconego przez Midiinport.GetDeviceselector. FINDALLASYNC zwraca a DeviceInformationCollection to zawiera Informacje o urządzeniu Dla każdego urządzenia wejściowego MIDI zarejestrowanego w systemie. Jeśli zwrócona kolekcja nie zawiera żadnych elementów, nie ma dostępnych urządzeń wejściowych MIDI. Jeśli w kolekcji znajdują się przedmioty, zapętaj Informacje o urządzeniu obiekty i dodaj nazwę każdego urządzenia do urządzenia wejściowego MIDI Skrzynka na listy.

Prywatne zadanie async enumerateMidiinputDevices ()
{
    // Znajdź wszystkie wejściowe urządzenia MIDI
    String midiinputQueryString = midiinport.GetDeviceselector ();
    DeviceInformationCollection midiinputDevices = czeka na formowanie się urządzeń.FINDALLASYNC (midiinputQueryString);
    MidiinportListbox.Rzeczy.Jasne();
    // zwróć, jeśli nie są podłączone żadne urządzenia zewnętrzne
    if (midiinputDevices.Count == 0)
    {
        Ten.MidiinportListbox.Rzeczy.Dodaj („Nie znaleziono urządzeń wejściowych MIDI!");
        Ten.MidiinportListbox.Isenabled = false;
        powrót;
    }
    // w przeciwnym razie dodaj każde podłączone urządzenie wejściowe do listy
    Foreach (DeviceInformation DeviceInfo w midiinputDevices)
    {
        Ten.MidiinportListbox.Rzeczy.Dodaj (DeviceInfo.Nazwa);
    }
    Ten.MidiinportListbox.Isenabled = true;
}

Wyliczanie urządzeń wyjściowych MIDI działa dokładnie w ten sam sposób, co wyliczenie urządzeń wejściowych, z tym wyjątkiem, że należy określić ciąg selektora zwrócony przez Midioutport.GetDeviceselector Podczas dzwonienia FINDALLASYNC.

Prywatne zadanie async enumeratemioutputDevices ()
{
    // Znajdź wszystkie wyjściowe urządzenia MIDI
    String midioutportQueryString = midioutport.GetDeviceselector ();
    DeviceInformationCollection midioutputDevices = czeka na formowanie się.FINDALLASYNC (MIDIOUTPORTQUERSSTRING);
    MidioutportListbox.Rzeczy.Jasne();
    // zwróć, jeśli nie są podłączone żadne urządzenia zewnętrzne
    if (midioutputDevices.Count == 0)
    {
        Ten.MidioutportListbox.Rzeczy.Dodaj („Nie znaleziono urządzeń wyjściowych MIDI!");
        Ten.MidioutportListbox.Isenabled = false;
        powrót;
    }
    // w przeciwnym razie dodaj każde podłączone urządzenie wejściowe do listy
    Foreach (DeviceInformation DeviceInfo w midioutputDevices)
    {
        Ten.MidioutportListbox.Rzeczy.Dodaj (DeviceInfo.Nazwa);
    }
    Ten.MidioutportListbox.Isenabled = true;
}

Utwórz klasę pomocnika obserwatora urządzeń

Okna.Urządzenia.Wyliczenie Przestrzeń nazw zapewnia DeviceWatcher które mogą powiadomić aplikację, jeśli urządzenia są dodawane lub usuwane z systemu lub jeśli informacje o urządzeniu są aktualizowane. Ponieważ aplikacje obsługujące mid-obsługujące zwykle są zainteresowane zarówno urządzeniami wejściowymi, jak i wyjściowymi, ten przykład tworzy klasę pomocniczą, która implementuje DeviceWatcher Wzór, tak aby ten sam kod mógł być używany zarówno dla urządzeń wejściowych MIDI, jak i MIDI, bez potrzeby powielania.

Dodaj nową klasę do swojego projektu, aby służyć jako obserwator urządzeń. W tym przykładzie klasa jest nazwana MyMidideviceWatcher. Reszta kodu w tej sekcji służy do wdrożenia klasy pomocniczej.

Dodaj kilka zmiennych członków do klasy:

  • A DeviceWatcher obiekt, który będzie monitorować zmiany urządzeń.
  • Ciąg wyboru urządzenia, który będzie zawierał MIDI w ciągu selektora portu dla jednej instancji i ciąg selektora MIDI OUT dla innej instancji.
  • A Skrzynka na listy kontrola, która zostanie wypełniona nazwami dostępnych urządzeń.
  • A COREDISPATCHER To jest wymagane do aktualizacji interfejsu użytkownika z wątku innego niż wątek interfejsu użytkownika.
DeviceWatcher DeviceWatcher;
String DeviceSelectorString;
ListBox DeviceListbox;
Coredispatcher Coredispatcher;

Dodać DeviceInformationCollection właściwość używana do dostępu do bieżącej listy urządzeń spoza klasy pomocniczej.

public DeviceInformationCollection DeviceInformationCollection {get; Prywatny zestaw; }

W konstruktorze klasy dzwoniący przechodzi w ciągu selektora urządzenia MIDI, Skrzynka na listy do wymieniania urządzeń i Dyspozytor potrzebne do aktualizacji interfejsu użytkownika.

Dzwonić Informacje o urządzeniu.CreateWatcher Aby stworzyć nową instancję DeviceWatcher klasa, przechodząc w ciągu selektora urządzenia MIDI.

Zarejestruj obsługę obserwatorów.

public myMidideviceWatcher (String MidideviceselectorString, ListBox MidideviceListbox, Dyspozytor COREDISpatcher)
{
    DeviceSelectorString = midideviceselectorString;
    deviceListbox = midideviceListbox;
    COREDISPATCHER = Dispatcher;
    DeviceWatcher = DeviceInformation.CreateWatcher (DeviceSelectorString);
    DeviceWatcher.Dodany += DeviceWatcher_Added;
    DeviceWatcher.Usunięte += DeviceWatcher_Removed;
    DeviceWatcher.Aktualizowany += DeviceWatcher_updated;
    DeviceWatcher.EnumerationCompleted += DeviceWatcher_enumerationCompleted;
}

Pytanie 1: Jak mogę wyliczyć urządzenia wejściowe MIDI w uniwersalnej aplikacji Windows?

Możesz wyliczyć urządzenia wejściowe MIDI w uniwersalnej aplikacji Windows za pomocą FINDALLASYNC Metoda Informacje o urządzeniu klasa. Aby określić, że chcesz znaleźć tylko urządzenia wejściowe MIDI, użyj ciągu selektora zwróconego przez Midiinport.GetDeviceselector. Pętla przez Informacje o urządzeniu obiekty w zwróconych DeviceInformationCollection i dodaj nazwę każdego urządzenia do sterowania ListBox.

Pytanie 2: Jak mogę wyliczyć urządzenia wyjściowe MIDI w uniwersalnej aplikacji Windows?

Możesz wyliczyć urządzenia wyjściowe MIDI w uniwersalnej aplikacji Windows, używając tej samej metody, co wyliczenie urządzeń wejściowych. Po prostu użyj ciągu selektora zwróconego przez Midioutport.GetDeviceselector zamiast tego dzwoniąc FINDALLASYNC.

Pytanie 3: Jak utworzyć klasę pomocnika obserwatora urządzeń w uniwersalnej aplikacji Windows?

Możesz utworzyć klasę pomocnika obserwatora urządzeń w aplikacji Universal Windows, wdrażając DeviceWatcher wzór z Okna.Urządzenia.Wyliczenie Przestrzeń nazw. Pozwala to na powiadomienie aplikacji, gdy urządzenia zostaną dodane lub usunięte z systemu lub jeśli informacje o urządzeniu są aktualizowane. Klasa pomocnicza może być używana zarówno dla urządzeń wejściowych MIDI, jak i wyjściowych bez powielania kodu.

Pytanie 4: Jak mogę użyć sterowania ListBox do listy urządzeń wejściowych MIDI w uniwersalnej aplikacji Windows?

W uniwersalnej aplikacji Windows możesz użyć sterowania ListBox, aby wymienić urządzenia wejściowe MIDI. Dodaj kontrolę ListBox do swojej strony XAML i wypełnij ją nazwami urządzeń wejściowych MIDI, zapętlając się przez Informacje o urządzeniu obiekty w DeviceInformationCollection uzyskany z FINDALLASYNC.

Pytanie 5: Jak mogę użyć sterowania ListBox do listy urządzeń wyjściowych MIDI w uniwersalnej aplikacji Windows?

Korzystanie z sterowania ListBox do listy urządzeń wyjściowych MIDI w uniwersalnej aplikacji Windows jest podobne do listy urządzeń wejściowych. Po prostu uzyskaj DeviceInformationCollection dla urządzeń wyjściowych za pomocą FINDALLASYNC i zapętlaj Informacje o urządzeniu Obiekty, aby wypełnić kontrolę ListBox.

Pytanie 6: Jak mogę zaktualizować interfejs użytkownika z wątku innego niż wątek interfejsu użytkownika w uniwersalnej aplikacji Windows?

Możesz zaktualizować interfejs użytkownika z wątku innego niż wątek interfejsu użytkownika w uniwersalnej aplikacji Windows za pomocą COREDISPATCHER klasa. Przekaż instancję COREDISpatcher do klasy obserwatora urządzeń i użyj jej RunaSync metoda wykonywania kodu w wątku interfejsu użytkownika.

Pytanie 7: Jak mogę monitorować zmiany urządzeń w uniwersalnej aplikacji Windows?

W uniwersalnej aplikacji Windows możesz monitorować zmiany urządzeń za pomocą DeviceWatcher klasa. Zarejestruj obsługi zdarzeń dla Dodany, REMOVED, Zaktualizowane, I Uzupełniono zdarzenia obserwatora urządzeń, które należy powiadomić, gdy urządzenia są dodawane, usuwane, aktualizowane lub po zakończeniu operacji wyliczenia.

Pytanie 8: Jak mogę obsłużyć zdarzenie, gdy nowe urządzenie MIDI jest dodawane w uniwersalnej aplikacji Windows?

Możesz obsłużyć zdarzenie, gdy nowe urządzenie MIDI jest dodawane w uniwersalnej aplikacji Windows, subskrybując Dodany zdarzenie obserwatora urządzeń. W obsłudze zdarzenia możesz zaktualizować interfejs użytkownika, aby odzwierciedlić nowe urządzenie.

Pytanie 9: Jak mogę obsłużyć zdarzenie, gdy urządzenie MIDI jest usuwane w uniwersalnej aplikacji Windows?

Aby obsłużyć zdarzenie, gdy urządzenie MIDI jest usuwane w aplikacji Universal Windows, zasubskrybuj REMOVED zdarzenie obserwatora urządzeń. W obsłudze zdarzenia możesz zaktualizować interfejs użytkownika, aby usunąć urządzenie z listy.

Pytanie 10: Jak mogę poradzić sobie z zdarzeniem, gdy informacje o urządzeniu MIDI są aktualizowane w uniwersalnej aplikacji Windows?

W aplikacji Universal Windows możesz obsłużyć zdarzenie, gdy informacje o urządzeniu MIDI są aktualizowane przez subskrypcję do Zaktualizowane zdarzenie obserwatora urządzeń. W obsłudze zdarzeń możesz zaktualizować interfejs użytkownika, aby odzwierciedlić zaktualizowane informacje o urządzeniu.

Pytanie 11: Jak mogę ustalić, czy nie ma dostępnych urządzeń wejściowych MIDI w uniwersalnej aplikacji Windows?

W uniwersalnej aplikacji Windows możesz ustalić, czy nie ma dostępnych urządzeń wejściowych MIDI, sprawdzając liczbę DeviceInformationCollection uzyskany z FINDALLASYNC. Jeśli liczba wynosi 0, oznacza to, że nie ma dostępnych urządzeń wejściowych MIDI.

Pytanie 12: Jak mogę ustalić, czy nie ma dostępnych urządzeń wyjściowych MIDI w uniwersalnej aplikacji Windows?

W uniwersalnej aplikacji Windows możesz ustalić, czy nie ma dostępnych urządzeń wyjściowych MIDI, sprawdzając liczbę DeviceInformationCollection uzyskany z FINDALLASYNC. Jeśli liczba wynosi 0, oznacza to, że nie ma dostępnych urządzeń wyjściowych MIDI.

Pytanie 13: Jak poradzić sobie z zdarzeniem, gdy wyliczenie urządzeń MIDI jest zakończone w uniwersalnej aplikacji Windows?

Możesz obsłużyć zdarzenie, gdy wyliczenie urządzeń MIDI jest zakończone w uniwersalnej aplikacji Windows, subskrybując Uzupełniono zdarzenie obserwatora urządzeń. W obsłudze zdarzenia możesz wykonać wszelkie niezbędne działania po zakończeniu wyliczenia.

Pytanie 14: Jak mogę sprawdzić, czy określone urządzenie MIDI jest urządzeniem wejściowym lub urządzeniem wyjściowym w uniwersalnej aplikacji Windows?

W uniwersalnej aplikacji Windows możesz sprawdzić, czy określone urządzenie MIDI jest urządzeniem wejściowym lub urządzeniem wyjściowym za pomocą Informacje o urządzeniu właściwości obiektu. Właściwości urządzenia zawierają informacje o typie urządzenia, takie jak to, czy jest to urządzenie wejściowe czy wyjściowe.

Pytanie 15: Jak mogę uzyskać dostęp do bieżącej listy urządzeń MIDI spoza klasy obserwatora urządzenia w aplikacji Universal Windows?

W aplikacji Universal Windows możesz uzyskać dostęp do bieżącej listy urządzeń MIDI spoza klasy obserwatora urządzenia za pomocą właściwości. Utwórz własność publiczną typu DeviceInformationCollection w klasie pomocniczej i ustaw swoją wartość za każdym razem, gdy lista urządzeń jest aktualizowana. Następnie możesz uzyskać dostęp do tej właściwości z innych części aplikacji, aby uzyskać bieżącą listę urządzeń MIDI.

Windows 10 MIDI Drivers: Jak je zainstalować w kilku krokach

Zespół Windows chciałby usłyszeć twoją opinię. Proszę zachować opinię przy użyciu naszej witryny Uservoice Windows Developer. Jeśli masz bezpośredni błąd, skorzystaj z narzędzia Windows Feed Informacje wbudowane bezpośrednio w system Windows 10.

Midi

Ten artykuł pokazuje, jak wyliczyć urządzenia MIDI (interfejs cyfrowy instrumentu muzycznego) oraz wysłać i odbierać wiadomości MIDI z uniwersalnej aplikacji Windows. Windows 10 obsługuje MIDI w stosunku do USB (zgodny z klasą i większość zastrzeżonych sterowników), MIDI nad Bluetooth LE (Edycja rocznicowa Windows 10 i później) oraz poprzez swobodnie dostępne produkty stron trzecich, MIDI przez Ethernet i kierował MIDI.

Wymień urządzenia MIDI

Przed wyliczeniem i użyciem urządzeń MIDI, dodaj następujące przestrzenie nazw do swojego projektu.

za pomocą Windows.Urządzenia.Wyliczenie; za pomocą Windows.Urządzenia.Midi; za pomocą systemu.Gwintowanie.Zadania; 

Dodać Skrzynka na listy Kontrola strony XAML, która pozwoli użytkownikowi wybrać jedno z urządzeń wejściowych MIDI dołączone do systemu. Dodaj kolejny, aby wymienić urządzenia wyjściowe MIDI.

FINDALLASYNC metoda Informacje o urządzeniu Klasa służy do wyliczenia wielu różnych rodzajów urządzeń, które są rozpoznawane przez system Windows. Aby określić, że chcesz, aby metoda znajdowała urządzenia wejściowe MIDI, użyj łańcucha selektora zwróconego przez Midiinport.GetDeviceselector. FINDALLASYNC zwraca a DeviceInformationCollection to zawiera Informacje o urządzeniu Dla każdego urządzenia wejściowego MIDI zarejestrowanego w systemie. Jeśli zwrócona kolekcja nie zawiera żadnych elementów, nie ma dostępnych urządzeń wejściowych MIDI. Jeśli w kolekcji znajdują się przedmioty, zapętaj Informacje o urządzeniu obiekty i dodaj nazwę każdego urządzenia do urządzenia wejściowego MIDI Skrzynka na listy.

Prywatne zadanie async enumerateMidiinputDevices () < // 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; >// w przeciwnym razie dodaj każde podłączone urządzenie wejściowe do listy Foreach (DeviceInformation DeviceInfo w midiinputDevices) < this.midiInPortListBox.Items.Add(deviceInfo.Name); >Ten.MidiinportListbox.Isenabled = true; > 

Wyliczanie urządzeń wyjściowych MIDI działa dokładnie w ten sam sposób, co wyliczenie urządzeń wejściowych, z tym wyjątkiem, że należy określić ciąg selektora zwrócony przez Midioutport.GetDeviceselector Podczas dzwonienia FINDALLASYNC.

Prywatne zadanie async enumeratemioutputDevices () < // 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; >// w przeciwnym razie dodaj każde podłączone urządzenie wejściowe do listy Foreach (DeviceInformation DeviceInfo w midioutputDevices) < this.midiOutPortListBox.Items.Add(deviceInfo.Name); >Ten.MidioutportListbox.Isenabled = true; > 

Utwórz klasę pomocnika obserwatora urządzeń

Okna.Urządzenia.Wyliczenie Przestrzeń nazw zapewnia DeviceWatcher które mogą powiadomić aplikację, jeśli urządzenia są dodawane lub usuwane z systemu lub jeśli informacje o urządzeniu są aktualizowane. Ponieważ aplikacje obsługujące mid-obsługujące zwykle są zainteresowane zarówno urządzeniami wejściowymi, jak i wyjściowymi, ten przykład tworzy klasę pomocniczą, która implementuje DeviceWatcher Wzór, tak aby ten sam kod mógł być używany zarówno dla urządzeń wejściowych MIDI, jak i MIDI, bez potrzeby powielania.

Dodaj nową klasę do swojego projektu, aby służyć jako obserwator urządzeń. W tym przykładzie klasa jest nazwana MyMidideviceWatcher. Reszta kodu w tej sekcji służy do wdrożenia klasy pomocniczej.

Dodaj kilka zmiennych członków do klasy:

  • A DeviceWatcher obiekt, który będzie monitorować zmiany urządzeń.
  • Ciąg wyboru urządzenia, który będzie zawierał MIDI w ciągu selektora portu dla jednej instancji i ciąg selektora MIDI OUT dla innej instancji.
  • A Skrzynka na listy kontrola, która zostanie wypełniona nazwami dostępnych urządzeń.
  • A COREDISPATCHER To jest wymagane do aktualizacji interfejsu użytkownika z wątku innego niż wątek interfejsu użytkownika.

DeviceWatcher DeviceWatcher; String DeviceSelectorString; ListBox DeviceListbox; Coredispatcher Coredispatcher; 

Dodać DeviceInformationCollection właściwość używana do dostępu do bieżącej listy urządzeń spoza klasy pomocniczej.

public DeviceInformationCollection DeviceInformationCollection

W konstruktorze klasy dzwoniący przechodzi w ciągu selektora urządzenia MIDI, Skrzynka na listy do wymieniania urządzeń i Dyspozytor potrzebne do aktualizacji interfejsu użytkownika.

Dzwonić Informacje o urządzeniu.CreateWatcher Aby stworzyć nową instancję DeviceWatcher klasa, przechodząc w ciągu selektora urządzenia MIDI.

Zarejestruj obsługę obserwatorów.

public myMidideviceWatcher (String MidideviceselectorString, ListBox MidideviceListbox, Dyspozytor COREDISpatcher)

DeviceWatcher ma następujące wydarzenia:

  • Dodany – Podniesiony, gdy do systemu dodaje się nowe urządzenie.
  • REMOVED – Podniesiony, gdy urządzenie jest usuwane z systemu.
  • Zaktualizowane – Podniesione, gdy informacje powiązane z istniejącym urządzeniem są aktualizowane.
  • Uzupełniono – Podniesiony, gdy obserwator zakończy wyliczenie żądanego typu urządzenia.

W przypadku modułu obsługi każdego z tych zdarzeń metoda pomocnika, Updatevices, jest wezwany do aktualizacji Skrzynka na listy z bieżącą listą urządzeń. Ponieważ Updatevices aktualizuje elementy interfejsu użytkownika i te obsługi zdarzeń nie są wywoływane w wątku interfejsu użytkownika, każde połączenie musi być zapakowane w połączenie RunaSync, co powoduje uruchomienie określonego kodu w wątku interfejsu użytkownika.

prywatny async void deviceWatcher_Removed (Sender DeviceWatcher, deviceInformationUpdate args) < await coreDispatcher.RunAsync(CoreDispatcherPriority.High, () =>< // Update the device list UpdateDevices(); >); > Private Async void DeviceWatcher_Added (Sender DeviceWatcher, DeviceInformation Args) < await coreDispatcher.RunAsync(CoreDispatcherPriority.High, () =>< // Update the device list UpdateDevices(); >); > Private Async void DeviceWatcher_enumerationCompleted (Sender DeviceWatcher, Object Args) < await coreDispatcher.RunAsync(CoreDispatcherPriority.High, () =>< // Update the device list UpdateDevices(); >); > Private Async void DeviceWatcher_updated (Sender DeviceWatcher, DeviceInformationUpdate Args) < await coreDispatcher.RunAsync(CoreDispatcherPriority.High, () =>< // Update the device list UpdateDevices(); >); > 

Updatevices Połączenia metody pomocniczej Informacje o urządzeniu.FINDALLASYNC i aktualizuje Skrzynka na listy z nazwami zwracanych urządzeń, jak opisano wcześniej w tym artykule.

prywatny async void aktualizedEvices () < // 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 w tym.DeviceInformationCollection) < deviceListBox.Items.Add(deviceInformation.Name); >> 

Dodaj metody, aby uruchomić obserwatora za pomocą DeviceWatcher Obiekt Początek metoda i zatrzymanie obserwatora za pomocą Zatrzymywać się metoda.

public void startwatcher () < deviceWatcher.Start(); >public void stopwatcher ()

Zapewnij niszczyciela, aby niezrealizować obserwatorów obserwatorów i ustawić obserwatora urządzenia na NULL.

~ MyMidideviceWatcher ()

Utwórz porty MIDI, aby wysłać i odbierać wiadomości

W kodzie za twoją stroną zadeklaruj zmienne członkowskie, aby przechowywać dwa instancje MyMidideviceWatcher Klasa pomocnicza, jedna dla urządzeń wejściowych i jeden dla urządzeń wyjściowych.

MyMidideviceWatcher InputDeviceWatcher; MyMidideviceWatcher OutputDeviceWatcher; 

Utwórz nową instancję klas pomocnika obserwatora, przechodząc w ciągu selektora urządzenia, Skrzynka na listy być zaludnionym i COREDISPATCHER obiekt, do którego można uzyskać dostęp za pośrednictwem strony Dyspozytor nieruchomość. Następnie wywołaj metodę, aby uruchomić każdy obiekt DeviceWatcher.

Krótko po każdym DeviceWatcher zostaje uruchomiony, zakończy wyliczenie obecnych urządzeń podłączonych do systemu i podniesie go Uzupełniono zdarzenie, które spowoduje każdy Skrzynka na listy Aby być aktualizowane o aktualne urządzenia MIDI.

InputDeviceWatcher = new MyMidideviceWatcher (midiinport.GetDeviceselector (), midiinportListbox, dyspozytor); InputDeviceWatcher.Startwatcher (); OutputDeviceWatcher = new MyMidideviceWatcher (midioutport.GetDeviceselector (), midioutportListbox, dyspozytor); OutputDeviceWatcher.Startwatcher (); 

Gdy użytkownik wybiera element na wejściu MIDI Skrzynka na listy, Selekcja Wydarzenie jest podniesione. W obsługi tego wydarzenia dostęp do tego wydarzenia DeviceInformationCollection właściwość klasy pomocniczej, aby uzyskać bieżącą listę urządzeń. Jeśli na liście znajdują się wpisy, wybierz Informacje o urządzeniu obiekt z indeksem odpowiadającym Skrzynka na listy sterownica WybraneIndex.

Utwórz Midiinport Obiekt reprezentujący wybrane urządzenie wejściowe przez wywołanie Midiinport.Fromidasync, mijanie ID właściwość wybranego urządzenia.

Zarejestruj obsługę dla Wiadomość otrzymana zdarzenie, które jest podniesione, gdy wiadomość MIDI jest odbierana za pośrednictwem określonego urządzenia.

Midiinport Midiinport; IMIDIOUTPORT MIDIOUTPORT; 

prywatny async void midiinportListbox_SelectionChanged (nadawca obiektu, selekcjachangedEventArgs e) < var deviceInformationCollection = inputDeviceWatcher.DeviceInformationCollection; if (deviceInformationCollection == null) < return; >DeviceInformation Devinfo = DeviceInformationCollection [midiinportListbox.SelectedIndex]; if (devinfo == null) < return; >midiinport = czekaj na midiinport.FromIdasync (Devinfo.ID); if (midiinport == null) < System.Diagnostics.Debug.WriteLine("Unable to create MidiInPort from input device"); return; >Midiinport.MessageReceived += midiinport_messagereceived; > 

Kiedy Wiadomość otrzymana Prowadzony jest wywoływany, wiadomość jest zawarta w Wiadomość własność MidimessagereceiveVentargs. Typ obiektu wiadomości jest wartością od MidimessageType wyliczenie wskazujące rodzaj otrzymanego wiadomości. Dane wiadomości zależą od rodzaju wiadomości. Ten przykład sprawdza, czy wiadomość jest notatką na temat wiadomości, a jeśli tak, wyświetla kanał MIDI, Uwaga i prędkość wiadomości.

prywatny void midiinport_messagereceived (nadawca midiinport, midimessagereceiveVentargs 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); >> 

Selekcja moduł obsługi urządzenia wyjściowego Skrzynka na listy Działa tak samo jak obsługa urządzeń wejściowych, z tym wyjątkiem, że nie jest zarejestrowany.

prywatny async void midioutportListbox_SelectionChanged (nadawca obiektu, selekcja mangangedEventArgs e) < var deviceInformationCollection = outputDeviceWatcher.DeviceInformationCollection; if (deviceInformationCollection == null) < return; >DeviceInformation Devinfo = DeviceInformationCollection [midioutportListbox.SelectedIndex]; if (devinfo == null) < return; >MIDIOUTPORT = czekaj na midioutport.FromIdasync (Devinfo.ID); if (midioutport == null) < System.Diagnostics.Debug.WriteLine("Unable to create MidiOutPort from output device"); return; >> 

Po utworzeniu urządzenia wyjściowego możesz wysłać wiadomość, tworząc nowy Imidimessage dla rodzaju wiadomości, którą chcesz wysłać. W tym przykładzie wiadomość jest NoteonMessage. Wyślij wiadomość Metoda IMIDIOUTPORT Obiekt jest wywoływany, aby wysłać wiadomość.

Bajt Channel = 0; Uwaga bajtów = 60; prędkość bajtów = 127; Imidimessage midimessagetosend = nowy MidinoteOnMessage (kanał, notatka, prędkość); Midioutport.Sendmessage (midimessagetosend); 

Gdy aplikacja jest dezaktywowana, pamiętaj o posprzątaniu zasobów aplikacji. Nie rejestruj swoich obsługi zdarzeń i ustaw MIDI w portach i na zewnątrz obiektów portu, aby NULL. Zatrzymaj obserwatorów urządzeń i ustaw je na null.

InputDeviceWatcher.StopWatcher (); inputDeviceWatcher = null; OutputDeviceWatcher.StopWatcher (); OutputDeviceWatcher = null; Midiinport.MessageReceived -= midiinport_messagereceived; Midiinport.Dysponować(); midiinport = null; Midioutport.Dysponować(); midioutport = null; 

Korzystanie z wbudowanego systemu Windows General MIDI Synth

Po wyliczeniu wyjściowych urządzeń MIDI za pomocą techniki opisanej powyżej, aplikacja odkryje urządzenie MIDI o nazwie &bdquo;Microsoft GS WaveTable Synth&rdquo;. Jest to wbudowany ogólny syntezator MIDI, który możesz odtwarzać z aplikacji. Jednak próba utworzenia oparcia MIDI do tego urządzenia nie powiedzie się, chyba że uwzględniłeś rozszerzenie SDK dla wbudowanego syntezatora w twoim projekcie.

Aby uwzględnić ogólne rozszerzenie SDK MIDI Synth w projekcie aplikacji

  1. W Eksplorator rozwiązania, pod twoim projektem kliknij prawym przyciskiem myszy Bibliografia i wybierz Dodaj odniesienie.
  2. Rozwiń Uniwersalne okna węzeł.
  3. Wybierać Rozszerzenia.
  4. Z listy rozszerzeń wybierz Microsoft General MIDI DLS dla uniwersalnych aplikacji Windows.

Uwaga Jeśli istnieje wiele wersji rozszerzenia, należy wybrać wersję pasującą do celu dla Twojej aplikacji. Możesz zobaczyć, która wersja SDK Twoja aplikacja jest skierowana Aplikacja zakładka właściwości projektu.

Windows 10 MIDI Drivers: Jak je zainstalować w kilku krokach

Jak zainstalować sterowniki MIDI

Aby rozwiązać różne problemy z komputerem, zalecamy DriverFix: To oprogramowanie zapewni uruchomienie sterowników, a tym samym bezpieczeństwo przed typowymi błędami komputerowymi i awarią sprzętu. Sprawdź teraz wszystkie sterowniki w 3 łatwych krokach:

  1. Pobierz Driverfix (zweryfikowany plik pobierania).
  2. Kliknij Rozpocznij skanowanie Aby znaleźć wszystkie problematyczne sterowniki.
  3. Kliknij Zaktualizuj sterowniki Aby uzyskać nowe wersje i uniknąć awarii systemu.
  • Driverfix został pobrany przez 0 czytelników w tym miesiącu.

MIDI jest technicznym terminem dla interfejsu cyfrowego instrumentu muzycznego i składa się z urządzenia, które jest w stanie połączyć się z wieloma urządzeniami muzycznymi.

Kierowcy MIDI zostały pierwotnie wykonane w celu kontrolowania klawiatur z komputera. Kierowcy MIDI ewoluowały przez lata i są obecnie używane przez miliony użytkowników Windows 10 na całej planecie.

Szczególny przypadek dotyczy sterowników Bluetooth MIDI Windows 10, ponieważ wydają się one jeszcze delikatniejsze i mogą łatwo nie być rozpoznawane przez system Windows.

Czy Windows 10 obsługuje MIDI przez Bluetooth?

Tak, tak. Po prostu otwórz Ustawienia na komputerze i przejdź do Urządzenia, Następnie Bluetooth i inne urządzenia. Tutaj wybierz Bluetooth i sparuj swoje urządzenie.

Jednak niektórzy użytkownicy zgłosili, że ich urządzenie MIDI nie było już rozpoznawane po aktualizacji systemu Windows. Jeśli to jest również twój przypadek, tutaj&rsquo;S co sugerujemy:

  • Usuń wszystkie podłączone urządzenia MIDI i spróbuj je ponownie sparować (jak pokazano powyżej)
  • Kliknij prawym przyciskiem myszy ikonę głośności na pasku zadań i wybierz Dźwięki. Jeśli brakuje urządzenia MIDI, wybierz Pokaż urządzenia odłączone/wyłączone i zobacz, czy to pomaga.

Jak zainstalować sterowniki MIDI w systemie Windows 10?

1. Użyj narzędzia do rozwiązywania problemów z systemem Windows

  1. Przejść do pasek zadań Pole wyszukiwania.
  2. Typ Rozwiązywanie problemów.
  3. Wybierać Rozwiązywanie problemów z listy.
  4. Wybierać Sprzęt i urządzenia od rozwiązywania problemów.
  5. Po otwarciu narzędzie do rozwiązywania problemów kliknij Następny.
  6. Wybierz program, który nie działa z zaludnionej listy.
  7. Wybierz żądaną opcję rozwiązywania problemów.

Większość sprzętu jest plug-and-play. Oznacza to, że po prostu podłączają się do komputera, a komputer zainstaluje prawidłowe sterowniki.

To nie&rsquo;t zawsze ćwicz u użytkowników&rsquo; przychylność i nurka musi zostać pobrana z innego źródła. Przed poświęceniem czasu na poszukiwanie kierowcy wykonaj następujące zadania, aby rozwiązać problem:

Narzędzie do rozwiązywania problemów przetestuje program, aby upewnić się, że działa. Uruchom problem z kompatybilnością dla wszystkich innych programów, które nie są kompatybilne.

Nie kompatybilne? Żaden problem

  1. Kliknij w polu wyszukiwania paska zadań.
  2. Typ Uruchom programy.

  3. Wybierać Uruchom programy wykonane dla poprzednich wersji systemu Windows.
  4. To otworzy SZYBKI ZAPASZCZENIA.
  5. Postępuj zgodnie z podpowiedziami na ekranie.

Więc ty&rsquo;Próbowałem uruchomić rozwiązywnika problemów i to się nie stało&rsquo;t. To&rsquo;S okej, wróć i spróbuj ponownie. Istnieje sposób, aby Twój program był kompatybilny z wersją systemu Windows. Tutaj&rsquo;S Jak to zrobić:

Upewnij się, że uruchamiasz problem z kompatybilnością dla każdego programu wymagającego sterowników.

Wskazówka eksperta:

Sponsorowane

Nieaktualne kierowcy są głównym powodem problemów z błędami i systemem. Jeśli niektóre z plików brakuje lub awarie, zautomatyzowane rozwiązanie takie jak Fix może rozwiązać te problemy za kilka kliknięć. I jest również lekki w twoim systemie!

Czy masz problemy z rozwiązywaniem problemów z systemem Windows? Tutaj&rsquo;jest świetnym przewodnikiem o naprawieniu rozwiązywania problemów, jeśli przestał ci pracować.

2. Wyszukaj sterowniki

Ręczna instalacja sterowników to kolejna opcja. Ręczna instalacja sterowników może być niebezpieczna, jeśli pobierasz sterowniki z nieznanego lub nierozpoznanego źródła.

Upewnij się, że wszystkie sterowniki są pobierane z zaufanych źródeł, takich jak producenci&rsquo; strony internetowe.

Automatycznie aktualizuj sterowniki

Jeśli nie masz&rsquo;T nie chcę przejść przez problem ręcznego wyszukiwania sieci w poszukiwaniu najnowszego dostępnego sterownika, sugerujemy użycie oprogramowania do aktualizacji sterowników innych firm, które automatycznie zrobi to za Ciebie.

Oprogramowanie nie tylko z łatwością zaktualizuje oprogramowanie układowe, ale także sama w sobie skanuje urządzenie dla nowych sterowników, więc nie&rsquo;nawet muszę to zrobić.

3. Uruchom w trybie zgodności

  1. Znajdź program, który ty&rsquo;szuka biegu Tryb zgodności.
  2. Kliknij prawym przyciskiem myszy program i wybierz Nieruchomości.
  3. Kliknij na Zakładka kompatybilności.
  4. Kliknij pole w trybie zgodności.
  5. Wybierz wersję systemu Windows, nad którym program może pracować.
  6. Kliknij Stosować.

Większość programów ma możliwość uruchomienia w trybie kompatybilności. Aby uruchomić program w tym trybie, wykonaj wyżej wymienione kroki.

Przeczytaj więcej na ten temat

  • Napraw błąd naruszenia sterownika w systemie Windows 10
  • Jak naprawić nieaktualny błąd sterowników w systemie Windows 11
  • Windows nie może pobierać sterowników? Napraw to teraz za pomocą tych rozwiązań
  • Napraw błąd ACPI_DRIVER_INTERNAL w systemie Windows 10
  • Widząc kod błędu sterownika 32? Napraw to w 4 prostych krokach

4. Kiedy wszystko inne zawiedzie

Sterowniki MIDI są znacznie trudniejsze do zainstalowania w systemie Windows 10 ze względu na szereg problemów z kompatybilnością. Każdy z poprawek wymienionych w tym artykule może potencjalnie rozwiązać problem dla kierowcy.

Jeśli ty&rsquo;zabraknie opcji zadzwoń do producenta urządzenia i poproś o pomoc lub lokalizację kompatybilnych sterowników.

To&rsquo;o tym dla tego artykułu. Jeśli masz coś do dodania na ten temat, możesz to zrobić w sekcji komentarzy poniżej.

  • kierowca
  • Przewodniki systemu Windows 10

Ulepszenia MIDI w systemie Windows 10

W miarę ewolucji systemu Windows 10 nadal budujemy wsparcie technologii zorientowanych na muzyki.

Pozwalać&rsquo;s spójrz na MIDI. Windows ma wbudowaną obsługę MIDI sięgającą 16-bitowych dni. Od tego czasu większość interfejsów MIDI przeniosła się do USB, a nasza obsługa in-box dotrzymała tempa, a kierowca i interfejs API obsługujący te nowe interfejsy.

Osoby nieznane z technologią muzyczną mogą myśleć o MIDI jako po prostu .Pliki muzyczne. Ale to&rsquo;jest tylko niewielką częścią tego, czym naprawdę jest MIDI. Od standaryzacji w 1983 r. To&rsquo;S używane do wszystkiego, od kontrolowania syntezatorów i sekwencerów oraz zmiany łatek dla list zestawów, po synchronizację mikserów, a nawet przełączania kamer na podcasty za pomocą powierzchni sterowania MIDI. Nawet protokół Arduino Firmata oparty jest na MIDI.

W tym poście my&rsquo;Porozmawiaj o kilku nowych rzeczach&rsquo;stworzone, aby MIDI była jeszcze bardziej przydatna w twoich aplikacjach:

  • UWP MIDI Basics – Korzystanie z MIDI w aplikacjach Windows Store
  • Nowa obsługa Bluetooth Le Midi w aktualizacji w systemie Windows 10
  • Opakowanie Win32 dla UWP MIDI (udostępnianie aplikacji API dla aplikacji komputerowych)
  • Biblioteki pomocnicze midi dla C# i PowerShell

Ponadto uwzględniliśmy szereg ulepszeń skoncentrowanych na dźwięku, gdy Windows 10 został wydany zeszłego lata. Ulepszenia te obejmowały: ulepszenia niskiego opóźnienia w WASAPI, dodatkowa praca sterownika z partnerami, aby oprzeć się do mniejszych buforów dla niższych opóźnień na nowoczesnych urządzeniach Windows 10, takich jak powierzchnia i telefony, takie jak 950/950xl; poprawki umożliwiające przetwarzanie surowego dźwięku bez DSP dodającego opóźnienia; nowy interfejs API audio i efektów o niskiej opóźnieniu Audiograph; I oczywiście nowy API MIDI UWP.

My&rsquo;VE niedawno dodało wsparcie dla przestrzennego dźwięku dla wciągających doświadczeń. Tej jesieni, w aktualizacji 1511, włączyliśmy bardzo przyszłość obsługi systemu operacyjnego dla urządzeń audio Thunderbolt 3, aby zapewnić nam&rsquo;Re, gdy producenci zaczynają tworzyć te urządzenia i ich wysokowydajne sterowniki audio. Łącznie, było to wiele świetnej pracy w systemie Windows Engineering, wszyscy atakujący muzyków i aplikacje do tworzenia muzyki.

UWP MIDI Basics

W systemie Windows 10 RTM w zeszłym roku wprowadziliśmy nowy interfejs API MIDI, dostępny dla aplikacji UWP na praktycznie wszystkich urządzeniach Windows 10, które zapewnia nowoczesny sposób dostępu do tych interfejsów MIDI. Stworzyliśmy ten interfejs API, aby zapewnić wysoką wydajność i elastyczną bazę, na której możemy zbudować obsługę nowych interfejsów MIDI.

Początkowo przedstawiamy ten interfejs API jako pakiet Nuget w systemie Windows 8.1 i otrzymałem wiele informacji zwrotnych od programistów aplikacji. To, co widzisz w systemie Windows 10, jest bezpośrednim wynikiem tej informacji zwrotnej i naszych testów.

API ładnie podłącza się do wyliczania urządzeń i interfejsów API obserwatorów w UWP, co ułatwia wykrywanie gorącej wtyczki/odłączania urządzeń podczas uruchomienia aplikacji.

Tutaj&rsquo;S prosty sposób na uzyskanie listy urządzeń MIDI i ich identyfikatorów, używając C#:

za pomocą Windows.Urządzenia.Midi;
za pomocą Windows.Urządzenia.Wyliczenie;

prywatny async void Listmididevices ()
// Wymień urządzenia wejściowe

var devicelist = oczekiwanie na urządzenie.FindallAsync (
Midiinport.GetDeviceselector ());

Foreach (var deviceInfo in DeviceList)
System.Diagnostyka.Odpluskwić.Writeline (DeviceInfo.ID);
System.Diagnostyka.Odpluskwić.Writeline (DeviceInfo.Nazwa);
System.Diagnostyka.Odpluskwić.Writeline (&bdquo;———-&rdquo;);
>

// urządzenia wyjściowe są wymieniane w ten sam sposób, ale
// Korzystanie z Midioutport.GetDeviceselector ()
>

I tu&rsquo;S Jak skonfigurować obserwator i obsługiwać wydarzenia wyliczające/obserwatorów, a także uzyskać listę połączonych interfejsów. To jest nieco więcej kodu, ale to&rsquo;jest bardziej odpowiednie dla większości aplikacji:

Private Void StartwatchingInputDevices ()
var Watcher = urządzenie.CreateWatcher (
Midiinport.GetDeviceselector ());

obserwator.Dodane += onmidiinputDeviceDded;
obserwator.Usunięte += onmidiinputDeviceRemoved;
obserwator.EnumerationCompleted += onMidiinputDeviceEnumerationCompleted;

Prywatny pustka onmidiinputDeviceEnumeration Completes
Sender DeviceWatcher, Object Args)
// Wstępne wyliczenie jest kompletne. To jest wtedy, gdy
// możesz przedstawić listę interfejsów
// Użytkownik Twojej aplikacji.
>

prywatna pustka onmidiinputDeviceRemoved
DeviceWatcher Sender, DeviceInformationUpdate Args)
// obsługa usunięcia urządzenia wejściowego MIDI
>

prywatny pustka onmidiinputDeviceDdded (
Sender DeviceWatcher, ARGSINFORMATIONS
// obsługa dodanie nowego urządzenia wejściowego MIDI
>

Korzystanie z obserwatora do listy urządzeń i obsługi dodawania/usuwania to najlepsza praktyka do naśladowania w aplikacjach. Nikt nie chce ponownie uruchomić aplikacji tylko dlatego, że zapomnieli podłączyć lub włączyć kontroler MIDI. Korzystanie z obserwatora ułatwia odpowiednie obsługę tych dodatków/usuwania w czasie wykonywania.

API jest prosty w użyciu, z silnie wpisanymi klasami dla wszystkich standardowych komunikatów, a także obsługą operacji opartych na sysexie i. Ten przykład C# pokazuje, jak otwierać porty wejściowe i wyjściowe i odpowiadać na określone komunikaty MIDI.

za pomocą Windows.Urządzenia.Midi;
za pomocą Windows.Urządzenia.Wyliczenie;

prywatna async void midiexample ()
String OutportId = “ID Przejdź przez wyliczenie urządzenia”;
String inportId = “ID dostajesz przez wyliczenie urządzenia”;

// Otwórz port wyjściowy i wyślij wiadomość
var outport = oczekiwanie na midioutport.FromIdasync (OutportId);
var noteOnMessage = nowy MidinoteOnMessage (0, 110, 127);
Wport.Sendmessage (notathmessage);

// Otwórz port wejściowy i słuchaj wiadomości
var inport = oczekiwanie na midiinport.FromIdasync (inportId);
Worp.Mesagereceived += onMidimessageReceived;
>

Prywatny pustka OnmidimessageReceived (nadawca Midiinport,
MidimessagereceiveVentargs args)
przełącznik (args.Wiadomość.Typ)
Case MidimessageType.Noteon:
przerwa;
Case MidimessageType.Polyphonickeypressure:
przerwa;
// itp.
>
>

W większości przypadków sprawdzisz rodzaj wiadomości, a następnie rzucić imidimessage do jednego z silnie typowych wiadomości zdefiniowanych w systemie Windows.Urządzenia.Przestrzeń nazw MIDI, taka jak MidinoteonMessage lub MidipitchBendChangemessage. Ty&rsquo;Nie wymaga jednak tego; Zawsze możesz pracować z bajtów surowych, jeśli wolisz.

API MIDI Windows 10 UWP nadaje się do tworzenia wszelkiego rodzaju aplikacji skoncentrowanych na systemie Windows. Możesz tworzyć powierzchnie sterujące, sekwencery, syntezatory, aplikacje użyteczności, bibliotekarze łatek, kontrolerów oświetleniowych, syntezatory cewki Tesla o wysokim napięciu i wiele więcej.

Podobnie jak starsze interfejsy API MIDI, interfejs API MIDI Windows 10 działa dobrze z dodatkami stron trzecich, takimi jak Tobias Erichsen&rsquo;S Great RTPMIDI Driver, zapewniający wsparcie dla MIDI w sieci Wired i Wi-Fi Networking.

Jedną wielką cechą nowego interfejsu API jest to, że jest on multi-client. Tak długo, jak wszystkie aplikacje z otwartym portem używają interfejsu API MIDI Windows 10, a nie starszych interfejsów API Win32 MME lub DirectMusic, mogą udostępniać to samo urządzenie. To jest coś, co starsze API don&rsquo;t Uchwyt bez niestandardowych sterowników i był powszechnym żądaniem naszych partnerów i klientów.

Wreszcie, to&rsquo;Ważne jest, aby pamiętać, że interfejs API MIDI Windows 10 działa ze wszystkimi uznanymi urządzeniami MIDI, niezależnie od tego, czy korzystają z sterowników klasowych, czy własnych niestandardowych sterowników. Obejmuje to wiele narzędzi MIDI opartych na oprogramowaniu zaimplementowanych jako sterowniki w systemie Windows 10.

Nowa obsługa Bluetooth Le Midi w UWP MIDI

Oprócz wsparcia wieloklasowego i ulepszeń&rsquo;Wykonane w zakresie wydajności i stabilności, dobrym powodem użycia interfejsu API MIDI Windows 10 jest wsparcie dla nowych standardów i transportów.

Microsoft aktywnie uczestniczy w procesie standardów MIDI i ma przedstawicieli w grupach roboczych. W Microsoft jest nas kilku, którzy uczestniczą bezpośrednio w tworzeniu, weryfikacji i głosowaniu standardów dla MIDI, a ogólnie na dźwięk.

Jednym ekscytującym i stosunkowo nowym standardem MIDI, który szybko zyskuje na popularności, jest Bluetooth Le Midi. Microsoft głosował za ratyfikacją standardu na podstawie pionierskiej pracy, którą Apple wykonał w tej przestrzeni; W rezultacie Apple, Microsoft i inni są kompatybilne ze standardem, który widzi prawdziwą przyczepność w społeczności muzyków, a już ma wiele kompatybilnych peryferyjnych.

W edycji w systemie Windows 10, my&rsquo;ve zawarte obsługę in-box dla Bluetooth le midi dla dowolnej aplikacji za pomocą interfejsu API MIDI Windows 10 UWP.

W edycji w systemie Windows 10, my&rsquo;ve zawarte obsługę in-box dla Bluetooth le midi dla dowolnej aplikacji za pomocą interfejsu API MIDI Windows 10 UWP. Jest to dodatek, który nie wymaga zmian w kodzie, ponieważ sam interfejs jest po prostu kolejnym przezroczystym transportem, który pojawił się przez MIDI API.

Ten typ interfejsu MIDI korzysta z radia Bluetooth już na komputerze, telefonie, urządzeniu IoT lub innym urządzeniu z systemem Windows 10 do rozmowy z peryferyjami Bluetooth MIDI, takimi jak klawiatury, pedały i kontrolery. Obecnie sam komputer może&rsquo;być peryferyjnym, ale my&rsquo;Patrząc na to na przyszłość. Chociaż istnieje świetne din midi do Bluetooth le midi i podobne adaptery, nie jest wymagany dodatkowy sprzęt dla Bluetooth le Midi w systemie Windows 10, o ile komputer ma dostępny radio z Bluetooth Le.

Wiemy, że opóźnienie jest ważne dla muzyków, dlatego upewniliśmy się, że nasza wdrożenie jest konkurencyjne z innymi platformami. Oczywiście Bluetooth ma wyższe opóźnienie niż połączenie USB, ale ten kompromis może być tego wart, aby wyeliminować bałagan kablowy.

Po sparowaniu peryferyjna Bluetooth Le Midi pojawi się jako urządzenie MIDI w Eksploratorze urządzenia i zostanie automatycznie uwzględnione w wyliczeniu urządzenia MIDI UWP. Jest to całkowicie przejrzyste dla Twojej aplikacji.

Aby uzyskać więcej informacji na temat odkrywania i sparowania urządzeń, w tym urządzeń Bluetooth Le Midi, zobacz przykład wyliczenia urządzenia i parowania na GitHub.

Dodaliśmy tę funkcję w edycji w systemie Windows 10 rocznicowym jako bezpośredni wynik opinii partnera i klientów. I&rsquo;M naprawdę podekscytowany Bluetooth Le Midi w systemie Windows 10 i urządzeniach, które można teraz użyć w systemie Windows 10.

obraz1

Obsługa aplikacji komputerowych dla API MIDI UWP

Wiemy, że większość muzyków używa komputerów stacjonarnych Win32 Daws i narzędzi podczas tworzenia muzyki. API MIDI UWP jest dostępne dla aplikacji komputerowych, ale wiemy, że dostęp do interfejsów API UWP z różnych języków i środowisk budowlanych może być trudne.

Aby pomóc programistom aplikacji komputerowej w nowym interfejsie API i zmniejszyć tarcie, mój kolega Dale Stammen z naszego zespołu WDG/Pax Spark opracował opakowanie Win32 dla Windows 10 UWP MIDI API.

Praca, którą wykonuje nasz zespół, w tym to opakowanie API, jest głównie oparta na partnerze. Oznacza to, że w wyniku żądań i opinii tworzymy rzeczy, które umożliwiają partnerom odnieść sukces w systemie Windows. Jednym z partnerów, z którymi pracowaliśmy podczas tworzenia, jest Cakewalk, twórcy popularnej aplikacji sonar.

To właśnie mieli do powiedzenia o opakowaniu Win32 dla API MIDI UWP i naszym wsparciem dla Bluetooth Le Midi:

&ldquo;My&rsquo;Z przyjemnością widzę, jak Microsoft obsługuje specyfika. Korzystając z nowego opakowania Win32 dla API MIDI UWP, byliśmy w stanie bardzo szybko prototypować obsługę Bluetooth MIDI. W Cakewalk my&rsquo;Zatrudniając w przyszłości, aby obsłużyć peryferyjne bezprzewodowe, więc jest to bardzo mile widziany dodatek od Microsoft.&rdquo;

Noel Borthwick, CTO, Cakewalk

obraz2

Uwielbiamy pracować z wielkimi partnerami, takimi jak CakeWalk, wiedząc, że wynik bezpośrednio przyniesie korzyści naszym wspólnym klientom.

To opakowanie Win32 ułatwia korzystanie z interfejsu API, tak jak każdy API Flat Win32. Przekazuje wszystkie możliwości interfejsu API MIDI Windows 10 UWP i usuwa wymagania, aby aplikacja WIN32 była UWP-Aware. Dodatkowo tam&rsquo;S Brak wymogu korzystania z C ++/Cx lub w inny sposób zmiany narzędzi i procesów kompilacji. Tutaj&rsquo;s A C ++ Win32 Console App. Przykład:

// Otwórz midi Out Port 0
wynik = gmidioutportopenfunc (midiptr, 0 i gmidioutport);
if (wynik != Winrt_no_error)
COUT GOTO CLEANUP;
>

// Wyślij notatkę na wiadomość do portu MIDI OUT
bez znaku bufora char [3] = < 144, 60 , 127 >;
Cout GmidioutportSendFunc (GMIDIOUTPORT, BUFTER, 3);

// Wyślij wiadomość z notatki do portu MIDI OUT
Bufor Cout [0] = 128;
GmidioutportSendFunc (GMIDIOUTPORT, BUFTER, 3);

Ten interfejs API jest zoptymalizowany do pracy z istniejącymi aplikacjami Win32, więc rezygnujemy z silnie wpisanych wiadomości MIDI i zamiast tego pracujemy z tablicami bajtowymi, podobnie jak programiści aplikacji muzycznych Win32 są używane.

My&rsquo;Wciąż otrzymują informacje zwrotne od partnerów i programistów na temat owijania API i pokochałby twoje. Kod źródłowy można znaleźć na GitHub. Możemy później zmienić lokalizację, więc AKA.Link MS (http: // aka.MS/Win10midiWin32) to ten, który chcesz podjąć.

Dla programistów korzystających z najnowszych wersji Visual Studio, my&rsquo;udostępnił również poręczny pakiet Nuget.

My&rsquo;już współpracuje z partnerami aplikacji stacjonarnych w celu włączenia do swoich aplikacji ten interfejs API za pomocą tego opakowania, a także innych ulepszeń w zakresie doświadczeń audio i użytkowników w systemie Windows 10. Jeśli masz aplikację komputerową skierowaną do Pro Musicians i masz pytania, skontaktuj się ze mną pod adresem @Pete_Brown na Twitterze lub Pete Dot Brown w Microsoft Dot Com.

Biblioteki pomocnicze MIDI dla aplikacji sklepowych Windows

Oprócz opakowania API Win32 mamy również mniejsze biblioteki pomocnicze dla programistów aplikacji sklepowych i użytkowników PowerShell.

Pierwszy to mój pomocnik MIDI Windows 10 UWP MIDI, dla aplikacji C#, VB i C ++. Ma to na celu ułatwienie wyliczania urządzeń MIDI, wiązanie się z wynikami w XAML i reagowanie na wszelkie zmiany wtyczki/odłączają się. To&rsquo;s dostępne zarówno jako źródło, jak i jako skompilowany pakiet Nuget.

Obejmuje klasę obserwatorów z przyjaznymi dla XAML kolekcjami wiążącymi / obserwowalnymi dla instancji informacyjnych urządzenia.

Wiadomości RPN i NRPN

Dodatkowo biblioteka pomocnicza zawiera kod, który pomaga w komunikatach RPN (zarejestrowany numer parametru) i NRPN (nie zarejestrowany numer parametru). Mogą one być trudniejsze dla nowych programistów do pracy, ponieważ są to logiczne wiadomości składające się z kilku różnych wiadomości agregowanych razem, wysłanych z rzędu.

obraz3

Ponieważ ujawniliśmy okna.Urządzenia.Midi.Interfejs imidimessage w UWP, a podstawowy kod wyjściowy MIDI wysyła wszystko, co jest w buforze, tworzenie silnie wpisanych klas komunikatów było dość łatwe. Podczas wysyłania wiadomości używasz tych klas, tak jak każda inna mocno wpisana wiadomość MIDI.

I&rsquo;M badanie zawierające wsparcie dla proponowanego MPE (wielowymiarowa ekspresja polifoniczna), a także do analizowania i agregujących nadchodzących komunikatów RPN i NRPN. Jeśli te funkcje byłyby dla Ciebie przydatne we własnych aplikacjach, skontaktuj się ze mną i daj mi znać.

Generator zegara midi

Jeden inny element, który biblioteka zawiera, jest generator zegara midi. Jeśli potrzebujesz generatora zegara MIDI (nie do pętli sterowania sekwencera. Tutaj&rsquo;S Jak go używasz z C#:

private MidicLockGenerator _Clock = new MidicLockGenerator ();


_zegar.SendMidistartMessage = true;
_zegar.SendMidistopMessage = true;

Foreach (informacje o urządzeniu.OutputportDescriptors)
var port = (midioutport) czeka na midioutport.FromIdasync (informacje.ID);

if (port != null)
_zegar.Outportports.Dodaj (port);
>

public void startclock ()
_zegar.Początek();
>

public void stopclock ()
_zegar.Zatrzymywać się();
>

Moje repozytorium GitHub zawiera źródło C ++/CX i aplikację klienta C#/XAML. Na marginesie: to był mój pierwszy projekt C ++/CX. Chociaż nadal uważam, że C# jest łatwiejsze do większości zadań, znalazłem tutaj C ++ CX. Jeśli ty&rsquo;re a c# deweloper, który pomyślał o użyciu c ++ cx, daj mu wir. Może być bardziej znajome, niż się spodziewasz!

Ta biblioteka pomoże programistom przestrzegać najlepszych praktyk aplikacji MIDI w sklepie Windows. Tak jak w przypadku aplikacji stacjonarnych, jeśli ty&rsquo;Ponownie zbuduj tutaj aplikację zorientowaną na muzyka i zrób pytania, skontaktuj się ze mną pod adresem @pete_brown na Twitterze lub Pete Dot Brown w Microsoft Dot Com.

Druga biblioteka pomocnicza to zestaw poleceń PowerShell do używania interfejsu API MIDI Windows 10 UWP. I&rsquo;rozmawiał z osobami, które używają tego do automatyzacji skryptów aktualizacji MIDI w celu synchronizacji różnych mikserów w dużej instalacji i innymi, którzy używają tego jako &ldquo;klej&rdquo; do tłumaczenia wiadomości między różnymi urządzeniami. Tam&rsquo;S wiele możesz zrobić z PowerShell w systemie Windows 10, a teraz MIDI jest częścią tego. Repo zawiera przykłady użytkowania, więc wygrałem&rsquo;T Powtórz to tutaj.

Wniosek

I&rsquo;Naprawdę podekscytowany pracą, którą nadal wykonujemy w przestrzeni audio, aby pomóc muzykom i programistom aplikacji muzycznych w systemie Windows.

W sumie interfejs API MIDI UWP, opakowanie Win32 dla UWP MIDI API oraz biblioteki pomocniczych aplikacji Store i Skrypty PowerShell umożliwiają aplikacjom i skryptom skorzystanie z najnowszej technologii MIDI w systemie Windows 10, w tym Bluetooth Midi Midi.

I&rsquo;M naprawdę nie mogę się doczekać nadchodzących aplikacji na komputery stacjonarne i systemu Windows, które będą obsługiwać ten interfejs API i technologie takie jak Bluetooth Le Midi. I, jak wspomniałem powyżej, skontaktuj się ze mną bezpośrednio, jeśli ty&rsquo;Ponownie budowanie aplikacji ukierunkowanej na pro muzyka i potrzebuje wskazówek lub w inny sposób mieć pytania.

Zasoby

  • Zacznij opracowywać aplikacje UWP
  • Urządzenia.Dokumentacja przestrzeni nazw MIDI
  • Oficjalna próbka API MIDI Windows 10 UWP
  • Github Repo dla Win32 Midi Vrapper
  • Pete&rsquo;S Github Repos z projektami MIDI i audio
  • Pakiet Nuget dla Win32 Midi Vrapper
  • Pete Brown Summer Namm 2015 Keynote About Windows 10
  • Stowarzyszenie MIDI
  • Studio w dłoni: opracowywanie aplikacji do tworzenia audio i wideo dla systemu Windows 10
  • Audio przestrzenne z audiografem w UWP
  • Audio przestrzenne w aplikacjach i grach UWP

Pobierz Visual Studio, aby zacząć.

Zespół Windows chciałby usłyszeć twoją opinię. Proszę zachować opinię przy użyciu naszej witryny Uservoice Windows Developer. Jeśli masz bezpośredni błąd, skorzystaj z narzędzia Windows Feed Informacje wbudowane bezpośrednio w system Windows 10.

Sterownik portu midi

Sterownik portu MIDI zarządza urządzeniem do syntezatora lub przechwytywania MIDI. Sterownik adaptera zapewnia odpowiedni sterownik MIDI Miniport, który wiąże się z obiektem sterownika MIDI Port, tworząc filtr MIDI (patrz filtry MIDI i DirectMusic), który może przechwytywać lub renderować strumień MIDI.

Sterownik portu MIDI ujawnia interfejs Iportmidi na sterowniku Miniport. Iportmidi dziedziczy metody w interfejsie bazowym Iport. Iportmidi Zapewnia następujące dodatkowe metody:

Powiadamia sterownik portu, że syntezator lub urządzenie do przechwytywania MIDI awansowało do nowej pozycji w strumieniu MIDI. Iportmidi :: RegistersServiceGroup

Rejestruje obiekt grupy serwisowej z sterownikiem portu. Grupa serwisowa zawiera listę jednej lub więcej procedur serwisowych, które należy wywołać, gdy miniportowe sterowniki wywołują Notyfikować; Aby uzyskać więcej informacji, zobacz Obiekty Service Smoin i Service Group.

Obiekty sterowników MIDI i miniport Iportmidi i interfejsy iminiportmidi. Miniport sterownik używa sterownika portu Iportmidi interfejs w celu powiadomienia sterownika portu o przerwach sprzętowych. Ponadto sterownik portu komunikuje się z obiektami strumienia kierowcy miniport.

W systemie Windows XP, a później, Iportmidi i interfejsy IportDmus są zaimplementowane w jednym wewnętrznym module sterowników. Ta konsolidacja jest ułatwiona przez podobieństwo tych dwóch interfejsów. Na przykład te same metody są zdefiniowane dla obu interfejsów. Aplikacje napisane dla poprzednich wersji systemu Windows nie powinny zobaczyć żadnych zmian w zachowaniu Iportmidi I Iportdmus Interfejsy wynikające z konsolidacji sterowników MIDI i DMUS Port.

Informacja zwrotna

Prześlij i przeglądaj informacje zwrotne dla

Ulepszenia MIDI w systemie Windows 10

Ulepszenia MIDI w systemie Windows 10

Niedawno Pete Brown z Microsoft opublikował bardzo pouczający post na blogu o ulepszeniach MIDI w systemie Windows 10.

Post na blogu obejmuje szereg tematów, w tym

  • UWP MIDI Basics – Korzystanie z MIDI w aplikacjach Windows Store
  • Nowa obsługa Bluetooth Le Midi w aktualizacji w systemie Windows 10
  • Opakowanie Win32 dla UWP MIDI (udostępnianie aplikacji API dla aplikacji komputerowych)
  • Biblioteki pomocnicze midi dla C# i PowerShell

Ulepszenia MIDI w systemie Windows 10 | Budowanie aplikacji dla systemu Windows

&bdquo;Cieszymy się, że Microsoft obsługuje specyfika. Korzystając z nowego opakowania Win32 dla API MIDI UWP, byliśmy w stanie bardzo szybko prototypować obsługę Bluetooth MIDI. W Cakewalk patrzymy w przyszłość, aby obsługiwać bezprzewodowe peryferyjne, więc jest to bardzo mile widziany dodatek od Microsoft.”

Autor: Noel Borthwick, CTO, Cakewalk

W artykule Pete’a jest również miłe wyjaśnienie, jak działają RPN i NRPN i ich struktura danych.

Wraz z wydaniem systemu Windows 10, wszystkie trzy główne firmy systemowe (Apple, Google i Microsoft) opracowały wsparcie dla stowarzyszenia MIDI Producents Association dla MIDI przez Bluetooth Low Energy, które można znaleźć w sekcji Specyk.