MidiOutPort.FromIdAsync(String) Método
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Crea un objeto MidiOutPort para el dispositivo especificado.
public:
static IAsyncOperation<IMidiOutPort ^> ^ FromIdAsync(Platform::String ^ deviceId);
/// [Windows.Foundation.Metadata.RemoteAsync]
static IAsyncOperation<IMidiOutPort> FromIdAsync(winrt::hstring const& deviceId);
[Windows.Foundation.Metadata.RemoteAsync]
public static IAsyncOperation<IMidiOutPort> FromIdAsync(string deviceId);
function fromIdAsync(deviceId)
Public Shared Function FromIdAsync (deviceId As String) As IAsyncOperation(Of IMidiOutPort)
Parámetros
- deviceId
-
String
Platform::String
winrt::hstring
El identificador de dispositivo, que se puede obtener mediante la enumeración de los dispositivos en el sistema Windows.Devices.Enumeration.DeviceInformation.FindAllAsync.
Devoluciones
Operación asincrónica. Al finalizar, IAsyncOperation.GetResults devuelve un objeto MidiOutPort .
- Atributos
Ejemplos
// Opens the default MIDI output device.
private async Task<IMidiOutPort> OpenDefaultMidiOut()
{
IMidiOutPort midiOut = null;
string midiOutQueryString = MidiOutPort.GetDeviceSelector();
DeviceInformationCollection midiOutDevices = await DeviceInformation.FindAllAsync(midiOutQueryString);
int selectedMidiDevice = 0;
if (0 == midiOutDevices.Count)
{
Debug.WriteLine("No Midi output devices");
return null;
}
// If there are > 1 MIDI out devices, pick the first non-integrated one.
else if (2 <= midiOutDevices.Count)
{
for (int midiDeviceIdx = 0; midiDeviceIdx < midiOutDevices.Count; midiDeviceIdx++)
{
if (false == MidiSynthesizer.IsSynthesizer(midiOutDevices[midiDeviceIdx]))
{
selectedMidiDevice = midiDeviceIdx;
break;
}
}
}
midiOut = await MidiOutPort.FromIdAsync(midiOutDevices[selectedMidiDevice].Id);
return midiOut;
}
// Opens the default MIDI output device.
winrt::Windows::Foundation::IAsyncOperation<IMidiOutPort> OpenDefaultMidiOut()
{
IMidiOutPort midiOut{ nullptr };
winrt::hstring midiOutQueryString{ MidiOutPort::GetDeviceSelector() };
DeviceInformationCollection midiOutDevices{ co_await DeviceInformation::FindAllAsync(midiOutQueryString) };
uint32_t selectedMidiDevice{ 0 };
if (0 == midiOutDevices.Size())
{
// No Midi output devices.
co_return midiOut;
}
// If there are > 1 MIDI out devices, pick the first non-integrated one.
else if (2 <= midiOutDevices.Size())
{
for (uint32_t midiDeviceIdx = 0; midiDeviceIdx < midiOutDevices.Size(); midiDeviceIdx++)
{
if (false == MidiSynthesizer::IsSynthesizer(midiOutDevices.GetAt(midiDeviceIdx)))
{
selectedMidiDevice = midiDeviceIdx;
break;
}
}
}
midiOut = co_await MidiOutPort::FromIdAsync(midiOutDevices.GetAt(selectedMidiDevice).Id());
co_return midiOut;
}
Comentarios
Para enumerar los objetos MidiOutPort del sistema, pase la cadena de consulta proporcionada por GetDeviceSelector a Windows.Devices.Enumeration.DeviceInformation.FindAllAsync.
Las horas sugeridas para intentar crear un MidiInPort están en cualquier tipo de activación de la aplicación o interacción del usuario. Si se produce un error en una llamada de función en midiInPort o si un mensaje recibido de midiInPort no es válido, no intente volver a crear el puerto inmediatamente.