Compartir a través de


MidiOutPort.FromIdAsync(String) Método

Definición

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.

Se aplica a