Windows 10 ha MIDI
Driver MIDI di Windows 10: come installarli in alcuni passaggi
Il team di Windows vorrebbe sentire il tuo feedback. Si prega di mantenere il feedback in arrivo utilizzando il nostro sito Uservoice per sviluppatori di Windows. Se si dispone di un bug diretto, si prega di utilizzare lo strumento di feedback di Windows integrato direttamente in Windows 10.
Midi
Questo articolo mostra come enumerare i dispositivi MIDI (Interfaccia digitale degli strumenti musicali) e inviare e ricevere messaggi MIDI da un’app universale di Windows. Windows 10 supporta MIDI su USB (conducenti conformi alla classe e più proprietari), MIDI su Bluetooth Le (Windows 10 Anniversary Edition e successivamente) e attraverso prodotti di terze parti liberamente disponibili, MIDI su Ethernet e routing MIDI.
Enumera i dispositivi MIDI
Prima di elencare e utilizzare i dispositivi MIDI, aggiungi i seguenti nomi al progetto.
Usando Windows.Dispositivi.Enumerazione;
Usando Windows.Dispositivi.Midi;
Utilizzo del sistema.Filo.Compiti;
Aggiungere un Elencobox Controllo alla tua pagina XAML che consentirà all’utente di selezionare uno dei dispositivi di input MIDI allegati al sistema. Aggiungi un altro per elencare i dispositivi di output MIDI.
IL Trovalasync metodo Informazioni sul dispositivo La classe viene utilizzata per elencare molti diversi tipi di dispositivi che sono riconosciuti da Windows. Per specificare che si desidera solo il metodo per trovare dispositivi di input MIDI, utilizzare la stringa selettore restituita da Midiinport.GetDevicesElector. Trovalasync Restituisce a DeviceInformationCollection che contiene un Informazioni sul dispositivo Per ogni dispositivo di input MIDI registrato con il sistema. Se la raccolta restituita non contiene articoli, non ci sono dispositivi di input MIDI disponibili. Se ci sono elementi nella collezione, loop attraverso il Informazioni sul dispositivo oggetti e aggiungere il nome di ciascun dispositivo al dispositivo di input MIDI Elencobox.
Task asincrico privato enumeratemidiinputDevices ()
{
// Trova tutti i dispositivi MIDI input
String MidiInputQueRystring = Midiinport.GetDevicesElector ();
DeviceInformationCollection MidiInputDevices = Abved DeviceInformation.FindAlAsync (midiinputQuerystring);
midiinportlistbox.Elementi.Chiaro();
// restituisce se non sono collegati dispositivi esterni
if (midiinputdevices.Count == 0)
{
Questo.midiinportlistbox.Elementi.Aggiungi ("Nessun dispositivo di input MIDI trovato!");
Questo.midiinportlistbox.IsEnabled = false;
ritorno;
}
// altro, aggiungi ogni dispositivo di input collegato all'elenco
foreach (dispositivo Dispositivo Dispositivo in midiinputdevices)
{
Questo.midiinportlistbox.Elementi.Aggiungi (DeviceInfo.Nome);
}
Questo.midiinportlistbox.Isenabled = true;
}
I dispositivi di output MIDI elenanti funzionano esattamente allo stesso modo dei dispositivi di input elenchi, tranne per il fatto che è necessario specificare la stringa selettore restituita da Midioutport.GetDevicesElector Quando si chiama Trovalasync.
Attività asincrima privata enumeratemidioutputDevices ()
{
// Trova tutti i dispositivi MIDI output
String MidioutPortQueRystring = MidioutPort.GetDevicesElector ();
DeviceInformationCollection MidioutputDevices = Abved DeviceInformation.FindAlAsync (MidioutPortQueryString);
MidioutPortListbox.Elementi.Chiaro();
// restituisce se non sono collegati dispositivi esterni
if (MidioutputDevices.Count == 0)
{
Questo.MidioutPortListbox.Elementi.Aggiungi ("Nessun dispositivo di output MIDI trovato!");
Questo.MidioutPortListbox.IsEnabled = false;
ritorno;
}
// altro, aggiungi ogni dispositivo di input collegato all'elenco
Foreach (dispositivo Dispositivo Dispositivo in MidioutputDevices)
{
Questo.MidioutPortListbox.Elementi.Aggiungi (DeviceInfo.Nome);
}
Questo.MidioutPortListbox.Isenabled = true;
}
Crea una classe Helper Watcher del dispositivo
IL finestre.Dispositivi.Enumerazione lo spazio dei nomi fornisce il DEVICEWATCHER che può avvisare l’app se i dispositivi vengono aggiunti o rimossi dal sistema o se le informazioni per un dispositivo vengono aggiornate. Poiché le app abilitate MIDI in genere sono interessate sia ai dispositivi di input che di output, questo esempio crea una classe helper che implementa il DEVICEWATCHER modello, in modo che lo stesso codice possa essere utilizzato sia per i dispositivi di output di input MIDI che per.
Aggiungi una nuova classe al tuo progetto per servire come osservatore del dispositivo. In questo esempio, la classe è nominata Mymididevicewatcher. Il resto del codice in questa sezione viene utilizzato per implementare la classe helper.
Aggiungi alcune variabili membri alla classe:
- UN DEVICEWATCHER oggetto che monitorà le modifiche al dispositivo.
- Una stringa di selezione del dispositivo che contiene la stringa di selettore di porte per un’istanza e la stringa di selettore porta MIDI per un’altra istanza.
- UN Elencobox controllo che verrà popolato con i nomi dei dispositivi disponibili.
- UN Coredispatcher è necessario per aggiornare l’interfaccia utente da un thread diverso dal thread dell’interfaccia utente.
DEVIVEWATCHER DEVICEWATCHER;
String DevicesElectorstring;
ListBox DevicelistBox;
Coredispatcher Coredispatcher;
Aggiungere un DeviceInformationCollection Proprietà utilizzata per accedere all’elenco corrente di dispositivi dall’esterno della classe helper.
public deviceinformationCollection DeviceInformationCollection {get; set privato; }
Nel costruttore di classe, il chiamante passa nella stringa selettore del dispositivo MIDI, il Elencobox per elencare i dispositivi e il Dispatcher necessario per aggiornare l’interfaccia utente.
Chiamata Informazioni sul dispositivo.CreateWatcher per creare una nuova istanza di DEVICEWATCHER Classe, passando nella stringa del selettore dei dispositivi MIDI.
Registra i gestori per i gestori di eventi di Watcher.
public mymidideviceWatcher (String MidideVicesElectorstring, ListBox Mididevicelistbox, CoreDispatcher Dispatcher) { DEVICESELETTORING = MidideVicesElectorstring; DeviceListBox = MidideviceListbox; CoreDisPatcher = Dispatcher; DeviceWatcher = DeviceInformazione.CreateWatcher (DeviceElectorstring); DEVICEWATCHER.Aggiunto += dispositivoWatcher_Added; DEVICEWATCHER.Rimosso += dispositivoWatcher_removed; DEVICEWATCHER.Aggiornato += dispositivoWatcher_updated; DEVICEWATCHER.EnumerationCompleted += dispositivoWatcher_EnumerationCompleted; }
Domanda 1: come posso enumerare i dispositivi di input MIDI in un’app universale di Windows?
È possibile elencare i dispositivi di input MIDI in un’app Windows universale utilizzando il Trovalasync metodo del Informazioni sul dispositivo classe. Per specificare che si desidera trovare solo dispositivi di input MIDI, utilizzare la stringa selettore restituita da Midiinport.GetDevicesElector. Loop attraverso il Informazioni sul dispositivo oggetti nel restituito DeviceInformationCollection e aggiungi il nome di ciascun dispositivo a un controllo di elencobox.
Domanda 2: come posso elencare i dispositivi di output MIDI in un’app universale di Windows?
È possibile elencare i dispositivi di output MIDI in un’app Windows universale utilizzando lo stesso metodo di elenchi di dispositivi di input. Basta usare la stringa selettore restituita da Midioutport.GetDevicesElector invece quando si chiama Trovalasync.
Domanda 3: come si crea una classe Helper Watcher del dispositivo in un’app universale di Windows?
È possibile creare una classe Helper Watcher di dispositivo in un’app universale di Windows implementando il DEVICEWATCHER pattern dal finestre.Dispositivi.Enumerazione spazio dei nomi. Ciò consente alla tua app di essere notificata quando i dispositivi vengono aggiunti o rimossi dal sistema o se le informazioni per un dispositivo vengono aggiornate. La classe helper può essere utilizzata sia per i dispositivi di input e output MIDI senza duplicazione del codice.
Domanda 4: come posso utilizzare un controllo elencabile per elencare i dispositivi di input MIDI in un’app universale di Windows?
In un’app di Windows Universal, è possibile utilizzare un controllo ListBox per elencare i dispositivi di input MIDI. Aggiungi un controllo della casella di elenco alla tua pagina XAML e popola con i nomi dei dispositivi di input MIDI loopt attraverso il Informazioni sul dispositivo oggetti nel DeviceInformationCollection ottenuto da Trovalasync.
Domanda 5: come posso utilizzare un controllo elencabile per elencare i dispositivi di output MIDI in un’app universale di Windows?
Utilizzo di un controllo ListBox per elencare i dispositivi di output MIDI in un’app Windows universale è simile ai dispositivi di input di elenco. Ottieni semplicemente il DeviceInformationCollection Per i dispositivi di output utilizzando Trovalasync e loop attraverso il Informazioni sul dispositivo Oggetti per popolare il controllo della casella di elenco.
Domanda 6: come posso aggiornare l’interfaccia utente da un thread diverso dal thread dell’interfaccia utente in un’app universale di Windows?
È possibile aggiornare l’interfaccia utente da un thread diverso dal thread dell’interfaccia utente in un’app universale di Windows utilizzando il Coredispatcher classe. Passa l’istanza COREDISPATCHER alla classe Helper Watcher del dispositivo e usa la sua Runasync Metodo per eseguire il codice sul thread dell’interfaccia utente.
Domanda 7: come posso monitorare le modifiche al dispositivo in un’app universale di Windows?
In un’app Windows universale, è possibile monitorare le modifiche al dispositivo utilizzando il DEVICEWATCHER classe. Registra i gestori di eventi per il Aggiunto, RIMOSSO, Aggiornato, E Enumeration completed Gli eventi dell’osservatore del dispositivo devono essere notificati quando i dispositivi vengono aggiunti, rimossi, aggiornati o quando l’operazione di enumerazione è completata.
Domanda 8: come posso gestire l’evento quando un nuovo dispositivo MIDI viene aggiunto in un’app universale Windows?
È possibile gestire l’evento quando un nuovo dispositivo MIDI viene aggiunto in un’app universale Windows iscrivendosi al Aggiunto Event of the Device Watcher. Nel gestore di eventi, è possibile aggiornare l’interfaccia utente per riflettere il nuovo dispositivo.
Domanda 9: come posso gestire l’evento quando un dispositivo MIDI viene rimosso in un’app universale di Windows?
Per gestire l’evento quando un dispositivo MIDI viene rimosso in un’app universale di Windows, iscriviti al RIMOSSO Event of the Device Watcher. Nel gestore di eventi, è possibile aggiornare l’interfaccia utente per rimuovere il dispositivo dall’elenco.
Domanda 10: come posso gestire l’evento quando le informazioni per un dispositivo MIDI vengono aggiornate in un’app universale Windows?
In un’app universale di Windows, è possibile gestire l’evento quando le informazioni per un dispositivo MIDI vengono aggiornate sottoscrivendo al Aggiornato Event of the Device Watcher. Nel gestore di eventi, è possibile aggiornare l’interfaccia utente per riflettere le informazioni aggiornate del dispositivo.
Domanda 11: come posso determinare se non ci sono dispositivi di input MIDI disponibili in un’app universale di Windows?
In un’app di Windows universale, è possibile determinare se non ci sono dispositivi di input MIDI disponibili controllando il conteggio del DeviceInformationCollection ottenuto da Trovalasync. Se il conteggio è 0, significa che non ci sono dispositivi di input MIDI disponibili.
Domanda 12: come posso determinare se non ci sono dispositivi di output MIDI disponibili in un’app universale di Windows?
In un’app di Windows universale, è possibile determinare se non ci sono dispositivi di output MIDI disponibili controllando il conteggio del DeviceInformationCollection ottenuto da Trovalasync. Se il conteggio è 0, significa che non ci sono dispositivi di uscita MIDI disponibili.
Domanda 13: come posso gestire l’evento quando l’enumerazione dei dispositivi MIDI è completato in un’app universale Windows?
È possibile gestire l’evento quando l’enumerazione dei dispositivi MIDI viene completato in un’app di Windows universale sottoscrivendo al Enumeration completed Event of the Device Watcher. Nel gestore di eventi, è possibile eseguire tutte le azioni necessarie dopo il completamento dell’enumerazione.
Domanda 14: come posso verificare se un dispositivo MIDI specifico è un dispositivo di input o un dispositivo di output in un’app universale Windows?
In un’app Windows universale, è possibile verificare se un dispositivo MIDI specifico è un dispositivo di input o un dispositivo di output utilizzando il Informazioni sul dispositivo Proprietà dell’oggetto. Le proprietà del dispositivo contengono informazioni sul tipo di dispositivo, ad esempio se si tratta di un dispositivo di input o di output.
Domanda 15: come posso accedere all’elenco corrente di dispositivi MIDI dall’esterno della classe Helper Watcher in un’app universale Windows?
In un’app di Windows Universal, è possibile accedere all’elenco corrente di dispositivi MIDI dall’esterno della classe Helper Watcher del dispositivo utilizzando una proprietà. Crea una proprietà pubblica di tipo DeviceInformationCollection nella classe helper e imposta il suo valore ogni volta che l’elenco dei dispositivi viene aggiornato. Puoi quindi accedere a questa proprietà da altre parti dell’app per ottenere l’elenco corrente di dispositivi MIDI.
Driver MIDI di Windows 10: come installarli in alcuni passaggi
Il team di Windows vorrebbe sentire il tuo feedback. Si prega di mantenere il feedback in arrivo utilizzando il nostro sito Uservoice per sviluppatori di Windows. Se si dispone di un bug diretto, si prega di utilizzare lo strumento di feedback di Windows integrato direttamente in Windows 10.
Midi
Questo articolo mostra come enumerare i dispositivi MIDI (Interfaccia digitale degli strumenti musicali) e inviare e ricevere messaggi MIDI da un’app universale di Windows. Windows 10 supporta MIDI su USB (conducenti conformi alla classe e più proprietari), MIDI su Bluetooth Le (Windows 10 Anniversary Edition e successivamente) e attraverso prodotti di terze parti liberamente disponibili, MIDI su Ethernet e routing MIDI.
Enumera i dispositivi MIDI
Prima di elencare e utilizzare i dispositivi MIDI, aggiungi i seguenti nomi al progetto.
Usando Windows.Dispositivi.Enumerazione; Usando Windows.Dispositivi.Midi; Utilizzo del sistema.Filo.Compiti;
Aggiungere un Elencobox Controllo alla tua pagina XAML che consentirà all’utente di selezionare uno dei dispositivi di input MIDI allegati al sistema. Aggiungi un altro per elencare i dispositivi di output MIDI.
IL Trovalasync metodo Informazioni sul dispositivo La classe viene utilizzata per elencare molti diversi tipi di dispositivi che sono riconosciuti da Windows. Per specificare che si desidera solo il metodo per trovare dispositivi di input MIDI, utilizzare la stringa selettore restituita da Midiinport.GetDevicesElector. Trovalasync Restituisce a DeviceInformationCollection che contiene un Informazioni sul dispositivo Per ogni dispositivo di input MIDI registrato con il sistema. Se la raccolta restituita non contiene articoli, non ci sono dispositivi di input MIDI disponibili. Se ci sono elementi nella collezione, loop attraverso il Informazioni sul dispositivo oggetti e aggiungere il nome di ciascun dispositivo al dispositivo di input MIDI Elencobox.
Task asincrico privato 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; >// altro, aggiungi ciascun dispositivo di input collegato all'elenco foreach (dispositivo Dispositivo Dispositivo in midiinputdevices) < this.midiInPortListBox.Items.Add(deviceInfo.Name); >Questo.midiinportlistbox.Isenabled = true; >
I dispositivi di output MIDI elenanti funzionano esattamente allo stesso modo dei dispositivi di input elenchi, tranne per il fatto che è necessario specificare la stringa selettore restituita da Midioutport.GetDevicesElector Quando si chiama Trovalasync.
Attività asincrima privata enumeratemidioutputDevices () < // 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; >// altro, aggiungi ciascun dispositivo di input collegato all'elenco foreach (dispositivo Dispositivo Dispositivo in MidioutputDevices) < this.midiOutPortListBox.Items.Add(deviceInfo.Name); >Questo.MidioutPortListbox.Isenabled = true; >
Crea una classe Helper Watcher del dispositivo
IL finestre.Dispositivi.Enumerazione lo spazio dei nomi fornisce il DEVICEWATCHER che può avvisare l’app se i dispositivi vengono aggiunti o rimossi dal sistema o se le informazioni per un dispositivo vengono aggiornate. Poiché le app abilitate MIDI in genere sono interessate sia ai dispositivi di input che di output, questo esempio crea una classe helper che implementa il DEVICEWATCHER modello, in modo che lo stesso codice possa essere utilizzato sia per i dispositivi di output di input MIDI che per.
Aggiungi una nuova classe al tuo progetto per servire come osservatore del dispositivo. In questo esempio la classe è nominata Mymididevicewatcher. Il resto del codice in questa sezione viene utilizzato per implementare la classe helper.
Aggiungi alcune variabili membri alla classe:
- UN DEVICEWATCHER oggetto che monitorà le modifiche al dispositivo.
- Una stringa di selezione del dispositivo che contiene la stringa di selettore di porte per un’istanza e la stringa di selettore porta MIDI per un’altra istanza.
- UN Elencobox controllo che verrà popolato con i nomi dei dispositivi disponibili.
- UN Coredispatcher è necessario per aggiornare l’interfaccia utente da un thread diverso dal thread dell’interfaccia utente.
DEVIVEWATCHER DEVICEWATCHER; String DevicesElectorstring; ListBox DevicelistBox; Coredispatcher Coredispatcher;
Aggiungere un DeviceInformationCollection Proprietà utilizzata per accedere all’elenco corrente di dispositivi dall’esterno della classe helper.
Dispositivo pubblico InformationCollection DeviceInformationCollection
Nel costruttore di classe, il chiamante passa nella stringa selettore del dispositivo MIDI, il Elencobox per elencare i dispositivi e il Dispatcher necessario per aggiornare l’interfaccia utente.
Chiamata Informazioni sul dispositivo.CreateWatcher per creare una nuova istanza di DEVICEWATCHER Classe, passando nella stringa del selettore dei dispositivi MIDI.
Registra i gestori per i gestori di eventi di Watcher.
public mymidideviceWatcher (String MidideVicesElectorstring, ListBox Mididevicelistbox, CoreDispatcher Dispatcher)
IL DEVICEWATCHER Ha i seguenti eventi:
- Aggiunto – Sollevato quando un nuovo dispositivo viene aggiunto al sistema.
- RIMOSSO – Sollevato quando un dispositivo viene rimosso dal sistema.
- Aggiornato – Sollevato quando vengono aggiornate le informazioni associate a un dispositivo esistente.
- Enumeration completed – Alzato quando l’osservatore ha completato la sua enumerazione del tipo di dispositivo richiesto.
Nel gestore di eventi per ciascuno di questi eventi, un metodo Helper, Aggiornati, è chiamato ad aggiornare il Elencobox con l’attuale elenco di dispositivi. Perché Aggiornati Aggiornamenti Gli elementi dell’interfaccia utente e questi gestori di eventi non sono chiamati sul thread dell’interfaccia utente, ogni chiamata deve essere avvolta in una chiamata a Runasync, che provoca l’esecuzione del codice specificato sul thread dell’interfaccia utente.
Private Async void DeviceWatcher_Removed (mittente di dispositivo WATCHER, DEVICEInformationUpdate Args) < await coreDispatcher.RunAsync(CoreDispatcherPriority.High, () =>< // Update the device list UpdateDevices(); >); >> Private Async void DeviceWatcher_Added (mittente del dispositivowatcher, DEVICEInformation Args) < await coreDispatcher.RunAsync(CoreDispatcherPriority.High, () =>< // Update the device list UpdateDevices(); >); > Private Async void DeviceWatcher_EnumerationCompleted (mittente del weatcher Device, oggetto Args) < await coreDispatcher.RunAsync(CoreDispatcherPriority.High, () =>< // Update the device list UpdateDevices(); >); > Private Async void DeviceWatcher_Updated (mittente di Weight DeviceWatcher, DeviceInformationUpdate Args) < await coreDispatcher.RunAsync(CoreDispatcherPriority.High, () =>< // Update the device list UpdateDevices(); >); >
IL Aggiornati Chiamate del metodo helper Informazioni sul dispositivo.Trovalasync e aggiorna il Elencobox con i nomi dei dispositivi restituiti come descritto in precedenza in questo articolo.
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 in questo.DeviceInformationCollection) < deviceListBox.Items.Add(deviceInformation.Name); >>
Aggiungi metodi per avviare l’osservatore, usando il DEVICEWATCHER oggetto Inizio metodo e per fermare l’osservatore, usando il Fermare metodo.
public void startWatcher () < deviceWatcher.Start(); >public void stop watcher ()
Fornisci un distruttore per cancellare i gestori di eventi di Watcher e impostare il Watcher del dispositivo su NULL.
~ MymidideviceWatcher ()
Crea porte MIDI per inviare e ricevere messaggi
Nel codice dietro per la tua pagina, dichiarare le variabili dei membri per contenere due istanze del Mymididevicewatcher Classe di aiuto, uno per dispositivi di input e uno per i dispositivi di output.
Mymididevicewatcher inputDeviceWatcher; Mymididevicewatcher outputdevicewatcher;
Crea una nuova istanza delle classi di supporto Watcher, passando nella stringa del selettore del dispositivo, il Elencobox essere popolato e il Coredispatcher oggetto a cui è possibile accedere tramite la pagina Dispatcher proprietà. Quindi, chiama il metodo per avviare ogni oggetto DEVICEWATCHER.
Poco dopo ciascuno DEVICEWATCHER viene avviato, finirà di elencare gli attuali dispositivi collegati al sistema e aumenterà il suo Enumeration completed evento, che causerà ciascuno Elencobox da aggiornare con gli attuali dispositivi MIDI.
InputDeviceWatcher = new MyMidideviceWatcher (MIDIinport.GetDevicesElector (), midiinportlistbox, dispatcher); InputDeviceWatcher.StartWatcher (); outputDeviceWatcher = new MyMidideviceWatcher (Midioutport.GetDevicesElector (), MidioutPortListbox, Dispatcher); OutputDeviceWatcher.StartWatcher ();
Quando l’utente seleziona un elemento nell’input MIDI Elencobox, IL SelezioneChanged L’evento è stato sollevato. Nel gestore di questo evento, accedi al DeviceInformationCollection Proprietà della classe helper per ottenere l’elenco corrente di dispositivi. Se ci sono voci nell’elenco, selezionare il Informazioni sul dispositivo oggetto con l’indice corrispondente al file Elencobox controllo SelectedIndex.
Creare il Midiinport oggetto che rappresenta il dispositivo di input selezionato chiamando Midiinport.Daidasync, passando nel Id Proprietà del dispositivo selezionato.
Registra un gestore per il file Messaggio ricevuto evento, che viene sollevato ogni volta che viene ricevuto un messaggio MIDI tramite il dispositivo specificato.
Midiinport midiinport; Imidioutport midioutport;
asincrone privato void midiinportlistbox_selectionchanged (mittente oggetto, selezioneChangedeEventArgs E) < var deviceInformationCollection = inputDeviceWatcher.DeviceInformationCollection; if (deviceInformationCollection == null) < return; >DeviceInformation devinfo = DeviceInformationCollection [MIDIinPortListBox.SelectedIndex]; if (devinfo == null) < return; >midiinport = Abved Midiinport.Daidasync (Devinfo.Id); if (midiinport == null) < System.Diagnostics.Debug.WriteLine("Unable to create MidiInPort from input device"); return; >midiinport.Messagereceived += midiinport_messagereceived; >
Quando il Messaggio ricevuto si chiama il gestore, il messaggio è contenuto in Messaggio proprietà del MidimessagereceivedEventArgs. IL Tipo dell’oggetto messaggio è un valore da Midimessagetype enumerazione che indica il tipo di messaggio che è stato ricevuto. I dati del messaggio dipendono dal tipo di messaggio. Questo esempio verifica se il messaggio è una nota sul messaggio e, in tal caso, emette il canale MIDI, la nota e la velocità del messaggio.
Private void midiinport_messagereceived (mittente midiinport, midimessagereceivedEventArgs 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); >>
IL SelezioneChanged gestore per il dispositivo di output Elencobox Funziona lo stesso del gestore per i dispositivi di input, tranne che non è registrato nessun gestore di eventi.
Private Async void MidioutPortListBox_SelectionChanged (mittente Object, SelectionChangeDEventArgs E) < var deviceInformationCollection = outputDeviceWatcher.DeviceInformationCollection; if (deviceInformationCollection == null) < return; >DeviceInformation devinfo = DeviceInformationCollection [MidioutPortListBox.SelectedIndex]; if (devinfo == null) < return; >MIDIOUTPORT = ATTIVO MIDIOUTPORT.Daidasync (Devinfo.Id); if (midioutport == null) < System.Diagnostics.Debug.WriteLine("Unable to create MidiOutPort from output device"); return; >>
Una volta creato il dispositivo di output, è possibile inviare un messaggio creando un nuovo Imidimessage Per il tipo di messaggio che si desidera inviare. In questo esempio, il messaggio è un NoteOnMessage. IL Invia messaggio metodo del Imidioutport L’oggetto viene chiamato per inviare il messaggio.
canale byte = 0; Byte Note = 60; Velocità di byte = 127; Imidimessage midimessagetosend = new midinoteonMessage (canale, nota, velocità); Midioutport.SendMessage (Midimessagetosend);
Quando la tua app è disattivata, assicurati di ripulire le risorse delle tue app. Svuota i gestori del tuo evento e imposta i MIDI in porta e out Port Objects su Null. Ferma gli osservatori del dispositivo e impostali su NULL.
InputDeviceWatcher.Stop watcher (); inputDeviceWatcher = null; OutputDeviceWatcher.Stop watcher (); outputDeviceWatcher = null; midiinport.Messagereceived -= midiinport_messagereceived; midiinport.Disposizione (); midiinport = null; Midioutport.Disposizione (); midioutport = null;
Utilizzando il synth MIDI Generale Windows integrato
Quando enumerano dispositivi MIDI di output utilizzando la tecnica sopra descritta, la tua app scoprirà un dispositivo MIDI chiamato “Microsoft GS Wavetable Synth”. Questo è un sintetizzatore MIDI generale integrato che puoi giocare dalla tua app. Tuttavia, tentare di creare un outport MIDI su questo dispositivo fallirà a meno che tu non abbia incluso l’estensione SDK per il synth integrato nel progetto.
Per includere l’estensione General MIDI Synth SDK nel progetto dell’app
- In Esploratore di soluzioni, sotto il tuo progetto, fai clic con il tasto destro Riferimenti e seleziona Aggiungi riferimento.
- Espandere il Finestre universali nodo.
- Selezionare Estensioni.
- Dall’elenco delle estensioni, seleziona Microsoft General MIDI DLS per app universali Windows.
Nota Se ci sono più versioni dell’estensione, assicurarsi di selezionare la versione che corrisponde al target per la tua app. Puoi vedere quale versione SDK la tua app sta prendendo di mira su Applicazione Scheda delle proprietà del progetto.
Driver MIDI di Windows 10: come installarli in alcuni passaggi
Per risolvere vari problemi di PC, consigliamo DriverFix: Questo software manterrà i tuoi driver attivo e funzionante, mantenendo così al sicuro da errori comuni del computer e guasto hardware. Controlla tutti i tuoi driver ora in 3 semplici passaggi:
- Scarica driverFix (file di download verificato).
- Clic Inizia scansione Per trovare tutti i driver problematici.
- Clic Aggiorna i driver Per ottenere nuove versioni ed evitare malfunzionamenti del sistema.
- DriverFix è stato scaricato da 0 lettori questo mese.
MIDI è il termine tecnico per l’interfaccia digitale dello strumento musicale ed è costituito da un dispositivo in grado di connettersi a una moltitudine di dispositivi musicali.
I conducenti MIDI sono stati originariamente realizzati per controllare le tastiere da un computer. I conducenti MIDI si sono evoluti nel corso degli anni e ora sono utilizzati da milioni di utenti di Windows 10 in tutto il pianeta.
Un caso particolare riguarda i driver MIDI Bluetooth di Windows 10 in quanto sembrano essere ancora più delicati e possono facilmente non essere riconosciuti da Windows.
Supporta Windows 10 MIDI su Bluetooth?
Lo fa, sì. Semplicemente aprire il Impostazioni sul tuo PC e vai a Dispositivi, Poi Bluetooth e altri dispositivi. Qui, seleziona Bluetooth e abbina il tuo dispositivo.
Tuttavia, alcuni utenti hanno riferito che il loro dispositivo MIDI non è stato più riconosciuto a seguito di un aggiornamento di Windows. Se questo è anche il tuo caso, qui’è quello che suggeriamo:
- Elimina tutti i dispositivi MIDI collegati e prova ad accoppiarli di nuovo (come mostrato sopra)
- Fare clic con il pulsante destro del mouse sull’icona del volume sulla barra delle applicazioni e selezionare Suoni. Se manca il tuo dispositivo MIDI, scegli di Mostra dispositivi disconnessi/disabilitati E vedi se questo aiuta.
Come installo i driver MIDI su Windows 10?
1. Utilizzare la risoluzione dei problemi di Windows
- Navigare verso il Barra delle applicazioni casella di ricerca.
- Tipo Risoluzione dei problemi.
- Selezionare Risoluzione dei problemi Dall’elenco.
- Selezionare Hardware e dispositivi dalla risoluzione dei problemi.
- Una volta che la risoluzione dei problemi si aprirà, fare clic su Prossimo.
- Seleziona il programma che non funziona dall’elenco popolato.
- Seleziona l’opzione desiderata per la risoluzione dei problemi.
La maggior parte dell’hardware è plug-and-play. Ciò significa che si collegano al computer e il computer installerà i driver corretti.
Questo non lo fa’T Ecclamo sempre negli utenti’ favore e il sub deve essere scaricato da una fonte diversa. Prima di dedicare del tempo a cercare un conducente eseguire le seguenti attività per risolvere il problema:
La risoluzione dei problemi testerà il programma per garantire che funzioni. Esegui la risoluzione dei problemi di compatibilità per qualsiasi altro programma che non è compatibile.
Non compatibile? Non è un problema
- Fare clic nella casella di ricerca della barra delle applicazioni.
- Tipo Esegui programmi.
- Selezionare Esegui programmi realizzati per le versioni precedenti di Windows.
- Questo aprirà il Risoluzione dei problemi di compatibilità.
- Segui i suggerimenti sullo schermo.
Quindi tu’ve ha cercato di eseguire la risoluzione dei problemi e non è stato’t lavoro. Quello’sta bene, alzati e riprova. C’è un modo per rendere il tuo programma compatibile con la tua versione di Windows. Qui’S come farlo:
Assicurarsi di eseguire la risoluzione dei problemi di compatibilità per ciascun programma che necessita di driver.
Suggerimento per gli esperti:
Sponsorizzato
I conducenti obsoleti sono il motivo principale per errori e problemi di sistema. Se alcuni dei tuoi file mancano o si arrestano in modo anomalo, una soluzione automatizzata come Driverfix può risolvere questi problemi in un paio di clic. Ed è anche leggero sul tuo sistema!
Hai problemi con la risoluzione dei problemi di Windows? Qui’è un’ottima guida per risolvere la risoluzione dei problemi se ha smesso di funzionare per te.
2. Cerca i conducenti
L’installazione di driver manualmente è la tua prossima opzione. L’installazione manuale dei driver può essere pericolosa se si scaricano driver da una fonte sconosciuta o non riconosciuta.
Assicurarsi che tutti i driver siano scaricati da fonti di fiducia come i produttori’ siti Web.
Aggiorna automaticamente i driver
Se indossi’Vuoi affrontare il problema di cercare manualmente sul Web l’ultimo driver disponibile, ti consigliamo di utilizzare un software per aggiornamenti del driver di terze parti che lo farà automaticamente per te.
Non solo il software aggiornerà facilmente il tuo firmware, ma scansionerà costantemente il tuo dispositivo per i nuovi driver da solo, quindi non’devo persino farlo.
3. Esegui in modalità compatibilità
- Trova il programma che tu’sta cercando di correre dentro Modalità di compatibilità.
- Fare clic con il pulsante destro del mouse sul programma e selezionare Proprietà.
- Clicca sul Scheda di compatibilità.
- Fare clic sulla casella in modalità compatibilità.
- Seleziona la versione di Windows su cui il programma è in grado di lavorare.
- Clicca su Fare domanda a.
La maggior parte dei programmi ha la possibilità di eseguire in modalità compatibilità. Per eseguire il tuo programma in questa modalità, eseguire i passaggi di cui sopra.
Leggi di più su questo argomento
- Correggi l’errore di violazione del driver in Windows 10
- Come correggere l’errore dei driver obsoleti su Windows 11
- Windows non può scaricare driver? Risolvilo ora con queste soluzioni
- Risolvi l’errore Acpi_Driver_Internale in Windows 10
- Vedendo il codice di errore del driver 32? Risolvilo in 4 semplici passaggi
4. Quando tutto il resto fallisce
I driver MIDI sono significativamente più difficili da installare in Windows 10 a causa di una serie di problemi di compatibilità. Ognuna delle correzioni menzionate in questo articolo potrebbe potenzialmente risolvere il problema per il tuo conducente.
Se tu’VE Rimani senza opzioni Chiama il produttore per il tuo dispositivo e chiedi assistenza o per una posizione di driver compatibili.
Quello’S a riguardo per questo articolo. Se hai qualcosa da aggiungere riguardo all’argomento, non esitate a farlo nella sezione commenti qui sotto.
- autista
- Guide di Windows 10
Miglioramenti MIDI in Windows 10
Man mano che Windows 10 si evolve, stiamo continuando a creare supporto per le tecnologie focalizzate sui musicisti.
Permettere’s DAI un’occhiata a MIDI. Windows ha avuto un supporto MIDI integrato che risale ai giorni a 16 bit. Da allora, la maggior parte delle interfacce MIDI si è spostata su USB e il nostro supporto nella scatola ha tenuto il passo, con un driver di classe e API che supportano quelle nuove interfacce.
Coloro che non hanno familiarità con la tecnologia musicale possono pensare a MIDI .file di musica centrale. Ma quello’è solo una piccola parte di ciò che è veramente MIDI. Dalla sua standardizzazione nel 1983, MIDI è rimasto il protocollo di comunicazione più utilizzato e probabilmente più importante nella produzione musicale. Esso’s usato per tutto, dal controllo di sintetizzatori e sequencer e modifiche alle patch per gli elenchi di set, alla sincronizzazione dei miscelatori e persino alla commutazione di telecamere su podcast usando una superficie di controllo MIDI. Anche il protocollo Arduino firma si basa su MIDI.
In questo post, noi’parleremo di diverse cose nuove’VE creato per rendere MIDI ancora più utile nelle tue app:
- Basics MIDI UWP – Utilizzo di App in Windows Store
- Nuovo supporto Bluetooth LE MIDI in Aggiornamento per l’anniversario di Windows 10
- Il wrapper Win32 per UWP MIDI (rendendo l’API accessibile alle app desktop)
- Biblioteche MIDI Helper per C# e PowerShell
Inoltre, abbiamo incluso una serie di miglioramenti focalizzati sull’audio quando Windows 10 è stato rilasciato la scorsa estate. Questi miglioramenti includevano: miglioramenti a bassa latenza a WASAPI, ulteriore driver lavora con partner per optare per buffer più piccoli per una bassa latenza su moderni dispositivi Windows 10 come superficie e telefoni come il 950/950xl; Modifica per consentire l’elaborazione audio grezza senza alcun DSP che aggiunge la latenza; una nuova API audio e effetti UWP a bassa latenza denominata Audiografo; e, naturalmente, una nuova API MIDI UWP.
Noi’recentemente ha anche aggiunto supporto per l’audio spaziale per esperienze coinvolgenti. Lo scorso autunno, nell’aggiornamento del 1511, abbiamo abilitato il supporto del sistema operativo molto lungimirante per i dispositivi audio Thunderbolt 3, per garantire che noi’re lì quando i produttori iniziano a creare questi dispositivi e i loro driver audio ad alte prestazioni. Cumulativamente, questo è stato un grande lavoro di Windows Engineering, tutti mirano ai musicisti e alle app di creazione di musica.
Nozioni di base MIDI UWP
In Windows 10 RTM dell’anno scorso abbiamo introdotto una nuova API MIDI, accessibile alle app UWP praticamente su tutti i dispositivi Windows 10, che fornisce un modo moderno per accedere a queste interfacce MIDI. Abbiamo creato questa API per fornire una base ad alte prestazioni e flessibili su cui possiamo creare supporto per le nuove interfacce MIDI.
Inizialmente abbiamo pubblicato questa API per un commento come pacchetto Nuget in Windows 8.1 e ho ricevuto molti feedback dagli sviluppatori di app. Quello che vedi in Windows 10 è il risultato diretto di quel feedback e dei nostri test.
L’API si collega bene con le API di enumerazione e osservatore del dispositivo in UWP, rendendo facile rilevare la spina calda/scollegare.
Qui’è un modo semplice per ottenere un elenco di dispositivi MIDI e loro ID, usando C#:
Usando Windows.Dispositivi.Midi;
Usando Windows.Dispositivi.Enumerazione;
..
Private Async void ListMidideVices ()
// enumera i dispositivi di input
VAR DEVICELIST = ATTENZIONE DEVIVITÀ.FindAlSync (
Midiinport.GetDevicesElector ());
foreach (var deviceInfo in Devicelist)
Sistema.Diagnostica.Debug.WriteLine (DeviceInfo.Id);
Sistema.Diagnostica.Debug.WriteLine (DeviceInfo.Nome);
Sistema.Diagnostica.Debug.Linea di scrittura(“—-“);
>
// I dispositivi di output sono elencati allo stesso modo, ma
// usando il midioutport.GetDevicesElector ()
>
E qui’S Come impostare un osservatore e gestire eventi di enumerazione/orologi, e anche ottenere l’elenco delle interfacce connesse. Questo è un po ‘più di codice, ma questo’è un approccio più appropriato per la maggior parte delle app:
Vuoto privato StartWatchingInputDevices ()
var watcher = dispositivoInformazione.CreateWatcher (
Midiinport.GetDevicesElector ());
Osservatore.Aggiunto += onmidiinputdeviceEdded;
Osservatore.Rimosso += onmidiinputdeviceRemoved;
Osservatore.Enumeration completed += onmidiinputdeviceenumeration completed;
Vuoto privato OnmidiinputDeviceEnumerationCompleted (
DispositWatcher Sender, oggetto Args)
// L’enumerazione iniziale è completa. Questo è quando
// potresti presentare un elenco di interfacce al
// utente dell’applicazione.
>
Vuoto privato OnmidiinputDeviceRemoved (
DispositWatcher Sender, DeviceInformationUpdate Args)
// gestisce la rimozione di un dispositivo di input MIDI
>
Vuoto privato OnmidiinputDeviceEadded (
DispositWatcher mittente, dispositivo INFORMATION ARGS)
// gestisce l’aggiunta di un nuovo dispositivo di input MIDI
>
L’uso di un osservatore per i dispositivi di elenco e la gestione di ADD/REMET è una migliore pratica da seguire nelle app. Nessuno vuole riavviare la loro app solo perché si sono dimenticati di collegare o accendere il controller MIDI. L’uso dell’osservatore semplifica la gestione adeguata di tali aggiunte/rimozioni in fase di esecuzione.
L’API è semplice da usare, con classi fortemente tipizzate per tutti i messaggi standard, nonché il supporto per le operazioni basate su Sysex e Buffer. Questo esempio C# mostra come aprire le porte di input e output e rispondere a specifici messaggi MIDI.
Usando Windows.Dispositivi.Midi;
Usando Windows.Dispositivi.Enumerazione;
..
Private Async void midiexample ()
String outPortID = “ID si ottiene l’enumerazione del dispositivo”;
String inportId = “ID si ottiene l’enumerazione del dispositivo”;
// Apri la porta di output e invia un messaggio
VAR OUTPORT = ATTIVO MIDIOUTPORT.Daidasync (outportid);
var NoteOnMessage = new MidinoteOnMessage (0, 110, 127);
outport.SendMessage (NoteOnMessage);
// Apri una porta di input e ascolta i messaggi
var Inport = Abved Midiinport.Daidasync (inportid);
Inport.Messagereceived += onmidimessagereceived;
>
Vuoto privato Onmidimessagereceived (mittente midiinport,
MidimessagereceiveedEventArgs args)
Switch (args.Messaggio.Tipo)
Caso midimessagepo.Noteon:
rottura;
Caso midimessagepo.PolyphonicKeypressure:
rottura;
// eccetera.
>
>
Nella maggior parte dei casi, ispezioneresti il tipo di messaggio e quindi lanciate l’imidimessage su uno dei messaggi fortemente dal punto di vista definito in Windows.Dispositivi.Spazio dei nomi MIDI, come MidinoteOnMessage o MIDIPitchBendChangeMessage. Voi’non è richiesto di farlo, tuttavia; Puoi sempre lavorare dai byte di dati grezzi se preferisci.
L’API MIDI UWP di Windows 10 è adatta per la creazione di tutti i tipi di app di Windows Store focalizzate sulla musica. È possibile creare superfici di controllo, sequencer, sintetizzatori, app di utilità, bibliotecari di patch, controller di illuminazione, sintetizzatori della bobina Tesla ad alta tensione e molto altro.
Proprio come le API MIDI più vecchie, l’API MIDI UWP di Windows 10 funziona bene con componenti aggiuntivi di terze parti come Tobias Erichsen’S Great RTPMIDI Driver, che fornisce supporto per MIDI su Wired e Wi-Fi Networking.
Una grande caratteristica della nuova API è che è multi-client. Finché tutte le app con la porta aperte utilizzano l’API MIDI UWP di Windows 10 e non le API Win32 MME o DirectMusic più vecchie, possono condividere lo stesso dispositivo. Questo è qualcosa che le API più antiche non’T gestire senza driver personalizzati ed era una richiesta comune da parte dei nostri partner e clienti.
Finalmente, questo’è importante notare che l’API MIDI UWP di Windows 10 funziona con tutti i dispositivi MIDI riconosciuti, sia che usano i driver di classe o i propri driver personalizzati. Ciò include molte utility MIDI basate su software implementate come driver su Windows 10.
Nuovo supporto Bluetooth LE MIDI in UWP MIDI
Oltre al supporto multi-cliente e ai miglioramenti’VE Realizzato in prestazioni e stabilità, un buon motivo per utilizzare l’API MIDI UWP di Windows 10 è a causa del suo supporto per nuovi standard e trasporti.
Microsoft partecipa attivamente al processo di standard MIDI e ha rappresentanti nei gruppi di lavoro. Ci sono molti di noi all’interno di Microsoft che partecipano direttamente alla creazione, al controllo e al voto degli standard per MIDI e per l’audio in generale.
Uno standard MIDI entusiasmante e relativamente nuovo che ha rapidamente guadagnato popolarità è Bluetooth le Midi. Microsoft ha votato per ratificare lo standard in base al lavoro pionieristico svolto da Apple in questo spazio; Di conseguenza, Apple, Microsoft e altri sono compatibili con uno standard che sta vedendo una vera trazione nella comunità dei musicisti e ha già una serie di periferiche compatibili.
In Windows 10 Anniversary Edition, noi’VE Incluso il supporto in scatola per Bluetooth Le Midi per qualsiasi app utilizzando l’API MIDI di Windows 10 UWP.
In Windows 10 Anniversary Edition, noi’VE Incluso il supporto in scatola per Bluetooth Le Midi per qualsiasi app utilizzando l’API MIDI di Windows 10 UWP. Questa è un’aggiunta che non richiede modifiche al codice, poiché l’interfaccia stessa è semplicemente un altro trasporto trasparente emerso dall’API MIDI.
Questo tipo di interfaccia MIDI utilizza la radio Bluetooth già nel tuo PC, telefono, dispositivo IoT o altro dispositivo Windows 10 per parlare con le periferiche MIDI Bluetooth come tastiere, pedali e controller. Attualmente il PC stesso può’essere un periferico, ma noi’sta guardando questo per il futuro. Sebbene ci siano alcuni ottimi Din Midi a Bluetooth LE MIDI e adattatori simili là fuori, non è necessario hardware aggiuntivo per Bluetooth Le Midi in Windows 10 fintanto che il tuo PC disponga di una radio Bluetooth LE abilita disponibile.
Sappiamo che la latenza è importante per i musicisti, quindi ci siamo assicurati che la nostra implementazione sia competitiva con altre piattaforme. Naturalmente, il Bluetooth ha una latenza più alta di una connessione USB cablata, ma quel compromesso può valerne la pena per eliminare il disordine del cavo.
Se abbinato, la periferica Bluetooth Le MIDI verrà visualizzata come dispositivo MIDI nell’Explorer del dispositivo e verrà automaticamente incluso nell’enumerazione del dispositivo MIDI UWP. Questo è completamente trasparente per la tua applicazione.
Per ulteriori informazioni su come scoprire e abbinare i dispositivi, inclusi i dispositivi Bluetooth LE MIDI, consultare l’enumerazione e l’accoppiamento del dispositivo su GitHub.
Abbiamo aggiunto questa funzionalità in Windows 10 Anniversary Edition come risultato diretto del feedback dei partner e dei clienti. IO’m davvero entusiasta di Bluetooth le midi in Windows 10 e dei dispositivi che ora possono essere utilizzati su Windows 10.
Supporto applicazione desktop per l’API MIDI UWP
Sappiamo che la maggior parte dei musicisti usa Desktop Win32 Daws e utility quando fa musica. L’API MIDI UWP è accessibile alle applicazioni desktop, ma sappiamo che l’accesso alle API UWP da diverse lingue e ambienti di costruzione può essere impegnativo.
Per aiutare gli sviluppatori di app desktop con la nuova API e per ridurre l’attrito, il mio collega Dale Stammen sul nostro team WDG/Pax Spark ha messo insieme un wrapper Win32 per l’API MIDI UWP di Windows 10.
Il lavoro svolto dal nostro team, incluso questo wrapper API, è principalmente guidato dai partner. Ciò significa che, a seguito di richieste e feedback, creiamo cose per consentire ai partner di avere successo su Windows. Uno dei partner con cui abbiamo lavorato durante la creazione di questo è Cakewalk, produttori della popolare applicazione del Sonar Desktop DAW.
Questo è ciò che i loro sviluppatori hanno detto sull’involucro Win32 per l’API MIDI UWP e il nostro supporto per Bluetooth Le Midi:
“Noi’è felice di vedere Microsoft che supporta le specifiche MIDI Bluetooth ed esponendola agli sviluppatori di Windows attraverso un’API semplificata. Usando il nuovo wrapper Win32 per l’API MIDI UWP, siamo stati in grado di prototipo di supporto MIDI Bluetooth molto rapidamente. A Cakewalk noi’REGLIORE ALLE PRESENTAZIONE PER SUPPORTO PERIFERALI DELLA WIRELESSA, quindi questa è un’aggiunta molto gradita da Microsoft.”
Noel Borthwick, CTO, Cakewalk
Adoriamo lavorare con grandi partner come Cakewalk, sapendo che il risultato avvantaggerà direttamente i nostri clienti comuni.
Questo wrapper Win32 rende semplice l’uso dell’API proprio come qualsiasi API Flat Win32. Affari tutte le capacità dell’API MIDI UWP di Windows 10 e rimuove il requisito per la tua applicazione Win32. Inoltre, lì’S No Requisito di utilizzare C ++/CX o modificare in altro modo gli strumenti e i processi. Qui’S A C ++ Win32 Console App Esempio:
// Apri la porta MIDI OUT 0
risultato = gmidioutportopenfunc (MIDIPTR, 0 e gmidioutport);
if (risultato != Winrt_no_error)
cout goto cleanup;
>
// Invia una nota sul messaggio alla porta MIDI
Buffer char non firmato [3] = < 144, 60 , 127 >;
Cout GmidioutportsendFunc (Gmidioutport, Buffer, 3);
// Invia un messaggio di nota alla porta MIDI
COUT BUFFER [0] = 128;
GMIDIOUTPORTSENDFUNC (GMIDIOUTPORT, BUFFER, 3);
Questa API è ottimizzata per lavorare con le applicazioni Win32 esistenti, quindi rinunciamo a digitare fortemente i messaggi MIDI e lavoriamo invece con array di byte, proprio come gli sviluppatori di app musicali Win32 sono abituati.
Noi’Rice ancora feedback da partner e sviluppatori sul wrapper API e amerei il tuo. Puoi trovare il codice sorgente su GitHub. Potremmo cambiare la posizione più tardi, quindi l’AKA.Link MS (http: // aka.ms/win10midiwin32) è quello che vuoi tenere a portata di mano.
Per gli sviluppatori che utilizzano versioni recenti di Visual Studio, noi’Ve ha anche reso disponibile un pacchetto Nuget pratico.
Noi’replica già con i partner di app desktop per integrare nelle loro applicazioni questa API utilizzando questo wrapper, nonché altri miglioramenti dell’esperienza audio e utente in Windows 10. Se hai un’app desktop che mira ai musicisti professionisti e hai domande, ti preghiamo di contattarmi su @pete_brown su Twitter o Pete Dot Brown su Microsoft Dot Com.
Librarie MIDI Helper per le app di Windows Store
Oltre al wrapper API Win32, abbiamo anche alcune librerie di aiuto più piccole per gli sviluppatori di app di negozio e gli utenti di PowerShell.
Il primo è il mio helper API MIDI UWP Windows 10, per app C#, VB e C ++ Windows Store. Questo è progettato per semplificare l’enumero dei dispositivi MIDI, legarsi ai risultati in XAML e rispondere a eventuali modifiche a spina calda/scollegatura. Esso’s disponibile sia come fonte che come pacchetto NuGet compilato.
Include una classe di orologi con collezioni vincolabili / osservabili per le istanze di informazione del dispositivo.
Messaggi RPN e NRPN
Inoltre, la libreria helper contiene codice per assistere i messaggi RPN (numero di parametri registrati) e NRPN (numero di parametri non registrati). Questi possono essere più impegnativi per i nuovi sviluppatori con cui lavorare perché sono messaggi logici composti da diversi messaggi aggregati insieme, inviati in successione.
Perché abbiamo esposto le finestre.Dispositivi.Midi.L’interfaccia imidimessage in UWP e il codice di output MIDI sottostante invia tutto ciò che è nel buffer, la creazione di classi di messaggi aggregate fortemente tipizzato è stata abbastanza facile. Quando si inviano messaggi, usi queste classi proprio come qualsiasi altro messaggio MIDI fortemente digitato.
IO’m Indagare incorporando il supporto per l’MPE proposto (espressione polifonica multidimensionale), nonché per l’analisi e l’aggregazione dei messaggi RPN e NRPN in arrivo. Se queste funzionalità ti sarebbero utili nelle tue app, contattami e fammi sapere.
Generatore di orologi MIDI
Un altro pezzo che la biblioteca include è un generatore di orologio midi. Se hai bisogno di un generatore di clock MIDI (non per un ciclo di controllo sequencer, ma solo per produrre messaggi di clock in uscita), la libreria contiene un’implementazione che troverai utile. Qui’S come lo usi da c#:
MidicLockGenerator privato _clock = new MidicLockGenerator ();
..
_orologio.SendMidistartMessage = true;
_orologio.SendMidistopMessage = true;
Foreach (Informazioni di DEVISPORMAZIONE in DEVICEWATCHER.OutputPortDescrittori)
var port = (midioutport) Abswait midioutport.Daidasync (informazioni.Id);
if (port != null)
_orologio.OutputPorts.Aggiungi (porta);
>
public void startclock ()
_orologio.Inizio();
>
public void stopclock ()
_orologio.Fermare();
>
Il mio Repo GitHub include la sorgente C ++/CX e un’app client C#/XAML. A parte questo: questo è stato il mio primo progetto C ++/CX. Anche se trovo ancora C# più facile per la maggior parte delle attività, ho trovato C ++ CX qui abbastanza accessibile. Se tu’Re uno sviluppatore C# che ha pensato di usare C ++ CX, dargli un vortice. Potresti trovarlo più familiare di quanto ti aspetti!
Questa biblioteca aiuterà gli sviluppatori a seguire le migliori pratiche per le app MIDI in Windows Store. Proprio come con le app desktop, se tu’REDIZIONE QUI CREDIZZATO UNA APPAGGIO DI MUSICI.
La seconda libreria Helper è un insieme di comandi PowerShell per l’utilizzo dell’API MIDI di Windows 10 UWP. IO’ha parlato con persone che lo usano per automatizzare gli script degli aggiornamenti MIDI per sincronizzare vari mixer in una grande installazione e altri che lo usano come “colla” per tradurre messaggi tra diversi dispositivi. Là’è molto che puoi fare con PowerShell in Windows 10, e ora MIDI ne fa parte. Il Repo include esempi di utilizzo, quindi ho vinto’t ripeterlo qui.
Conclusione
IO’Sono davvero entusiasta del lavoro che continuiamo a fare nello spazio audio per aiutare i musicisti e gli sviluppatori di app musicali su Windows.
Complessivamente, l’API MIDI UWP, il wrapper Win32 per l’API MIDI UWP e le librerie di Helper per le app di Windows Store e per gli script di PowerShell consentono di sfruttare app e script per sfruttare l’ultima tecnologia MIDI in Windows 10, tra cui Bluetooth Midi.
IO’Non vedo l’ora che arrivino le prossime app desktop e Windows Store che supporteranno questa API e tecnologie come Bluetooth Le Midi. E, come ho detto sopra, per favore contattami direttamente se tu’RE CREDIZIONE UNA APP ARTO MUSICIO PRO E BISOGNA DI GUIDA o avere altrimenti domande.
Risorse
- Inizia a sviluppare app UWP
- Dispositivi.Documentazione dello spazio dei nomi MIDI
- Sample API MIDI UWP ufficiale di Windows 10
- Github Repo per l’involucro MIDI Win32
- Pete’s github repos con progetti MIDI e audio
- Pacchetto Nuget per l’involucro MIDI Win32
- Pete Brown Summer Namm 2015 Keynote su Windows 10
- L’associazione MIDI
- Uno studio nel palmo della tua mano: sviluppare app di creazione di audio e video per Windows 10
- Audio spaziale con audiografia in UWP
- Audio spaziale in app e giochi UWP
Scarica Visual Studio per iniziare.
Il team di Windows vorrebbe sentire il tuo feedback. Si prega di mantenere il feedback in arrivo utilizzando il nostro sito Uservoice per sviluppatori di Windows. Se si dispone di un bug diretto, si prega di utilizzare lo strumento di feedback di Windows integrato direttamente in Windows 10.
Driver di porta MIDI
Il driver della porta MIDI gestisce un sintetizzatore MIDI o un dispositivo di acquisizione. Il driver dell’adattatore fornisce un driver miniport MIDI corrispondente che si lega all’oggetto driver della porta MIDI per formare un filtro MIDI (vedere i filtri MIDI e DirectMusic) che può catturare o rendere un flusso MIDI.
Il driver della porta MIDI espone un’interfaccia Iportmidi al driver miniport. Iportmidi eredita i metodi nell’interfaccia di base iport. Iportmidi Fornisce i seguenti metodi aggiuntivi:
Notifica il driver di porta che il sintetizzatore MIDI o il dispositivo di acquisizione è avanzato in una nuova posizione nel flusso MIDI. Iportmidi :: RegisterServiceGroup
Registra un oggetto del gruppo di servizi con il driver di porta. Un gruppo di servizi contiene un elenco di una o più routine di servizio che devono essere chiamate quando il driver miniport chiama Notificare; Per ulteriori informazioni, consultare gli oggetti del gruppo Service Sink e Service.
Gli oggetti del driver della porta e del miniport MIDI comunicano tra loro attraverso il rispettivo Iportmidi e interfacce iminiportmidi. Il driver miniport utilizza il driver di porta Iportmidi interfaccia per avvisare il driver di porta degli interrupt hardware. Inoltre, il driver di porta comunica con gli oggetti del flusso del driver miniport attraverso le loro interfacce iminiportmidtream.
In Windows XP e successivamente, il Iportmidi e le interfacce iportdmus sono entrambe implementate in un singolo modulo driver interno. Questo consolidamento è facilitato dalla somiglianza di queste due interfacce. Ad esempio, gli stessi metodi sono definiti per entrambe le interfacce. Le applicazioni scritte per le versioni precedenti di Windows non devono vedere alcun cambiamento nel comportamento del Iportmidi E Iportdmus Interfacce risultanti dal consolidamento dei driver portuali MIDI e DMUS.
Feedback
Inviare e visualizzare il feedback per
Miglioramenti MIDI in Windows 10
Recentemente Pete Brown di Microsoft ha pubblicato un post sul blog molto istruttivo sui miglioramenti MIDI in Windows 10.
Il post sul blog copre una serie di argomenti tra cui
- Basics MIDI UWP – Utilizzo di App in Windows Store
- Nuovo supporto Bluetooth LE MIDI in Aggiornamento per l’anniversario di Windows 10
- Il wrapper Win32 per UWP MIDI (rendendo l’API accessibile alle app desktop)
- Biblioteche MIDI Helper per C# e PowerShell
Miglioramenti MIDI in Windows 10 | Costruire app per Windows
“Siamo lieti di vedere Microsoft che supporta le specifiche MIDI Bluetooth ed esponendola agli sviluppatori di Windows attraverso un’API semplificata. Usando il nuovo wrapper Win32 per l’API MIDI UWP, siamo stati in grado di prototipo di supporto MIDI Bluetooth molto rapidamente. A Cakewalk stiamo guardando avanti per supportare le periferiche wireless, quindi questa è un’aggiunta molto gradita da Microsoft.”
Di Noel Borthwick, CTO, Cakewalk
C’è anche una bella spiegazione nell’articolo di Pete su come funzionano RPN e NRPN e la loro struttura dei dati.
Con il rilascio di Windows 10, tutte e tre le principali società di sistemi operativi (Apple, Google e Microsoft) hanno sviluppato tutti i supporti per lo standard Association MIDI Products Association per MIDI su Bluetooth a bassa energia che può essere trovata nella sezione Specs di questo sito ed è disponibile per il download dai membri dell’associazione MIDI a nessuna carica.