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

import "inspectable.idl";
import "AsyncInfo.idl";
import "EventToken.idl";
import "windowscontracts.idl";
import "Windows.Foundation.idl";
import "Windows.Devices.Enumeration.idl";
import "Windows.Foundation.Numerics.idl";
import "Windows.Media.idl";
import "Windows.Media.Capture.idl";
import "Windows.Media.Effects.idl";
import "Windows.Media.MediaProperties.idl";
import "Windows.Media.Render.idl";
import "Windows.Media.Transcoding.idl";
import "Windows.Storage.idl";

// Forward Declare
namespace Windows
{
    namespace Devices
    {
        namespace Enumeration
        {
            runtimeclass DeviceInformation;
        }
    }
}
namespace Windows
{
    namespace Foundation
    {
        interface IClosable;
    }
}
namespace Windows
{
    namespace Foundation
    {
        namespace Numerics
        {
            typedef struct Quaternion Quaternion;

            typedef struct Vector3 Vector3;
        }
    }
}
namespace Windows
{
    namespace Foundation
    {
        typedef struct TimeSpan TimeSpan;

        apicontract UniversalApiContract;
    }
}
namespace Windows
{
    namespace Media
    {
        runtimeclass AudioFrame;

        typedef enum AudioProcessing AudioProcessing;
    }
}
namespace Windows
{
    namespace Media
    {
        namespace Capture
        {
            typedef enum MediaCategory MediaCategory;
        }
    }
}
namespace Windows
{
    namespace Media
    {
        namespace Effects
        {
            interface IAudioEffectDefinition;
        }
    }
}
namespace Windows
{
    namespace Media
    {
        namespace MediaProperties
        {
            runtimeclass AudioEncodingProperties;

            runtimeclass MediaEncodingProfile;
        }
    }
}
namespace Windows
{
    namespace Media
    {
        namespace Render
        {
            typedef enum AudioRenderCategory AudioRenderCategory;
        }
    }
}
namespace Windows
{
    namespace Media
    {
        namespace Transcoding
        {
            typedef enum TranscodeFailureReason TranscodeFailureReason;
        }
    }
}
namespace Windows
{
    namespace Storage
    {
        interface IStorageFile;

        runtimeclass StorageFile;
    }
}
namespace Windows
{
    namespace Media
    {
        namespace Audio
        {
            typedef enum AudioDeviceNodeCreationStatus AudioDeviceNodeCreationStatus;

            typedef enum AudioFileNodeCreationStatus AudioFileNodeCreationStatus;

            typedef enum AudioGraphCreationStatus AudioGraphCreationStatus;

            typedef enum AudioGraphUnrecoverableError AudioGraphUnrecoverableError;

            typedef enum AudioNodeEmitterDecayKind AudioNodeEmitterDecayKind;

            typedef enum AudioNodeEmitterSettings AudioNodeEmitterSettings;

            typedef enum AudioNodeEmitterShapeKind AudioNodeEmitterShapeKind;

            typedef enum QuantumSizeSelectionMode QuantumSizeSelectionMode;

            typedef enum SpatialAudioModel SpatialAudioModel;

            interface IAudioDeviceInputNode;

            interface IAudioDeviceOutputNode;

            interface IAudioFileInputNode;

            interface IAudioFileOutputNode;

            interface IAudioFrameCompletedEventArgs;

            interface IAudioFrameInputNode;

            interface IAudioFrameOutputNode;

            interface IAudioGraph;

            interface IAudioGraph2;

            interface IAudioGraphConnection;

            interface IAudioGraphSettings;

            interface IAudioGraphSettingsFactory;

            interface IAudioGraphStatics;

            interface IAudioGraphUnrecoverableErrorOccurredEventArgs;

            interface IAudioInputNode;

            interface IAudioInputNode2;

            interface IAudioNode;

            interface IAudioNodeEmitter;

            interface IAudioNodeEmitter2;

            interface IAudioNodeEmitterConeProperties;

            interface IAudioNodeEmitterDecayModel;

            interface IAudioNodeEmitterDecayModelStatics;

            interface IAudioNodeEmitterFactory;

            interface IAudioNodeEmitterNaturalDecayModelProperties;

            interface IAudioNodeEmitterShape;

            interface IAudioNodeEmitterShapeStatics;

            interface IAudioNodeListener;

            interface IAudioNodeWithListener;

            interface ICreateAudioDeviceInputNodeResult;

            interface ICreateAudioDeviceOutputNodeResult;

            interface ICreateAudioFileInputNodeResult;

            interface ICreateAudioFileOutputNodeResult;

            interface ICreateAudioGraphResult;

            interface IEchoEffectDefinition;

            interface IEchoEffectDefinitionFactory;

            interface IEqualizerBand;

            interface IEqualizerEffectDefinition;

            interface IEqualizerEffectDefinitionFactory;

            interface IFrameInputNodeQuantumStartedEventArgs;

            interface ILimiterEffectDefinition;

            interface ILimiterEffectDefinitionFactory;

            interface IReverbEffectDefinition;

            interface IReverbEffectDefinitionFactory;

            runtimeclass AudioDeviceInputNode;

            runtimeclass AudioDeviceOutputNode;

            runtimeclass AudioFileInputNode;

            runtimeclass AudioFileOutputNode;

            runtimeclass AudioFrameCompletedEventArgs;

            runtimeclass AudioFrameInputNode;

            runtimeclass AudioFrameOutputNode;

            runtimeclass AudioGraph;

            runtimeclass AudioGraphBatchUpdater;

            runtimeclass AudioGraphConnection;

            runtimeclass AudioGraphSettings;

            runtimeclass AudioGraphUnrecoverableErrorOccurredEventArgs;

            runtimeclass AudioNodeEmitter;

            runtimeclass AudioNodeEmitterConeProperties;

            runtimeclass AudioNodeEmitterDecayModel;

            runtimeclass AudioNodeEmitterNaturalDecayModelProperties;

            runtimeclass AudioNodeEmitterShape;

            runtimeclass AudioNodeListener;

            runtimeclass AudioSubmixNode;

            runtimeclass CreateAudioDeviceInputNodeResult;

            runtimeclass CreateAudioDeviceOutputNodeResult;

            runtimeclass CreateAudioFileInputNodeResult;

            runtimeclass CreateAudioFileOutputNodeResult;

            runtimeclass CreateAudioGraphResult;

            runtimeclass EchoEffectDefinition;

            runtimeclass EqualizerBand;

            runtimeclass EqualizerEffectDefinition;

            runtimeclass FrameInputNodeQuantumStartedEventArgs;

            runtimeclass LimiterEffectDefinition;

            runtimeclass ReverbEffectDefinition;
        }
    }
}

// Generic instantiations
namespace Windows
{
    namespace Media
    {
        namespace Audio
        {
            declare
            {
                interface Windows.Foundation.Collections.IIterable<Windows.Media.Audio.AudioGraphConnection*>;

                interface Windows.Foundation.Collections.IIterable<Windows.Media.Audio.EqualizerBand*>;

                interface Windows.Foundation.Collections.IIterator<Windows.Media.Audio.AudioGraphConnection*>;

                interface Windows.Foundation.Collections.IIterator<Windows.Media.Audio.EqualizerBand*>;

                interface Windows.Foundation.Collections.IVectorView<Windows.Media.Audio.AudioGraphConnection*>;

                interface Windows.Foundation.Collections.IVectorView<Windows.Media.Audio.EqualizerBand*>;

                interface Windows.Foundation.IAsyncOperation<Windows.Media.Audio.CreateAudioDeviceInputNodeResult*>;

                interface Windows.Foundation.IAsyncOperation<Windows.Media.Audio.CreateAudioDeviceOutputNodeResult*>;

                interface Windows.Foundation.IAsyncOperation<Windows.Media.Audio.CreateAudioFileInputNodeResult*>;

                interface Windows.Foundation.IAsyncOperation<Windows.Media.Audio.CreateAudioFileOutputNodeResult*>;

                interface Windows.Foundation.IAsyncOperation<Windows.Media.Audio.CreateAudioGraphResult*>;

                interface Windows.Foundation.TypedEventHandler<Windows.Media.Audio.AudioFileInputNode*, IInspectable*>;

                interface Windows.Foundation.TypedEventHandler<Windows.Media.Audio.AudioFrameInputNode*, Windows.Media.Audio.AudioFrameCompletedEventArgs*>;

                interface Windows.Foundation.TypedEventHandler<Windows.Media.Audio.AudioFrameInputNode*, Windows.Media.Audio.FrameInputNodeQuantumStartedEventArgs*>;

                interface Windows.Foundation.TypedEventHandler<Windows.Media.Audio.AudioGraph*, IInspectable*>;

                interface Windows.Foundation.TypedEventHandler<Windows.Media.Audio.AudioGraph*, Windows.Media.Audio.AudioGraphUnrecoverableErrorOccurredEventArgs*>;
            }
        }
    }
}

// Type definition
namespace Windows
{
    namespace Media
    {
        namespace Audio
        {
            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            enum AudioDeviceNodeCreationStatus
            {
                Success            = 0,
                DeviceNotAvailable = 1,
                FormatNotSupported = 2,
                UnknownFailure     = 3,
                AccessDenied       = 4
            };

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            enum AudioFileNodeCreationStatus
            {
                Success            = 0,
                FileNotFound       = 1,
                InvalidFileType    = 2,
                FormatNotSupported = 3,
                UnknownFailure     = 4
            };

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            enum AudioGraphCreationStatus
            {
                Success            = 0,
                DeviceNotAvailable = 1,
                FormatNotSupported = 2,
                UnknownFailure     = 3
            };

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            enum AudioGraphUnrecoverableError
            {
                None                     = 0,
                AudioDeviceLost          = 1,
                AudioSessionDisconnected = 2,
                UnknownFailure           = 3
            };

            [contract(Windows.Foundation.UniversalApiContract, 3.0)]
            enum AudioNodeEmitterDecayKind
            {
                Natural = 0,
                Custom  = 1
            };

            [contract(Windows.Foundation.UniversalApiContract, 3.0)]
            [flags]
            enum AudioNodeEmitterSettings
            {
                None           = 0x0,
                DisableDoppler = 0x1
            };

            [contract(Windows.Foundation.UniversalApiContract, 3.0)]
            enum AudioNodeEmitterShapeKind
            {
                Omnidirectional = 0,
                Cone            = 1
            };

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            enum QuantumSizeSelectionMode
            {
                SystemDefault    = 0,
                LowestLatency    = 1,
                ClosestToDesired = 2
            };

            [contract(Windows.Foundation.UniversalApiContract, 3.0)]
            enum SpatialAudioModel
            {
                ObjectBased = 0,
                FoldDown    = 1
            };

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Media.Audio.AudioDeviceInputNode)]
            [uuid(B01B6BE1-6F4E-49E2-AC01-559D62BEB3A9)]
            interface IAudioDeviceInputNode : IInspectable
                requires
                    Windows.Media.Audio.IAudioInputNode,
                    Windows.Media.Audio.IAudioNode,
                    Windows.Foundation.IClosable
            {
                [propget] HRESULT Device([out] [retval] Windows.Devices.Enumeration.DeviceInformation** value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Media.Audio.AudioDeviceOutputNode)]
            [uuid(362EDBFF-FF1C-4434-9E0F-BD2EF522AC82)]
            interface IAudioDeviceOutputNode : IInspectable
                requires
                    Windows.Media.Audio.IAudioNode,
                    Windows.Foundation.IClosable
            {
                [propget] HRESULT Device([out] [retval] Windows.Devices.Enumeration.DeviceInformation** value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Media.Audio.AudioFileInputNode)]
            [uuid(905B67C8-6F65-4CD4-8890-4694843C276D)]
            interface IAudioFileInputNode : IInspectable
                requires
                    Windows.Media.Audio.IAudioInputNode,
                    Windows.Media.Audio.IAudioNode,
                    Windows.Foundation.IClosable
            {
                [propput] HRESULT PlaybackSpeedFactor([in] DOUBLE value);
                [propget] HRESULT PlaybackSpeedFactor([out] [retval] DOUBLE* value);
                [propget] HRESULT Position([out] [retval] Windows.Foundation.TimeSpan* value);
                HRESULT Seek([in] Windows.Foundation.TimeSpan position);
                [propget] HRESULT StartTime([out] [retval] Windows.Foundation.IReference<Windows.Foundation.TimeSpan>** value);
                [propput] HRESULT StartTime([in] Windows.Foundation.IReference<Windows.Foundation.TimeSpan>* value);
                [propget] HRESULT EndTime([out] [retval] Windows.Foundation.IReference<Windows.Foundation.TimeSpan>** value);
                [propput] HRESULT EndTime([in] Windows.Foundation.IReference<Windows.Foundation.TimeSpan>* value);
                [propget] HRESULT LoopCount([out] [retval] Windows.Foundation.IReference<INT32>** value);
                [propput] HRESULT LoopCount([in] Windows.Foundation.IReference<INT32>* value);
                [propget] HRESULT Duration([out] [retval] Windows.Foundation.TimeSpan* value);
                [propget] HRESULT SourceFile([out] [retval] Windows.Storage.StorageFile** value);
                [eventadd] HRESULT FileCompleted([in] Windows.Foundation.TypedEventHandler<Windows.Media.Audio.AudioFileInputNode*, IInspectable*>* handler, [out] [retval] EventRegistrationToken* token);
                [eventremove] HRESULT FileCompleted([in] EventRegistrationToken token);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Media.Audio.AudioFileOutputNode)]
            [uuid(50E01980-5166-4093-80F8-ADA00089E9CF)]
            interface IAudioFileOutputNode : IInspectable
                requires
                    Windows.Media.Audio.IAudioNode,
                    Windows.Foundation.IClosable
            {
                [propget] HRESULT File([out] [retval] Windows.Storage.IStorageFile** value);
                [propget] HRESULT FileEncodingProfile([out] [retval] Windows.Media.MediaProperties.MediaEncodingProfile** value);
                HRESULT FinalizeAsync([out] [retval] Windows.Foundation.IAsyncOperation<Windows.Media.Transcoding.TranscodeFailureReason>** result);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Media.Audio.AudioFrameCompletedEventArgs)]
            [uuid(DC7C829E-0208-4504-A5A8-F0F268920A65)]
            interface IAudioFrameCompletedEventArgs : IInspectable
            {
                [propget] HRESULT Frame([out] [retval] Windows.Media.AudioFrame** value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Media.Audio.AudioFrameInputNode)]
            [uuid(01B266C7-FD96-4FF5-A3C5-D27A9BF44237)]
            interface IAudioFrameInputNode : IInspectable
                requires
                    Windows.Media.Audio.IAudioInputNode,
                    Windows.Media.Audio.IAudioNode,
                    Windows.Foundation.IClosable
            {
                [propput] HRESULT PlaybackSpeedFactor([in] DOUBLE value);
                [propget] HRESULT PlaybackSpeedFactor([out] [retval] DOUBLE* value);
                HRESULT AddFrame([in] Windows.Media.AudioFrame* frame);
                HRESULT DiscardQueuedFrames();
                [propget] HRESULT QueuedSampleCount([out] [retval] UINT64* value);
                [eventadd] HRESULT AudioFrameCompleted([in] Windows.Foundation.TypedEventHandler<Windows.Media.Audio.AudioFrameInputNode*, Windows.Media.Audio.AudioFrameCompletedEventArgs*>* handler, [out] [retval] EventRegistrationToken* token);
                [eventremove] HRESULT AudioFrameCompleted([in] EventRegistrationToken token);
                [eventadd] HRESULT QuantumStarted([in] Windows.Foundation.TypedEventHandler<Windows.Media.Audio.AudioFrameInputNode*, Windows.Media.Audio.FrameInputNodeQuantumStartedEventArgs*>* handler, [out] [retval] EventRegistrationToken* token);
                [eventremove] HRESULT QuantumStarted([in] EventRegistrationToken token);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Media.Audio.AudioFrameOutputNode)]
            [uuid(B847371B-3299-45F5-88B3-C9D12A3F1CC8)]
            interface IAudioFrameOutputNode : IInspectable
                requires
                    Windows.Media.Audio.IAudioNode,
                    Windows.Foundation.IClosable
            {
                HRESULT GetFrame([out] [retval] Windows.Media.AudioFrame** audioFrame);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Media.Audio.AudioGraph)]
            [uuid(1AD46EED-E48C-4E14-9660-2C4F83E9CDD8)]
            interface IAudioGraph : IInspectable
                requires
                    Windows.Foundation.IClosable
            {
                [overload("CreateFrameInputNode")] HRESULT CreateFrameInputNode([out] [retval] Windows.Media.Audio.AudioFrameInputNode** frameInputNode);
                [overload("CreateFrameInputNode")] HRESULT CreateFrameInputNodeWithFormat([in] Windows.Media.MediaProperties.AudioEncodingProperties* encodingProperties, [out] [retval] Windows.Media.Audio.AudioFrameInputNode** frameInputNode);
                [overload("CreateDeviceInputNodeAsync")] HRESULT CreateDeviceInputNodeAsync([in] Windows.Media.Capture.MediaCategory category, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Media.Audio.CreateAudioDeviceInputNodeResult*>** result);
                [overload("CreateDeviceInputNodeAsync")] HRESULT CreateDeviceInputNodeWithFormatAsync([in] Windows.Media.Capture.MediaCategory category, [in] Windows.Media.MediaProperties.AudioEncodingProperties* encodingProperties, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Media.Audio.CreateAudioDeviceInputNodeResult*>** result);
                [overload("CreateDeviceInputNodeAsync")] HRESULT CreateDeviceInputNodeWithFormatOnDeviceAsync([in] Windows.Media.Capture.MediaCategory category, [in] Windows.Media.MediaProperties.AudioEncodingProperties* encodingProperties, [in] Windows.Devices.Enumeration.DeviceInformation* device, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Media.Audio.CreateAudioDeviceInputNodeResult*>** result);
                [overload("CreateFrameOutputNode")] HRESULT CreateFrameOutputNode([out] [retval] Windows.Media.Audio.AudioFrameOutputNode** frameOutputNode);
                [overload("CreateFrameOutputNode")] HRESULT CreateFrameOutputNodeWithFormat([in] Windows.Media.MediaProperties.AudioEncodingProperties* encodingProperties, [out] [retval] Windows.Media.Audio.AudioFrameOutputNode** frameOutputNode);
                HRESULT CreateDeviceOutputNodeAsync([out] [retval] Windows.Foundation.IAsyncOperation<Windows.Media.Audio.CreateAudioDeviceOutputNodeResult*>** result);
                HRESULT CreateFileInputNodeAsync([in] Windows.Storage.IStorageFile* file, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Media.Audio.CreateAudioFileInputNodeResult*>** result);
                [overload("CreateFileOutputNodeAsync")] HRESULT CreateFileOutputNodeAsync([in] Windows.Storage.IStorageFile* file, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Media.Audio.CreateAudioFileOutputNodeResult*>** result);
                [overload("CreateFileOutputNodeAsync")] HRESULT CreateFileOutputNodeWithFileProfileAsync([in] Windows.Storage.IStorageFile* file, [in] Windows.Media.MediaProperties.MediaEncodingProfile* fileEncodingProfile, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Media.Audio.CreateAudioFileOutputNodeResult*>** result);
                [overload("CreateSubmixNode")] HRESULT CreateSubmixNode([out] [retval] Windows.Media.Audio.AudioSubmixNode** submixNode);
                [overload("CreateSubmixNode")] HRESULT CreateSubmixNodeWithFormat([in] Windows.Media.MediaProperties.AudioEncodingProperties* encodingProperties, [out] [retval] Windows.Media.Audio.AudioSubmixNode** submixNode);
                HRESULT Start();
                HRESULT Stop();
                HRESULT ResetAllNodes();
                [eventadd] HRESULT QuantumStarted([in] Windows.Foundation.TypedEventHandler<Windows.Media.Audio.AudioGraph*, IInspectable*>* handler, [out] [retval] EventRegistrationToken* token);
                [eventremove] HRESULT QuantumStarted([in] EventRegistrationToken token);
                [eventadd] HRESULT QuantumProcessed([in] Windows.Foundation.TypedEventHandler<Windows.Media.Audio.AudioGraph*, IInspectable*>* handler, [out] [retval] EventRegistrationToken* token);
                [eventremove] HRESULT QuantumProcessed([in] EventRegistrationToken token);
                [eventadd] HRESULT UnrecoverableErrorOccurred([in] Windows.Foundation.TypedEventHandler<Windows.Media.Audio.AudioGraph*, Windows.Media.Audio.AudioGraphUnrecoverableErrorOccurredEventArgs*>* handler, [out] [retval] EventRegistrationToken* token);
                [eventremove] HRESULT UnrecoverableErrorOccurred([in] EventRegistrationToken token);
                [propget] HRESULT CompletedQuantumCount([out] [retval] UINT64* value);
                [propget] HRESULT EncodingProperties([out] [retval] Windows.Media.MediaProperties.AudioEncodingProperties** value);
                [propget] HRESULT LatencyInSamples([out] [retval] INT32* value);
                [propget] HRESULT PrimaryRenderDevice([out] [retval] Windows.Devices.Enumeration.DeviceInformation** value);
                [propget] HRESULT RenderDeviceAudioProcessing([out] [retval] Windows.Media.AudioProcessing* value);
                [propget] HRESULT SamplesPerQuantum([out] [retval] INT32* value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 3.0)]
            [exclusiveto(Windows.Media.Audio.AudioGraph)]
            [uuid(4E4C3BD5-4FC1-45F6-A947-3CD38F4FD839)]
            interface IAudioGraph2 : IInspectable
                requires
                    Windows.Foundation.IClosable,
                    Windows.Media.Audio.IAudioGraph
            {
                [overload("CreateFrameInputNode")] HRESULT CreateFrameInputNodeWithFormatAndEmitter([in] Windows.Media.MediaProperties.AudioEncodingProperties* encodingProperties, [in] Windows.Media.Audio.AudioNodeEmitter* emitter, [out] [retval] Windows.Media.Audio.AudioFrameInputNode** frameInputNode);
                [overload("CreateDeviceInputNodeAsync")] HRESULT CreateDeviceInputNodeWithFormatAndEmitterOnDeviceAsync([in] Windows.Media.Capture.MediaCategory category, [in] Windows.Media.MediaProperties.AudioEncodingProperties* encodingProperties, [in] Windows.Devices.Enumeration.DeviceInformation* device, [in] Windows.Media.Audio.AudioNodeEmitter* emitter, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Media.Audio.CreateAudioDeviceInputNodeResult*>** result);
                [overload("CreateFileInputNodeAsync")] HRESULT CreateFileInputNodeWithEmitterAsync([in] Windows.Storage.IStorageFile* file, [in] Windows.Media.Audio.AudioNodeEmitter* emitter, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Media.Audio.CreateAudioFileInputNodeResult*>** result);
                [overload("CreateSubmixNode")] HRESULT CreateSubmixNodeWithFormatAndEmitter([in] Windows.Media.MediaProperties.AudioEncodingProperties* encodingProperties, [in] Windows.Media.Audio.AudioNodeEmitter* emitter, [out] [retval] Windows.Media.Audio.AudioSubmixNode** submixNode);
                HRESULT CreateBatchUpdater([out] [retval] Windows.Media.Audio.AudioGraphBatchUpdater** updater);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Media.Audio.AudioGraphConnection)]
            [uuid(763070ED-D04E-4FAC-B233-600B42EDD469)]
            interface IAudioGraphConnection : IInspectable
            {
                [propget] HRESULT Destination([out] [retval] Windows.Media.Audio.IAudioNode** value);
                [propput] HRESULT Gain([in] DOUBLE value);
                [propget] HRESULT Gain([out] [retval] DOUBLE* value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Media.Audio.AudioGraphSettings)]
            [uuid(1D59647F-E6FE-4628-84F8-9D8BDBA25785)]
            interface IAudioGraphSettings : IInspectable
            {
                [propget] HRESULT EncodingProperties([out] [retval] Windows.Media.MediaProperties.AudioEncodingProperties** value);
                [propput] HRESULT EncodingProperties([in] Windows.Media.MediaProperties.AudioEncodingProperties* value);
                [propget] HRESULT PrimaryRenderDevice([out] [retval] Windows.Devices.Enumeration.DeviceInformation** value);
                [propput] HRESULT PrimaryRenderDevice([in] Windows.Devices.Enumeration.DeviceInformation* value);
                [propget] HRESULT QuantumSizeSelectionMode([out] [retval] Windows.Media.Audio.QuantumSizeSelectionMode* value);
                [propput] HRESULT QuantumSizeSelectionMode([in] Windows.Media.Audio.QuantumSizeSelectionMode value);
                [propget] HRESULT DesiredSamplesPerQuantum([out] [retval] INT32* value);
                [propput] HRESULT DesiredSamplesPerQuantum([in] INT32 value);
                [propget] HRESULT AudioRenderCategory([out] [retval] Windows.Media.Render.AudioRenderCategory* value);
                [propput] HRESULT AudioRenderCategory([in] Windows.Media.Render.AudioRenderCategory value);
                [propget] HRESULT DesiredRenderDeviceAudioProcessing([out] [retval] Windows.Media.AudioProcessing* value);
                [propput] HRESULT DesiredRenderDeviceAudioProcessing([in] Windows.Media.AudioProcessing value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Media.Audio.AudioGraphSettings)]
            [uuid(A5D91CC6-C2EB-4A61-A214-1D66D75F83DA)]
            interface IAudioGraphSettingsFactory : IInspectable
            {
                HRESULT Create([in] Windows.Media.Render.AudioRenderCategory audioRenderCategory, [out] [retval] Windows.Media.Audio.AudioGraphSettings** value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Media.Audio.AudioGraph)]
            [uuid(76EC3132-E159-4AB7-A82A-17BEB4B31E94)]
            interface IAudioGraphStatics : IInspectable
            {
                HRESULT CreateAsync([in] Windows.Media.Audio.AudioGraphSettings* settings, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Media.Audio.CreateAudioGraphResult*>** result);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Media.Audio.AudioGraphUnrecoverableErrorOccurredEventArgs)]
            [uuid(C3D9CBE0-3FF6-4FB3-B262-50D435C55423)]
            interface IAudioGraphUnrecoverableErrorOccurredEventArgs : IInspectable
            {
                [propget] HRESULT Error([out] [retval] Windows.Media.Audio.AudioGraphUnrecoverableError* value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [uuid(D148005C-8428-4784-B7FD-A99D468C5D20)]
            interface IAudioInputNode : IInspectable
                requires
                    Windows.Media.Audio.IAudioNode,
                    Windows.Foundation.IClosable
            {
                [propget] HRESULT OutgoingConnections([out] [retval] Windows.Foundation.Collections.IVectorView<Windows.Media.Audio.AudioGraphConnection*>** value);
                [overload("AddOutgoingConnection")] HRESULT AddOutgoingConnection([in] Windows.Media.Audio.IAudioNode* destination);
                [overload("AddOutgoingConnection")] HRESULT AddOutgoingConnectionWithGain([in] Windows.Media.Audio.IAudioNode* destination, [in] DOUBLE gain);
                HRESULT RemoveOutgoingConnection([in] Windows.Media.Audio.IAudioNode* destination);
            }

            [contract(Windows.Foundation.UniversalApiContract, 3.0)]
            [uuid(905156B7-CA68-4C6D-A8BC-E3EE17FE3FD2)]
            interface IAudioInputNode2 : IInspectable
                requires
                    Windows.Media.Audio.IAudioNode,
                    Windows.Foundation.IClosable,
                    Windows.Media.Audio.IAudioInputNode
            {
                [propget] HRESULT Emitter([out] [retval] Windows.Media.Audio.AudioNodeEmitter** value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [uuid(15389D7F-DBD8-4819-BF03-668E9357CD6D)]
            interface IAudioNode : IInspectable
                requires
                    Windows.Foundation.IClosable
            {
                [propget] HRESULT EffectDefinitions([out] [retval] Windows.Foundation.Collections.IVector<Windows.Media.Effects.IAudioEffectDefinition*>** value);
                [propput] HRESULT OutgoingGain([in] DOUBLE value);
                [propget] HRESULT OutgoingGain([out] [retval] DOUBLE* value);
                [propget] HRESULT EncodingProperties([out] [retval] Windows.Media.MediaProperties.AudioEncodingProperties** value);
                [propget] HRESULT ConsumeInput([out] [retval] boolean* value);
                [propput] HRESULT ConsumeInput([in] boolean value);
                HRESULT Start();
                HRESULT Stop();
                HRESULT Reset();
                HRESULT DisableEffectsByDefinition([in] Windows.Media.Effects.IAudioEffectDefinition* definition);
                HRESULT EnableEffectsByDefinition([in] Windows.Media.Effects.IAudioEffectDefinition* definition);
            }

            [contract(Windows.Foundation.UniversalApiContract, 3.0)]
            [exclusiveto(Windows.Media.Audio.AudioNodeEmitter)]
            [uuid(3676971D-880A-47B8-ADF7-1323A9D965BE)]
            interface IAudioNodeEmitter : IInspectable
            {
                [propget] HRESULT Position([out] [retval] Windows.Foundation.Numerics.Vector3* value);
                [propput] HRESULT Position([in] Windows.Foundation.Numerics.Vector3 value);
                [propget] HRESULT Direction([out] [retval] Windows.Foundation.Numerics.Vector3* value);
                [propput] HRESULT Direction([in] Windows.Foundation.Numerics.Vector3 value);
                [propget] HRESULT Shape([out] [retval] Windows.Media.Audio.AudioNodeEmitterShape** value);
                [propget] HRESULT DecayModel([out] [retval] Windows.Media.Audio.AudioNodeEmitterDecayModel** value);
                [propget] HRESULT Gain([out] [retval] DOUBLE* value);
                [propput] HRESULT Gain([in] DOUBLE value);
                [propget] HRESULT DistanceScale([out] [retval] DOUBLE* value);
                [propput] HRESULT DistanceScale([in] DOUBLE value);
                [propget] HRESULT DopplerScale([out] [retval] DOUBLE* value);
                [propput] HRESULT DopplerScale([in] DOUBLE value);
                [propget] HRESULT DopplerVelocity([out] [retval] Windows.Foundation.Numerics.Vector3* value);
                [propput] HRESULT DopplerVelocity([in] Windows.Foundation.Numerics.Vector3 value);
                [propget] HRESULT IsDopplerDisabled([out] [retval] boolean* value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 3.0)]
            [exclusiveto(Windows.Media.Audio.AudioNodeEmitter)]
            [uuid(4AB6EECB-EC29-47F8-818C-B6B660A5AEB1)]
            interface IAudioNodeEmitter2 : IInspectable
            {
                [propget] HRESULT SpatialAudioModel([out] [retval] Windows.Media.Audio.SpatialAudioModel* value);
                [propput] HRESULT SpatialAudioModel([in] Windows.Media.Audio.SpatialAudioModel value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 3.0)]
            [exclusiveto(Windows.Media.Audio.AudioNodeEmitterConeProperties)]
            [uuid(E99B2CEE-02CA-4375-9326-0C6AE4BCDFB5)]
            interface IAudioNodeEmitterConeProperties : IInspectable
            {
                [propget] HRESULT InnerAngle([out] [retval] DOUBLE* value);
                [propget] HRESULT OuterAngle([out] [retval] DOUBLE* value);
                [propget] HRESULT OuterAngleGain([out] [retval] DOUBLE* value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 3.0)]
            [exclusiveto(Windows.Media.Audio.AudioNodeEmitterDecayModel)]
            [uuid(1D1D5AF7-0D53-4FA9-BD84-D5816A86F3FF)]
            interface IAudioNodeEmitterDecayModel : IInspectable
            {
                [propget] HRESULT Kind([out] [retval] Windows.Media.Audio.AudioNodeEmitterDecayKind* value);
                [propget] HRESULT MinGain([out] [retval] DOUBLE* value);
                [propget] HRESULT MaxGain([out] [retval] DOUBLE* value);
                [propget] HRESULT NaturalProperties([out] [retval] Windows.Media.Audio.AudioNodeEmitterNaturalDecayModelProperties** value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 3.0)]
            [exclusiveto(Windows.Media.Audio.AudioNodeEmitterDecayModel)]
            [uuid(C7787CA8-F178-462F-BC81-8DD5CBE5DAE8)]
            interface IAudioNodeEmitterDecayModelStatics : IInspectable
            {
                HRESULT CreateNatural([in] DOUBLE minGain, [in] DOUBLE maxGain, [in] DOUBLE unityGainDistance, [in] DOUBLE cutoffDistance, [out] [retval] Windows.Media.Audio.AudioNodeEmitterDecayModel** decayModel);
                HRESULT CreateCustom([in] DOUBLE minGain, [in] DOUBLE maxGain, [out] [retval] Windows.Media.Audio.AudioNodeEmitterDecayModel** decayModel);
            }

            [contract(Windows.Foundation.UniversalApiContract, 3.0)]
            [exclusiveto(Windows.Media.Audio.AudioNodeEmitter)]
            [uuid(FDC8489A-6AD6-4CE4-B7F7-A99370DF7EE9)]
            interface IAudioNodeEmitterFactory : IInspectable
            {
                HRESULT CreateAudioNodeEmitter([in] Windows.Media.Audio.AudioNodeEmitterShape* shape, [in] Windows.Media.Audio.AudioNodeEmitterDecayModel* decayModel, [in] Windows.Media.Audio.AudioNodeEmitterSettings settings, [out] [retval] Windows.Media.Audio.AudioNodeEmitter** emitter);
            }

            [contract(Windows.Foundation.UniversalApiContract, 3.0)]
            [exclusiveto(Windows.Media.Audio.AudioNodeEmitterNaturalDecayModelProperties)]
            [uuid(48934BCF-CF2C-4EFC-9331-75BD22DF1F0C)]
            interface IAudioNodeEmitterNaturalDecayModelProperties : IInspectable
            {
                [propget] HRESULT UnityGainDistance([out] [retval] DOUBLE* value);
                [propget] HRESULT CutoffDistance([out] [retval] DOUBLE* value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 3.0)]
            [exclusiveto(Windows.Media.Audio.AudioNodeEmitterShape)]
            [uuid(EA0311C5-E73D-44BC-859C-45553BBC4828)]
            interface IAudioNodeEmitterShape : IInspectable
            {
                [propget] HRESULT Kind([out] [retval] Windows.Media.Audio.AudioNodeEmitterShapeKind* value);
                [propget] HRESULT ConeProperties([out] [retval] Windows.Media.Audio.AudioNodeEmitterConeProperties** value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 3.0)]
            [exclusiveto(Windows.Media.Audio.AudioNodeEmitterShape)]
            [uuid(57BB2771-FFA5-4B86-A779-E264AEB9145F)]
            interface IAudioNodeEmitterShapeStatics : IInspectable
            {
                HRESULT CreateCone([in] DOUBLE innerAngle, [in] DOUBLE outerAngle, [in] DOUBLE outerAngleGain, [out] [retval] Windows.Media.Audio.AudioNodeEmitterShape** shape);
                HRESULT CreateOmnidirectional([out] [retval] Windows.Media.Audio.AudioNodeEmitterShape** shape);
            }

            [contract(Windows.Foundation.UniversalApiContract, 3.0)]
            [exclusiveto(Windows.Media.Audio.AudioNodeListener)]
            [uuid(D9722E16-0C0A-41DA-B755-6C77835FB1EB)]
            interface IAudioNodeListener : IInspectable
            {
                [propget] HRESULT Position([out] [retval] Windows.Foundation.Numerics.Vector3* value);
                [propput] HRESULT Position([in] Windows.Foundation.Numerics.Vector3 value);
                [propget] HRESULT Orientation([out] [retval] Windows.Foundation.Numerics.Quaternion* value);
                [propput] HRESULT Orientation([in] Windows.Foundation.Numerics.Quaternion value);
                [propget] HRESULT SpeedOfSound([out] [retval] DOUBLE* value);
                [propput] HRESULT SpeedOfSound([in] DOUBLE value);
                [propget] HRESULT DopplerVelocity([out] [retval] Windows.Foundation.Numerics.Vector3* value);
                [propput] HRESULT DopplerVelocity([in] Windows.Foundation.Numerics.Vector3 value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 3.0)]
            [uuid(0E0F907C-79FF-4544-9EEB-01257B15105A)]
            interface IAudioNodeWithListener : IInspectable
                requires
                    Windows.Foundation.IClosable,
                    Windows.Media.Audio.IAudioNode
            {
                [propput] HRESULT Listener([in] Windows.Media.Audio.AudioNodeListener* value);
                [propget] HRESULT Listener([out] [retval] Windows.Media.Audio.AudioNodeListener** value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Media.Audio.CreateAudioDeviceInputNodeResult)]
            [uuid(16EEC7A8-1CA7-40EF-91A4-D346E0AA1BBA)]
            interface ICreateAudioDeviceInputNodeResult : IInspectable
            {
                [propget] HRESULT Status([out] [retval] Windows.Media.Audio.AudioDeviceNodeCreationStatus* value);
                [propget] HRESULT DeviceInputNode([out] [retval] Windows.Media.Audio.AudioDeviceInputNode** value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Media.Audio.CreateAudioDeviceOutputNodeResult)]
            [uuid(F7776D27-1D9A-47F7-9CD4-2859CC1B7BFF)]
            interface ICreateAudioDeviceOutputNodeResult : IInspectable
            {
                [propget] HRESULT Status([out] [retval] Windows.Media.Audio.AudioDeviceNodeCreationStatus* value);
                [propget] HRESULT DeviceOutputNode([out] [retval] Windows.Media.Audio.AudioDeviceOutputNode** value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Media.Audio.CreateAudioFileInputNodeResult)]
            [uuid(CE83D61C-E297-4C50-9CE7-1C7A69D6BD09)]
            interface ICreateAudioFileInputNodeResult : IInspectable
            {
                [propget] HRESULT Status([out] [retval] Windows.Media.Audio.AudioFileNodeCreationStatus* value);
                [propget] HRESULT FileInputNode([out] [retval] Windows.Media.Audio.AudioFileInputNode** value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Media.Audio.CreateAudioFileOutputNodeResult)]
            [uuid(47D6BA7B-E909-453F-866E-5540CDA734FF)]
            interface ICreateAudioFileOutputNodeResult : IInspectable
            {
                [propget] HRESULT Status([out] [retval] Windows.Media.Audio.AudioFileNodeCreationStatus* value);
                [propget] HRESULT FileOutputNode([out] [retval] Windows.Media.Audio.AudioFileOutputNode** value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Media.Audio.CreateAudioGraphResult)]
            [uuid(5453EF7E-7BDE-4B76-BB5D-48F79CFC8C0B)]
            interface ICreateAudioGraphResult : IInspectable
            {
                [propget] HRESULT Status([out] [retval] Windows.Media.Audio.AudioGraphCreationStatus* value);
                [propget] HRESULT Graph([out] [retval] Windows.Media.Audio.AudioGraph** value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Media.Audio.EchoEffectDefinition)]
            [uuid(0E4D3FAA-36B8-4C91-B9DA-11F44A8A6610)]
            interface IEchoEffectDefinition : IInspectable
                requires
                    Windows.Media.Effects.IAudioEffectDefinition
            {
                [propput] HRESULT WetDryMix([in] DOUBLE value);
                [propget] HRESULT WetDryMix([out] [retval] DOUBLE* value);
                [propput] HRESULT Feedback([in] DOUBLE value);
                [propget] HRESULT Feedback([out] [retval] DOUBLE* value);
                [propput] HRESULT Delay([in] DOUBLE value);
                [propget] HRESULT Delay([out] [retval] DOUBLE* value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Media.Audio.EchoEffectDefinition)]
            [uuid(0D4E2257-AAF2-4E86-A54C-FB79DB8F6C12)]
            interface IEchoEffectDefinitionFactory : IInspectable
            {
                HRESULT Create([in] Windows.Media.Audio.AudioGraph* audioGraph, [out] [retval] Windows.Media.Audio.EchoEffectDefinition** value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Media.Audio.EqualizerBand)]
            [uuid(C00A5A6A-262D-4B85-9BB7-43280B62ED0C)]
            interface IEqualizerBand : IInspectable
            {
                [propget] HRESULT Bandwidth([out] [retval] DOUBLE* value);
                [propput] HRESULT Bandwidth([in] DOUBLE value);
                [propget] HRESULT FrequencyCenter([out] [retval] DOUBLE* value);
                [propput] HRESULT FrequencyCenter([in] DOUBLE value);
                [propget] HRESULT Gain([out] [retval] DOUBLE* value);
                [propput] HRESULT Gain([in] DOUBLE value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Media.Audio.EqualizerEffectDefinition)]
            [uuid(023F6F1F-83FE-449A-A822-C696442D16B0)]
            interface IEqualizerEffectDefinition : IInspectable
                requires
                    Windows.Media.Effects.IAudioEffectDefinition
            {
                [propget] HRESULT Bands([out] [retval] Windows.Foundation.Collections.IVectorView<Windows.Media.Audio.EqualizerBand*>** value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Media.Audio.EqualizerEffectDefinition)]
            [uuid(D2876FC4-D410-4EB5-9E69-C9AA1277EAF0)]
            interface IEqualizerEffectDefinitionFactory : IInspectable
            {
                HRESULT Create([in] Windows.Media.Audio.AudioGraph* audioGraph, [out] [retval] Windows.Media.Audio.EqualizerEffectDefinition** value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Media.Audio.FrameInputNodeQuantumStartedEventArgs)]
            [uuid(3D9BD498-A306-4F06-BD9F-E9EFC8226304)]
            interface IFrameInputNodeQuantumStartedEventArgs : IInspectable
            {
                [propget] HRESULT RequiredSamples([out] [retval] INT32* value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Media.Audio.LimiterEffectDefinition)]
            [uuid(6B755D19-2603-47BA-BDEB-39055E3486DC)]
            interface ILimiterEffectDefinition : IInspectable
                requires
                    Windows.Media.Effects.IAudioEffectDefinition
            {
                [propput] HRESULT Release([in] UINT32 value);
                [propget] HRESULT Release([out] [retval] UINT32* value);
                [propput] HRESULT Loudness([in] UINT32 value);
                [propget] HRESULT Loudness([out] [retval] UINT32* value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Media.Audio.LimiterEffectDefinition)]
            [uuid(ECBAE6F1-61FF-45EF-B8F5-48659A57C72D)]
            interface ILimiterEffectDefinitionFactory : IInspectable
            {
                HRESULT Create([in] Windows.Media.Audio.AudioGraph* audioGraph, [out] [retval] Windows.Media.Audio.LimiterEffectDefinition** value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Media.Audio.ReverbEffectDefinition)]
            [uuid(4606AA89-F563-4D0A-8F6E-F0CDDFF35D84)]
            interface IReverbEffectDefinition : IInspectable
                requires
                    Windows.Media.Effects.IAudioEffectDefinition
            {
                [propput] HRESULT WetDryMix([in] DOUBLE value);
                [propget] HRESULT WetDryMix([out] [retval] DOUBLE* value);
                [propput] HRESULT ReflectionsDelay([in] UINT32 value);
                [propget] HRESULT ReflectionsDelay([out] [retval] UINT32* value);
                [propput] HRESULT ReverbDelay([in] BYTE value);
                [propget] HRESULT ReverbDelay([out] [retval] BYTE* value);
                [propput] HRESULT RearDelay([in] BYTE value);
                [propget] HRESULT RearDelay([out] [retval] BYTE* value);
                [propput] HRESULT PositionLeft([in] BYTE value);
                [propget] HRESULT PositionLeft([out] [retval] BYTE* value);
                [propput] HRESULT PositionRight([in] BYTE value);
                [propget] HRESULT PositionRight([out] [retval] BYTE* value);
                [propput] HRESULT PositionMatrixLeft([in] BYTE value);
                [propget] HRESULT PositionMatrixLeft([out] [retval] BYTE* value);
                [propput] HRESULT PositionMatrixRight([in] BYTE value);
                [propget] HRESULT PositionMatrixRight([out] [retval] BYTE* value);
                [propput] HRESULT EarlyDiffusion([in] BYTE value);
                [propget] HRESULT EarlyDiffusion([out] [retval] BYTE* value);
                [propput] HRESULT LateDiffusion([in] BYTE value);
                [propget] HRESULT LateDiffusion([out] [retval] BYTE* value);
                [propput] HRESULT LowEQGain([in] BYTE value);
                [propget] HRESULT LowEQGain([out] [retval] BYTE* value);
                [propput] HRESULT LowEQCutoff([in] BYTE value);
                [propget] HRESULT LowEQCutoff([out] [retval] BYTE* value);
                [propput] HRESULT HighEQGain([in] BYTE value);
                [propget] HRESULT HighEQGain([out] [retval] BYTE* value);
                [propput] HRESULT HighEQCutoff([in] BYTE value);
                [propget] HRESULT HighEQCutoff([out] [retval] BYTE* value);
                [propput] HRESULT RoomFilterFreq([in] DOUBLE value);
                [propget] HRESULT RoomFilterFreq([out] [retval] DOUBLE* value);
                [propput] HRESULT RoomFilterMain([in] DOUBLE value);
                [propget] HRESULT RoomFilterMain([out] [retval] DOUBLE* value);
                [propput] HRESULT RoomFilterHF([in] DOUBLE value);
                [propget] HRESULT RoomFilterHF([out] [retval] DOUBLE* value);
                [propput] HRESULT ReflectionsGain([in] DOUBLE value);
                [propget] HRESULT ReflectionsGain([out] [retval] DOUBLE* value);
                [propput] HRESULT ReverbGain([in] DOUBLE value);
                [propget] HRESULT ReverbGain([out] [retval] DOUBLE* value);
                [propput] HRESULT DecayTime([in] DOUBLE value);
                [propget] HRESULT DecayTime([out] [retval] DOUBLE* value);
                [propput] HRESULT Density([in] DOUBLE value);
                [propget] HRESULT Density([out] [retval] DOUBLE* value);
                [propput] HRESULT RoomSize([in] DOUBLE value);
                [propget] HRESULT RoomSize([out] [retval] DOUBLE* value);
                [propput] HRESULT DisableLateField([in] boolean value);
                [propget] HRESULT DisableLateField([out] [retval] boolean* value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Media.Audio.ReverbEffectDefinition)]
            [uuid(A7D5CBFE-100B-4FF0-9DA6-DC4E05A759F0)]
            interface IReverbEffectDefinitionFactory : IInspectable
            {
                HRESULT Create([in] Windows.Media.Audio.AudioGraph* audioGraph, [out] [retval] Windows.Media.Audio.ReverbEffectDefinition** value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            [threading(both)]
            runtimeclass AudioDeviceInputNode
            {
                [default] interface Windows.Media.Audio.IAudioDeviceInputNode;
                interface Windows.Media.Audio.IAudioInputNode;
                interface Windows.Media.Audio.IAudioNode;
                interface Windows.Foundation.IClosable;
                [contract(Windows.Foundation.UniversalApiContract, 3.0)] interface Windows.Media.Audio.IAudioInputNode2;
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            [threading(both)]
            runtimeclass AudioDeviceOutputNode
            {
                [default] interface Windows.Media.Audio.IAudioDeviceOutputNode;
                interface Windows.Media.Audio.IAudioNode;
                interface Windows.Foundation.IClosable;
                [contract(Windows.Foundation.UniversalApiContract, 3.0)] interface Windows.Media.Audio.IAudioNodeWithListener;
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            [threading(both)]
            runtimeclass AudioFileInputNode
            {
                [default] interface Windows.Media.Audio.IAudioFileInputNode;
                interface Windows.Media.Audio.IAudioInputNode;
                interface Windows.Media.Audio.IAudioNode;
                interface Windows.Foundation.IClosable;
                [contract(Windows.Foundation.UniversalApiContract, 3.0)] interface Windows.Media.Audio.IAudioInputNode2;
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            [threading(both)]
            runtimeclass AudioFileOutputNode
            {
                [default] interface Windows.Media.Audio.IAudioFileOutputNode;
                interface Windows.Media.Audio.IAudioNode;
                interface Windows.Foundation.IClosable;
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            [threading(both)]
            runtimeclass AudioFrameCompletedEventArgs
            {
                [default] interface Windows.Media.Audio.IAudioFrameCompletedEventArgs;
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            [threading(both)]
            runtimeclass AudioFrameInputNode
            {
                [default] interface Windows.Media.Audio.IAudioFrameInputNode;
                interface Windows.Media.Audio.IAudioInputNode;
                interface Windows.Media.Audio.IAudioNode;
                interface Windows.Foundation.IClosable;
                [contract(Windows.Foundation.UniversalApiContract, 3.0)] interface Windows.Media.Audio.IAudioInputNode2;
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            [threading(both)]
            runtimeclass AudioFrameOutputNode
            {
                [default] interface Windows.Media.Audio.IAudioFrameOutputNode;
                interface Windows.Media.Audio.IAudioNode;
                interface Windows.Foundation.IClosable;
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            [static(Windows.Media.Audio.IAudioGraphStatics, Windows.Foundation.UniversalApiContract, 1.0)]
            [threading(both)]
            runtimeclass AudioGraph
            {
                [default] interface Windows.Media.Audio.IAudioGraph;
                interface Windows.Foundation.IClosable;
                [contract(Windows.Foundation.UniversalApiContract, 3.0)] interface Windows.Media.Audio.IAudioGraph2;
            }

            [contract(Windows.Foundation.UniversalApiContract, 3.0)]
            [marshaling_behavior(agile)]
            [threading(both)]
            runtimeclass AudioGraphBatchUpdater
            {
                [default] interface Windows.Foundation.IClosable;
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            [threading(both)]
            runtimeclass AudioGraphConnection
            {
                [default] interface Windows.Media.Audio.IAudioGraphConnection;
            }

            [activatable(Windows.Media.Audio.IAudioGraphSettingsFactory, Windows.Foundation.UniversalApiContract, 1.0)]
            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            [threading(both)]
            runtimeclass AudioGraphSettings
            {
                [default] interface Windows.Media.Audio.IAudioGraphSettings;
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            [threading(both)]
            runtimeclass AudioGraphUnrecoverableErrorOccurredEventArgs
            {
                [default] interface Windows.Media.Audio.IAudioGraphUnrecoverableErrorOccurredEventArgs;
            }

            [activatable(Windows.Foundation.UniversalApiContract, 3.0)]
            [activatable(Windows.Media.Audio.IAudioNodeEmitterFactory, Windows.Foundation.UniversalApiContract, 3.0)]
            [contract(Windows.Foundation.UniversalApiContract, 3.0)]
            [marshaling_behavior(agile)]
            [threading(both)]
            runtimeclass AudioNodeEmitter
            {
                [default] interface Windows.Media.Audio.IAudioNodeEmitter;
                interface Windows.Media.Audio.IAudioNodeEmitter2;
            }

            [contract(Windows.Foundation.UniversalApiContract, 3.0)]
            [marshaling_behavior(agile)]
            [threading(both)]
            runtimeclass AudioNodeEmitterConeProperties
            {
                [default] interface Windows.Media.Audio.IAudioNodeEmitterConeProperties;
            }

            [contract(Windows.Foundation.UniversalApiContract, 3.0)]
            [marshaling_behavior(agile)]
            [static(Windows.Media.Audio.IAudioNodeEmitterDecayModelStatics, Windows.Foundation.UniversalApiContract, 3.0)]
            [threading(both)]
            runtimeclass AudioNodeEmitterDecayModel
            {
                [default] interface Windows.Media.Audio.IAudioNodeEmitterDecayModel;
            }

            [contract(Windows.Foundation.UniversalApiContract, 3.0)]
            [marshaling_behavior(agile)]
            [threading(both)]
            runtimeclass AudioNodeEmitterNaturalDecayModelProperties
            {
                [default] interface Windows.Media.Audio.IAudioNodeEmitterNaturalDecayModelProperties;
            }

            [contract(Windows.Foundation.UniversalApiContract, 3.0)]
            [marshaling_behavior(agile)]
            [static(Windows.Media.Audio.IAudioNodeEmitterShapeStatics, Windows.Foundation.UniversalApiContract, 3.0)]
            [threading(both)]
            runtimeclass AudioNodeEmitterShape
            {
                [default] interface Windows.Media.Audio.IAudioNodeEmitterShape;
            }

            [activatable(Windows.Foundation.UniversalApiContract, 3.0)]
            [contract(Windows.Foundation.UniversalApiContract, 3.0)]
            [marshaling_behavior(agile)]
            [threading(both)]
            runtimeclass AudioNodeListener
            {
                [default] interface Windows.Media.Audio.IAudioNodeListener;
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            [threading(both)]
            runtimeclass AudioSubmixNode
            {
                [default] interface Windows.Media.Audio.IAudioInputNode;
                interface Windows.Media.Audio.IAudioNode;
                interface Windows.Foundation.IClosable;
                [contract(Windows.Foundation.UniversalApiContract, 3.0)] interface Windows.Media.Audio.IAudioInputNode2;
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            [threading(both)]
            runtimeclass CreateAudioDeviceInputNodeResult
            {
                [default] interface Windows.Media.Audio.ICreateAudioDeviceInputNodeResult;
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            [threading(both)]
            runtimeclass CreateAudioDeviceOutputNodeResult
            {
                [default] interface Windows.Media.Audio.ICreateAudioDeviceOutputNodeResult;
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            [threading(both)]
            runtimeclass CreateAudioFileInputNodeResult
            {
                [default] interface Windows.Media.Audio.ICreateAudioFileInputNodeResult;
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            [threading(both)]
            runtimeclass CreateAudioFileOutputNodeResult
            {
                [default] interface Windows.Media.Audio.ICreateAudioFileOutputNodeResult;
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            [threading(both)]
            runtimeclass CreateAudioGraphResult
            {
                [default] interface Windows.Media.Audio.ICreateAudioGraphResult;
            }

            [activatable(Windows.Media.Audio.IEchoEffectDefinitionFactory, Windows.Foundation.UniversalApiContract, 1.0)]
            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            [threading(both)]
            runtimeclass EchoEffectDefinition
            {
                [default] interface Windows.Media.Audio.IEchoEffectDefinition;
                interface Windows.Media.Effects.IAudioEffectDefinition;
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            [threading(both)]
            runtimeclass EqualizerBand
            {
                [default] interface Windows.Media.Audio.IEqualizerBand;
            }

            [activatable(Windows.Media.Audio.IEqualizerEffectDefinitionFactory, Windows.Foundation.UniversalApiContract, 1.0)]
            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            [threading(both)]
            runtimeclass EqualizerEffectDefinition
            {
                [default] interface Windows.Media.Audio.IEqualizerEffectDefinition;
                interface Windows.Media.Effects.IAudioEffectDefinition;
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            [threading(both)]
            runtimeclass FrameInputNodeQuantumStartedEventArgs
            {
                [default] interface Windows.Media.Audio.IFrameInputNodeQuantumStartedEventArgs;
            }

            [activatable(Windows.Media.Audio.ILimiterEffectDefinitionFactory, Windows.Foundation.UniversalApiContract, 1.0)]
            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            [threading(both)]
            runtimeclass LimiterEffectDefinition
            {
                [default] interface Windows.Media.Audio.ILimiterEffectDefinition;
                interface Windows.Media.Effects.IAudioEffectDefinition;
            }

            [activatable(Windows.Media.Audio.IReverbEffectDefinitionFactory, Windows.Foundation.UniversalApiContract, 1.0)]
            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            [threading(both)]
            runtimeclass ReverbEffectDefinition
            {
                [default] interface Windows.Media.Audio.IReverbEffectDefinition;
                interface Windows.Media.Effects.IAudioEffectDefinition;
            }
        }
    }
}
