//
// Copyright (c) Microsoft Corporation. All rights reserved.
// 
//
// File generated by WinMDIDL version 8.00.0021
//

import "inspectable.idl";
import "AsyncInfo.idl";
import "EventToken.idl";
import "windowscontracts.idl";
import "Windows.Foundation.idl";
import "Windows.Devices.Enumeration.idl";
import "Windows.Storage.Streams.idl";

// Forward Declare
namespace Windows
{
    namespace Devices
    {
        namespace Enumeration
        {
            runtimeclass DeviceInformation;
        }
    }
}
namespace Windows
{
    namespace Foundation
    {
        interface IClosable;

        typedef struct TimeSpan TimeSpan;

        apicontract UniversalApiContract;
    }
}
namespace Windows
{
    namespace Storage
    {
        namespace Streams
        {
            interface IBuffer;
        }
    }
}
namespace Windows
{
    namespace Devices
    {
        namespace Midi
        {
            typedef enum MidiMessageType MidiMessageType;

            interface IMidiChannelPressureMessage;

            interface IMidiChannelPressureMessageFactory;

            interface IMidiControlChangeMessage;

            interface IMidiControlChangeMessageFactory;

            interface IMidiInPort;

            interface IMidiInPortStatics;

            interface IMidiMessage;

            interface IMidiMessageReceivedEventArgs;

            interface IMidiNoteOffMessage;

            interface IMidiNoteOffMessageFactory;

            interface IMidiNoteOnMessage;

            interface IMidiNoteOnMessageFactory;

            interface IMidiOutPort;

            interface IMidiOutPortStatics;

            interface IMidiPitchBendChangeMessage;

            interface IMidiPitchBendChangeMessageFactory;

            interface IMidiPolyphonicKeyPressureMessage;

            interface IMidiPolyphonicKeyPressureMessageFactory;

            interface IMidiProgramChangeMessage;

            interface IMidiProgramChangeMessageFactory;

            interface IMidiSongPositionPointerMessage;

            interface IMidiSongPositionPointerMessageFactory;

            interface IMidiSongSelectMessage;

            interface IMidiSongSelectMessageFactory;

            interface IMidiSynthesizer;

            interface IMidiSynthesizerStatics;

            interface IMidiSystemExclusiveMessageFactory;

            interface IMidiTimeCodeMessage;

            interface IMidiTimeCodeMessageFactory;

            runtimeclass MidiActiveSensingMessage;

            runtimeclass MidiChannelPressureMessage;

            runtimeclass MidiContinueMessage;

            runtimeclass MidiControlChangeMessage;

            runtimeclass MidiInPort;

            runtimeclass MidiMessageReceivedEventArgs;

            runtimeclass MidiNoteOffMessage;

            runtimeclass MidiNoteOnMessage;

            runtimeclass MidiOutPort;

            runtimeclass MidiPitchBendChangeMessage;

            runtimeclass MidiPolyphonicKeyPressureMessage;

            runtimeclass MidiProgramChangeMessage;

            runtimeclass MidiSongPositionPointerMessage;

            runtimeclass MidiSongSelectMessage;

            runtimeclass MidiStartMessage;

            runtimeclass MidiStopMessage;

            runtimeclass MidiSynthesizer;

            runtimeclass MidiSystemExclusiveMessage;

            runtimeclass MidiSystemResetMessage;

            runtimeclass MidiTimeCodeMessage;

            runtimeclass MidiTimingClockMessage;

            runtimeclass MidiTuneRequestMessage;
        }
    }
}

// Generic instantiations
namespace Windows
{
    namespace Devices
    {
        namespace Midi
        {
            declare
            {
                interface Windows.Foundation.IAsyncOperation<Windows.Devices.Midi.IMidiOutPort*>;

                interface Windows.Foundation.IAsyncOperation<Windows.Devices.Midi.MidiInPort*>;

                interface Windows.Foundation.IAsyncOperation<Windows.Devices.Midi.MidiSynthesizer*>;

                interface Windows.Foundation.TypedEventHandler<Windows.Devices.Midi.MidiInPort*, Windows.Devices.Midi.MidiMessageReceivedEventArgs*>;
            }
        }
    }
}

// Type definition
namespace Windows
{
    namespace Devices
    {
        namespace Midi
        {
            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            enum MidiMessageType
            {
                None                  = 0,
                NoteOff               = 128,
                NoteOn                = 144,
                PolyphonicKeyPressure = 160,
                ControlChange         = 176,
                ProgramChange         = 192,
                ChannelPressure       = 208,
                PitchBendChange       = 224,
                SystemExclusive       = 240,
                MidiTimeCode          = 241,
                SongPositionPointer   = 242,
                SongSelect            = 243,
                TuneRequest           = 246,
                EndSystemExclusive    = 247,
                TimingClock           = 248,
                Start                 = 250,
                Continue              = 251,
                Stop                  = 252,
                ActiveSensing         = 254,
                SystemReset           = 255
            };

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Devices.Midi.MidiChannelPressureMessage)]
            [uuid(BE1FA860-62B4-4D52-A37E-92E54D35B909)]
            interface IMidiChannelPressureMessage : IInspectable
                requires
                    Windows.Devices.Midi.IMidiMessage
            {
                [propget] HRESULT Channel([out] [retval] BYTE* value);
                [propget] HRESULT Pressure([out] [retval] BYTE* value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Devices.Midi.MidiChannelPressureMessage)]
            [uuid(6218ED2F-2284-412A-94CF-10FB04842C6C)]
            interface IMidiChannelPressureMessageFactory : IInspectable
            {
                HRESULT CreateMidiChannelPressureMessage([in] BYTE channel, [in] BYTE pressure, [out] [retval] Windows.Devices.Midi.MidiChannelPressureMessage** value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Devices.Midi.MidiControlChangeMessage)]
            [uuid(B7E15F83-780D-405F-B781-3E1598C97F40)]
            interface IMidiControlChangeMessage : IInspectable
                requires
                    Windows.Devices.Midi.IMidiMessage
            {
                [propget] HRESULT Channel([out] [retval] BYTE* value);
                [propget] HRESULT Controller([out] [retval] BYTE* value);
                [propget] HRESULT ControlValue([out] [retval] BYTE* value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Devices.Midi.MidiControlChangeMessage)]
            [uuid(2AB14321-956C-46AD-9752-F87F55052FE3)]
            interface IMidiControlChangeMessageFactory : IInspectable
            {
                HRESULT CreateMidiControlChangeMessage([in] BYTE channel, [in] BYTE controller, [in] BYTE controlValue, [out] [retval] Windows.Devices.Midi.MidiControlChangeMessage** value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Devices.Midi.MidiInPort)]
            [uuid(D5C1D9DB-971A-4EAF-A23D-EA19FE607FF9)]
            interface IMidiInPort : IInspectable
                requires
                    Windows.Foundation.IClosable
            {
                [eventadd] HRESULT MessageReceived([in] Windows.Foundation.TypedEventHandler<Windows.Devices.Midi.MidiInPort*, Windows.Devices.Midi.MidiMessageReceivedEventArgs*>* handler, [out] [retval] EventRegistrationToken* token);
                [eventremove] HRESULT MessageReceived([in] EventRegistrationToken token);
                [propget] HRESULT DeviceId([out] [retval] HSTRING* value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Devices.Midi.MidiInPort)]
            [uuid(44C439DC-67FF-4A6E-8BAC-FDB6610CF296)]
            interface IMidiInPortStatics : IInspectable
            {
                HRESULT FromIdAsync([in] HSTRING deviceId, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Devices.Midi.MidiInPort*>** value);
                HRESULT GetDeviceSelector([out] [retval] HSTRING* value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [uuid(79767945-1094-4283-9BE0-289FC0EE8334)]
            interface IMidiMessage : IInspectable
            {
                [propget] HRESULT Timestamp([out] [retval] Windows.Foundation.TimeSpan* value);
                [propget] HRESULT RawData([out] [retval] Windows.Storage.Streams.IBuffer** value);
                [propget] HRESULT Type([out] [retval] Windows.Devices.Midi.MidiMessageType* value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Devices.Midi.MidiMessageReceivedEventArgs)]
            [uuid(76566E56-F328-4B51-907D-B3A8CE96BF80)]
            interface IMidiMessageReceivedEventArgs : IInspectable
            {
                [propget] HRESULT Message([out] [retval] Windows.Devices.Midi.IMidiMessage** value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Devices.Midi.MidiNoteOffMessage)]
            [uuid(16FD8AF4-198E-4D8F-A654-D305A293548F)]
            interface IMidiNoteOffMessage : IInspectable
                requires
                    Windows.Devices.Midi.IMidiMessage
            {
                [propget] HRESULT Channel([out] [retval] BYTE* value);
                [propget] HRESULT Note([out] [retval] BYTE* value);
                [propget] HRESULT Velocity([out] [retval] BYTE* value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Devices.Midi.MidiNoteOffMessage)]
            [uuid(A6B240E0-A749-425F-8AF4-A4D979CC15B5)]
            interface IMidiNoteOffMessageFactory : IInspectable
            {
                HRESULT CreateMidiNoteOffMessage([in] BYTE channel, [in] BYTE note, [in] BYTE velocity, [out] [retval] Windows.Devices.Midi.MidiNoteOffMessage** value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Devices.Midi.MidiNoteOnMessage)]
            [uuid(E0224AF5-6181-46DD-AFA2-410004C057AA)]
            interface IMidiNoteOnMessage : IInspectable
                requires
                    Windows.Devices.Midi.IMidiMessage
            {
                [propget] HRESULT Channel([out] [retval] BYTE* value);
                [propget] HRESULT Note([out] [retval] BYTE* value);
                [propget] HRESULT Velocity([out] [retval] BYTE* value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Devices.Midi.MidiNoteOnMessage)]
            [uuid(9B4280A0-59C1-420E-B517-15A10AA9606B)]
            interface IMidiNoteOnMessageFactory : IInspectable
            {
                HRESULT CreateMidiNoteOnMessage([in] BYTE channel, [in] BYTE note, [in] BYTE velocity, [out] [retval] Windows.Devices.Midi.MidiNoteOnMessage** value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [uuid(931D6D9F-57A2-4A3A-ADB8-4640886F6693)]
            interface IMidiOutPort : IInspectable
                requires
                    Windows.Foundation.IClosable
            {
                HRESULT SendMessage([in] Windows.Devices.Midi.IMidiMessage* midiMessage);
                HRESULT SendBuffer([in] Windows.Storage.Streams.IBuffer* midiData);
                [propget] HRESULT DeviceId([out] [retval] HSTRING* value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Devices.Midi.MidiOutPort)]
            [uuid(065CC3E9-0F88-448B-9B64-A95826C65B8F)]
            interface IMidiOutPortStatics : IInspectable
            {
                HRESULT FromIdAsync([in] HSTRING deviceId, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Devices.Midi.IMidiOutPort*>** value);
                HRESULT GetDeviceSelector([out] [retval] HSTRING* value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Devices.Midi.MidiPitchBendChangeMessage)]
            [uuid(29DF4CB1-2E9F-4FAF-8C2B-9CB82A9079CA)]
            interface IMidiPitchBendChangeMessage : IInspectable
                requires
                    Windows.Devices.Midi.IMidiMessage
            {
                [propget] HRESULT Channel([out] [retval] BYTE* value);
                [propget] HRESULT Bend([out] [retval] UINT16* value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Devices.Midi.MidiPitchBendChangeMessage)]
            [uuid(F5EEDF55-CFC8-4926-B30E-A3622393306C)]
            interface IMidiPitchBendChangeMessageFactory : IInspectable
            {
                HRESULT CreateMidiPitchBendChangeMessage([in] BYTE channel, [in] UINT16 bend, [out] [retval] Windows.Devices.Midi.MidiPitchBendChangeMessage** value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Devices.Midi.MidiPolyphonicKeyPressureMessage)]
            [uuid(1F7337FE-ACE8-48A0-868E-7CDBF20F04D6)]
            interface IMidiPolyphonicKeyPressureMessage : IInspectable
                requires
                    Windows.Devices.Midi.IMidiMessage
            {
                [propget] HRESULT Channel([out] [retval] BYTE* value);
                [propget] HRESULT Note([out] [retval] BYTE* value);
                [propget] HRESULT Pressure([out] [retval] BYTE* value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Devices.Midi.MidiPolyphonicKeyPressureMessage)]
            [uuid(E98F483E-C4B3-4DD2-917C-E349815A1B3B)]
            interface IMidiPolyphonicKeyPressureMessageFactory : IInspectable
            {
                HRESULT CreateMidiPolyphonicKeyPressureMessage([in] BYTE channel, [in] BYTE note, [in] BYTE pressure, [out] [retval] Windows.Devices.Midi.MidiPolyphonicKeyPressureMessage** value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Devices.Midi.MidiProgramChangeMessage)]
            [uuid(9CBB3C78-7A3E-4327-AA98-20B8E4485AF8)]
            interface IMidiProgramChangeMessage : IInspectable
                requires
                    Windows.Devices.Midi.IMidiMessage
            {
                [propget] HRESULT Channel([out] [retval] BYTE* value);
                [propget] HRESULT Program([out] [retval] BYTE* value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Devices.Midi.MidiProgramChangeMessage)]
            [uuid(D6B04387-524B-4104-9C99-6572BFD2E261)]
            interface IMidiProgramChangeMessageFactory : IInspectable
            {
                HRESULT CreateMidiProgramChangeMessage([in] BYTE channel, [in] BYTE program, [out] [retval] Windows.Devices.Midi.MidiProgramChangeMessage** value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Devices.Midi.MidiSongPositionPointerMessage)]
            [uuid(4CA50C56-EC5E-4AE4-A115-88DC57CC2B79)]
            interface IMidiSongPositionPointerMessage : IInspectable
                requires
                    Windows.Devices.Midi.IMidiMessage
            {
                [propget] HRESULT Beats([out] [retval] UINT16* value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Devices.Midi.MidiSongPositionPointerMessage)]
            [uuid(9C00E996-F10B-4FEA-B395-F5D6CF80F64E)]
            interface IMidiSongPositionPointerMessageFactory : IInspectable
            {
                HRESULT CreateMidiSongPositionPointerMessage([in] UINT16 beats, [out] [retval] Windows.Devices.Midi.MidiSongPositionPointerMessage** value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Devices.Midi.MidiSongSelectMessage)]
            [uuid(49F0F27F-6D83-4741-A5BF-4629F6BE974F)]
            interface IMidiSongSelectMessage : IInspectable
                requires
                    Windows.Devices.Midi.IMidiMessage
            {
                [propget] HRESULT Song([out] [retval] BYTE* value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Devices.Midi.MidiSongSelectMessage)]
            [uuid(848878E4-8748-4129-A66C-A05493F75DAA)]
            interface IMidiSongSelectMessageFactory : IInspectable
            {
                HRESULT CreateMidiSongSelectMessage([in] BYTE song, [out] [retval] Windows.Devices.Midi.MidiSongSelectMessage** value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Devices.Midi.MidiSynthesizer)]
            [uuid(F0DA155E-DB90-405F-B8AE-21D2E17F2E45)]
            interface IMidiSynthesizer : IInspectable
                requires
                    Windows.Devices.Midi.IMidiOutPort,
                    Windows.Foundation.IClosable
            {
                [propget] HRESULT AudioDevice([out] [retval] Windows.Devices.Enumeration.DeviceInformation** value);
                [propget] HRESULT Volume([out] [retval] DOUBLE* value);
                [propput] HRESULT Volume([in] DOUBLE value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Devices.Midi.MidiSynthesizer)]
            [uuid(4224EAA8-6629-4D6B-AA8F-D4521A5A31CE)]
            interface IMidiSynthesizerStatics : IInspectable
            {
                [overload("CreateAsync")] HRESULT CreateAsync([out] [retval] Windows.Foundation.IAsyncOperation<Windows.Devices.Midi.MidiSynthesizer*>** value);
                [overload("CreateAsync")] HRESULT CreateFromAudioDeviceAsync([in] Windows.Devices.Enumeration.DeviceInformation* audioDevice, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Devices.Midi.MidiSynthesizer*>** value);
                HRESULT IsSynthesizer([in] Windows.Devices.Enumeration.DeviceInformation* midiDevice, [out] [retval] boolean* value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Devices.Midi.MidiSystemExclusiveMessage)]
            [uuid(083DE222-3B74-4320-9B42-0CA8545F8A24)]
            interface IMidiSystemExclusiveMessageFactory : IInspectable
            {
                HRESULT CreateMidiSystemExclusiveMessage([in] Windows.Storage.Streams.IBuffer* rawData, [out] [retval] Windows.Devices.Midi.MidiSystemExclusiveMessage** value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Devices.Midi.MidiTimeCodeMessage)]
            [uuid(0BF7087D-FA63-4A1C-8DEB-C0E87796A6D7)]
            interface IMidiTimeCodeMessage : IInspectable
                requires
                    Windows.Devices.Midi.IMidiMessage
            {
                [propget] HRESULT FrameType([out] [retval] BYTE* value);
                [propget] HRESULT Values([out] [retval] BYTE* value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Devices.Midi.MidiTimeCodeMessage)]
            [uuid(EB3099C5-771C-40DE-B961-175A7489A85E)]
            interface IMidiTimeCodeMessageFactory : IInspectable
            {
                HRESULT CreateMidiTimeCodeMessage([in] BYTE frameType, [in] BYTE values, [out] [retval] Windows.Devices.Midi.MidiTimeCodeMessage** value);
            }

            [activatable(Windows.Foundation.UniversalApiContract, 1.0)]
            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            [threading(both)]
            runtimeclass MidiActiveSensingMessage
            {
                [default] interface Windows.Devices.Midi.IMidiMessage;
            }

            [activatable(Windows.Devices.Midi.IMidiChannelPressureMessageFactory, Windows.Foundation.UniversalApiContract, 1.0)]
            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            [threading(both)]
            runtimeclass MidiChannelPressureMessage
            {
                [default] interface Windows.Devices.Midi.IMidiChannelPressureMessage;
                interface Windows.Devices.Midi.IMidiMessage;
            }

            [activatable(Windows.Foundation.UniversalApiContract, 1.0)]
            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            [threading(both)]
            runtimeclass MidiContinueMessage
            {
                [default] interface Windows.Devices.Midi.IMidiMessage;
            }

            [activatable(Windows.Devices.Midi.IMidiControlChangeMessageFactory, Windows.Foundation.UniversalApiContract, 1.0)]
            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            [threading(both)]
            runtimeclass MidiControlChangeMessage
            {
                [default] interface Windows.Devices.Midi.IMidiControlChangeMessage;
                interface Windows.Devices.Midi.IMidiMessage;
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            [static(Windows.Devices.Midi.IMidiInPortStatics, Windows.Foundation.UniversalApiContract, 1.0)]
            [threading(both)]
            runtimeclass MidiInPort
            {
                [default] interface Windows.Devices.Midi.IMidiInPort;
                interface Windows.Foundation.IClosable;
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            [threading(both)]
            runtimeclass MidiMessageReceivedEventArgs
            {
                [default] interface Windows.Devices.Midi.IMidiMessageReceivedEventArgs;
            }

            [activatable(Windows.Devices.Midi.IMidiNoteOffMessageFactory, Windows.Foundation.UniversalApiContract, 1.0)]
            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            [threading(both)]
            runtimeclass MidiNoteOffMessage
            {
                [default] interface Windows.Devices.Midi.IMidiNoteOffMessage;
                interface Windows.Devices.Midi.IMidiMessage;
            }

            [activatable(Windows.Devices.Midi.IMidiNoteOnMessageFactory, Windows.Foundation.UniversalApiContract, 1.0)]
            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            [threading(both)]
            runtimeclass MidiNoteOnMessage
            {
                [default] interface Windows.Devices.Midi.IMidiNoteOnMessage;
                interface Windows.Devices.Midi.IMidiMessage;
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            [static(Windows.Devices.Midi.IMidiOutPortStatics, Windows.Foundation.UniversalApiContract, 1.0)]
            [threading(both)]
            runtimeclass MidiOutPort
            {
                [default] interface Windows.Devices.Midi.IMidiOutPort;
                interface Windows.Foundation.IClosable;
            }

            [activatable(Windows.Devices.Midi.IMidiPitchBendChangeMessageFactory, Windows.Foundation.UniversalApiContract, 1.0)]
            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            [threading(both)]
            runtimeclass MidiPitchBendChangeMessage
            {
                [default] interface Windows.Devices.Midi.IMidiPitchBendChangeMessage;
                interface Windows.Devices.Midi.IMidiMessage;
            }

            [activatable(Windows.Devices.Midi.IMidiPolyphonicKeyPressureMessageFactory, Windows.Foundation.UniversalApiContract, 1.0)]
            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            [threading(both)]
            runtimeclass MidiPolyphonicKeyPressureMessage
            {
                [default] interface Windows.Devices.Midi.IMidiPolyphonicKeyPressureMessage;
                interface Windows.Devices.Midi.IMidiMessage;
            }

            [activatable(Windows.Devices.Midi.IMidiProgramChangeMessageFactory, Windows.Foundation.UniversalApiContract, 1.0)]
            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            [threading(both)]
            runtimeclass MidiProgramChangeMessage
            {
                [default] interface Windows.Devices.Midi.IMidiProgramChangeMessage;
                interface Windows.Devices.Midi.IMidiMessage;
            }

            [activatable(Windows.Devices.Midi.IMidiSongPositionPointerMessageFactory, Windows.Foundation.UniversalApiContract, 1.0)]
            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            [threading(both)]
            runtimeclass MidiSongPositionPointerMessage
            {
                [default] interface Windows.Devices.Midi.IMidiSongPositionPointerMessage;
                interface Windows.Devices.Midi.IMidiMessage;
            }

            [activatable(Windows.Devices.Midi.IMidiSongSelectMessageFactory, Windows.Foundation.UniversalApiContract, 1.0)]
            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            [threading(both)]
            runtimeclass MidiSongSelectMessage
            {
                [default] interface Windows.Devices.Midi.IMidiSongSelectMessage;
                interface Windows.Devices.Midi.IMidiMessage;
            }

            [activatable(Windows.Foundation.UniversalApiContract, 1.0)]
            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            [threading(both)]
            runtimeclass MidiStartMessage
            {
                [default] interface Windows.Devices.Midi.IMidiMessage;
            }

            [activatable(Windows.Foundation.UniversalApiContract, 1.0)]
            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            [threading(both)]
            runtimeclass MidiStopMessage
            {
                [default] interface Windows.Devices.Midi.IMidiMessage;
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            [static(Windows.Devices.Midi.IMidiSynthesizerStatics, Windows.Foundation.UniversalApiContract, 1.0)]
            [threading(both)]
            runtimeclass MidiSynthesizer
            {
                [default] interface Windows.Devices.Midi.IMidiSynthesizer;
                interface Windows.Devices.Midi.IMidiOutPort;
                interface Windows.Foundation.IClosable;
            }

            [activatable(Windows.Devices.Midi.IMidiSystemExclusiveMessageFactory, Windows.Foundation.UniversalApiContract, 1.0)]
            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            [threading(both)]
            runtimeclass MidiSystemExclusiveMessage
            {
                [default] interface Windows.Devices.Midi.IMidiMessage;
            }

            [activatable(Windows.Foundation.UniversalApiContract, 1.0)]
            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            [threading(both)]
            runtimeclass MidiSystemResetMessage
            {
                [default] interface Windows.Devices.Midi.IMidiMessage;
            }

            [activatable(Windows.Devices.Midi.IMidiTimeCodeMessageFactory, Windows.Foundation.UniversalApiContract, 1.0)]
            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            [threading(both)]
            runtimeclass MidiTimeCodeMessage
            {
                [default] interface Windows.Devices.Midi.IMidiTimeCodeMessage;
                interface Windows.Devices.Midi.IMidiMessage;
            }

            [activatable(Windows.Foundation.UniversalApiContract, 1.0)]
            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            [threading(both)]
            runtimeclass MidiTimingClockMessage
            {
                [default] interface Windows.Devices.Midi.IMidiMessage;
            }

            [activatable(Windows.Foundation.UniversalApiContract, 1.0)]
            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            [threading(both)]
            runtimeclass MidiTuneRequestMessage
            {
                [default] interface Windows.Devices.Midi.IMidiMessage;
            }
        }
    }
}
