The <seecref="A:SharpDX.XAudio2"/> assembly provides managed <seecref="N:SharpDX.XAudio2"/> and <seecref="N:SharpDX.X3DAudio"/> APIs.
</summary>
<msdn-id>hh405049</msdn-id>
<unmanaged>XAudio2</unmanaged>
<unmanaged-short>XAudio2</unmanaged-short>
</member>
<membername="T:SharpDX.XAudio2.EffectDescriptor">
<summary>
Contains information about anXAPOfor use in an effect chain.
</summary>
<remarks>
<p>XAPO instances are passed to XAudio2 as <strong><seecref="T:SharpDX.ComObject"/></strong> interfaces and XAudio2 uses IXAPO::QueryInterface to acquire an <seecref="T:SharpDX.XAPO.AudioProcessor"/> interface and to detect whether the XAPO implements the <seecref="T:SharpDX.XAPO.ParameterProvider"/> interface.</p><p>For additional information on using XAPOs with XAudio2 see How to: Create an Effect Chain and How to: Use an XAPO in XAudio2.</p>
</remarks>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='XAUDIO2_EFFECT_DESCRIPTOR']/*"/>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='XAUDIO2_EFFECT_DESCRIPTOR::pEffect']/*"/>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='XAUDIO2_EFFECT_DESCRIPTOR::InitialState']/*"/>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='XAUDIO2_EFFECT_DESCRIPTOR::OutputChannels']/*"/>
<unmanaged>unsigned int OutputChannels</unmanaged>
<unmanaged-short>unsigned int OutputChannels</unmanaged-short>
Gets or sets the AudioProcessor. The AudioProcessor cannot be set more than one.
</summary>
<value>The effect.</value>
</member>
<membername="T:SharpDX.XAudio2.AudioBuffer">
<summary>
Represents an audio data buffer, used withIXAudio2SourceVoice::SubmitSourceBuffer.
</summary>
<remarks>
<p>XAudio2 audio data is interleaved, data from each channel is adjacent for a particular sample number. For example if there was a 4 channel wave playing into an XAudio2 source voice, the audio data would be a sample of channel 0, a sample of channel 1, a sample of channel 2, a sample of channel 3, and then the next sample of channels 0, 1, 2, 3, etc.</p><p>The <strong>AudioBytes</strong> and <strong>pAudioData</strong> members of <strong><seecref="T:SharpDX.XAudio2.AudioBuffer"/></strong> correspond to the size in bytes and contents of the 'data' RIFF chunk of the file being played. The contents of the chunk may need to be byte swapped when loading the file on Xbox 360.</p><p>Memory allocated to hold a <seecref="T:SharpDX.XAudio2.AudioBuffer"/> or <seecref="T:SharpDX.XAudio2.BufferWma"/> structure can be freed as soon as the <seecref="M:SharpDX.XAudio2.SourceVoice.SubmitSourceBuffer(SharpDX.XAudio2.AudioBuffer,System.IntPtr)"/> call it is passed to returns. The data the structure points to (<strong>pAudioData</strong> and <strong>pDecodedPacketCumulativeBytes</strong>, respectively) can't be freed until the buffer completes (as signaled by the <seecref="M:SharpDX.XAudio2.VoiceCallback.OnBufferEnd(System.IntPtr)"/> callback) or the voice is stopped or destroyed.</p>
</remarks>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='XAUDIO2_BUFFER']/*"/>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='XAUDIO2_BUFFER::Flags']/*"/>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='XAUDIO2_BUFFER::AudioBytes']/*"/>
<unmanaged>unsigned int AudioBytes</unmanaged>
<unmanaged-short>unsigned int AudioBytes</unmanaged-short>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='XAUDIO2_BUFFER::pAudioData']/*"/>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='XAUDIO2_BUFFER::PlayBegin']/*"/>
<unmanaged>unsigned int PlayBegin</unmanaged>
<unmanaged-short>unsigned int PlayBegin</unmanaged-short>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='XAUDIO2_BUFFER::PlayLength']/*"/>
<unmanaged>unsigned int PlayLength</unmanaged>
<unmanaged-short>unsigned int PlayLength</unmanaged-short>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='XAUDIO2_BUFFER::LoopBegin']/*"/>
<unmanaged>unsigned int LoopBegin</unmanaged>
<unmanaged-short>unsigned int LoopBegin</unmanaged-short>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='XAUDIO2_BUFFER::LoopLength']/*"/>
<unmanaged>unsigned int LoopLength</unmanaged>
<unmanaged-short>unsigned int LoopLength</unmanaged-short>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='XAUDIO2_BUFFER::LoopCount']/*"/>
<unmanaged>unsigned int LoopCount</unmanaged>
<unmanaged-short>unsigned int LoopCount</unmanaged-short>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='XAUDIO2_BUFFER::pContext']/*"/>
The IXAudio2EngineCallback interface contains methods that notify the client when certain events happen in the <seecref="T:SharpDX.XAudio2.XAudio2"/> engine. This interface should be implemented by the XAudio2 client. XAudio2 calls these methods via an interface pointer provided by the client, using either the {{XAudio2Create}} or <seecref="M:SharpDX.XAudio2.XAudio2.Initialize(System.Int32,SharpDX.XAudio2.ProcessorSpecifier)"/> method. Methods in this interface return void, rather than an HRESULT.
The<strong><seecref="T:SharpDX.XAudio2.EngineCallback"/></strong>interface contains methods that notify the client when certain events happen in theIXAudio2engine. This interface should be implemented by the XAudio2 client. XAudio2 calls these methods via an interface reference provided by the client, using theXAudio2Createmethod. Methods in this interface return<strong>void</strong>, rather than an <seecref="T:SharpDX.Result"/>.<p>See XAudio2 Callbacks for restrictions on callback implementation.</p>
</summary>
<!-- Failed to insert some or all of included XML --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='IXAudio2EngineCallback']/*"/>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='XAUDIO2_BUFFER_FLAGS']/*"/>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='XAUDIO2_END_OF_STREAM']/*"/>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='']/*"/>
<p>Used in the <seecref="T:SharpDX.XAudio2.DeviceDetails"/> structure to describe the role assigned to the device by the user.</p>
</summary>
<remarks>
<p>The role represents the audio scenarios?such as voice communications or media playback?that use this device as the default device on which to play.</p>
</remarks>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='XAUDIO2_DEVICE_ROLE']/*"/>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='NotDefaultDevice']/*"/>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='DefaultConsoleDevice']/*"/>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='DefaultMultimediaDevice']/*"/>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='DefaultCommunicationsDevice']/*"/>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='DefaultGameDevice']/*"/>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='GlobalDefaultDevice']/*"/>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='InvalidDeviceRole']/*"/>
Indicates whether a filter is low pass, band pass, high pass, or notch.
</summary>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='XAUDIO2_FILTER_TYPE']/*"/>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='LowPassFilter']/*"/>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='BandPassFilter']/*"/>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='HighPassFilter']/*"/>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='NotchFilter']/*"/>
<unmanaged>NotchFilter</unmanaged>
<unmanaged-short>NotchFilter</unmanaged-short>
</member>
<membername="T:SharpDX.XAudio2.LogType">
<summary>
No documentation.
</summary>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='XAUDIO2_LOG_TYPE']/*"/>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='XAUDIO2_LOG_ERRORS']/*"/>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='XAUDIO2_LOG_WARNINGS']/*"/>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='XAUDIO2_LOG_INFO']/*"/>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='XAUDIO2_LOG_DETAIL']/*"/>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='XAUDIO2_LOG_API_CALLS']/*"/>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='XAUDIO2_LOG_FUNC_CALLS']/*"/>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='XAUDIO2_LOG_TIMING']/*"/>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='XAUDIO2_LOG_LOCKS']/*"/>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='XAUDIO2_LOG_MEMORY']/*"/>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='XAUDIO2_LOG_STREAMING']/*"/>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='XAUDIO2_PLAY_FLAGS']/*"/>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='XAUDIO2_PLAY_TAILS']/*"/>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='']/*"/>
Windows-specific enumerator for available processors.
</summary>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='XAUDIO2_WINDOWS_PROCESSOR_SPECIFIER']/*"/>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='Processor1']/*"/>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='Processor2']/*"/>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='Processor3']/*"/>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='Processor4']/*"/>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='Processor5']/*"/>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='Processor6']/*"/>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='Processor7']/*"/>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='Processor8']/*"/>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='Processor9']/*"/>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='Processor10']/*"/>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='Processor11']/*"/>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='Processor12']/*"/>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='Processor13']/*"/>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='Processor14']/*"/>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='Processor15']/*"/>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='Processor16']/*"/>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='Processor17']/*"/>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='Processor18']/*"/>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='Processor19']/*"/>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='Processor20']/*"/>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='Processor21']/*"/>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='Processor22']/*"/>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='Processor23']/*"/>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='Processor24']/*"/>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='Processor25']/*"/>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='Processor26']/*"/>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='Processor27']/*"/>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='Processor28']/*"/>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='Processor29']/*"/>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='Processor30']/*"/>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='Processor31']/*"/>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='Processor32']/*"/>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='XAUDIO2_ANY_PROCESSOR']/*"/>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='XAUDIO2_DEFAULT_PROCESSOR']/*"/>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='XAUDIO2_VOICE_FLAGS']/*"/>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='XAUDIO2_VOICE_NOPITCH']/*"/>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='XAUDIO2_VOICE_NOSRC']/*"/>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='XAUDIO2_VOICE_MUSIC']/*"/>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='']/*"/>
<unmanaged>None</unmanaged>
<unmanaged-short>None</unmanaged-short>
</member>
<membername="T:SharpDX.XAudio2.VoiceSendFlags">
<summary>
No documentation.
</summary>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='XAUDIO2_VOICE_SEND_FLAGS']/*"/>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='XAUDIO2_VOICE_USEFILTER']/*"/>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='']/*"/>
<unmanaged>None</unmanaged>
<unmanaged-short>None</unmanaged-short>
</member>
<membername="T:SharpDX.XAudio2.XAudio2Flags">
<summary>
No documentation.
</summary>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='XAUDIO2_FLAGS']/*"/>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='XAUDIO2_DEBUG_ENGINE']/*"/>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='']/*"/>
<unmanaged>None</unmanaged>
<unmanaged-short>None</unmanaged-short>
</member>
<membername="T:SharpDX.XAudio2.XAudio2Functions">
<summary>
Functions
</summary>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='SharpDX.XAudio2.XAudio2Functions']/*"/>
Describes I3DL2 (Interactive 3D Audio Rendering Guidelines Level 2.0) parameters for use in theReverbConvertI3DL2ToNativefunction.
</summary>
<remarks>
<p>There are many preset values defined for the <strong><seecref="T:SharpDX.XAudio2.Fx.ReverbI3DL2Parameters"/></strong> structure. For more information, see XAUDIO2FX_I3DL2_PRESET.</p>
</remarks>
<!-- No matching elements were found for the following include tag --><includefile="..\..\Documentation\CodeComments.xml"path="/comments/comment[@id='XAUDIO2FX_REVERB_I3DL2_PARAMETERS']/*"/>
<!-- No matching elements were found for the following include tag --><includefile="..\..\Documentation\CodeComments.xml"path="/comments/comment[@id='XAUDIO2FX_REVERB_I3DL2_PARAMETERS::WetDryMix']/*"/>
<!-- No matching elements were found for the following include tag --><includefile="..\..\Documentation\CodeComments.xml"path="/comments/comment[@id='XAUDIO2FX_REVERB_I3DL2_PARAMETERS::Room']/*"/>
<!-- No matching elements were found for the following include tag --><includefile="..\..\Documentation\CodeComments.xml"path="/comments/comment[@id='XAUDIO2FX_REVERB_I3DL2_PARAMETERS::RoomHF']/*"/>
<!-- No matching elements were found for the following include tag --><includefile="..\..\Documentation\CodeComments.xml"path="/comments/comment[@id='XAUDIO2FX_REVERB_I3DL2_PARAMETERS::RoomRolloffFactor']/*"/>
<!-- No matching elements were found for the following include tag --><includefile="..\..\Documentation\CodeComments.xml"path="/comments/comment[@id='XAUDIO2FX_REVERB_I3DL2_PARAMETERS::DecayTime']/*"/>
<!-- No matching elements were found for the following include tag --><includefile="..\..\Documentation\CodeComments.xml"path="/comments/comment[@id='XAUDIO2FX_REVERB_I3DL2_PARAMETERS::DecayHFRatio']/*"/>
<!-- No matching elements were found for the following include tag --><includefile="..\..\Documentation\CodeComments.xml"path="/comments/comment[@id='XAUDIO2FX_REVERB_I3DL2_PARAMETERS::Reflections']/*"/>
<!-- No matching elements were found for the following include tag --><includefile="..\..\Documentation\CodeComments.xml"path="/comments/comment[@id='XAUDIO2FX_REVERB_I3DL2_PARAMETERS::ReflectionsDelay']/*"/>
<!-- No matching elements were found for the following include tag --><includefile="..\..\Documentation\CodeComments.xml"path="/comments/comment[@id='XAUDIO2FX_REVERB_I3DL2_PARAMETERS::Reverb']/*"/>
<!-- No matching elements were found for the following include tag --><includefile="..\..\Documentation\CodeComments.xml"path="/comments/comment[@id='XAUDIO2FX_REVERB_I3DL2_PARAMETERS::ReverbDelay']/*"/>
<!-- No matching elements were found for the following include tag --><includefile="..\..\Documentation\CodeComments.xml"path="/comments/comment[@id='XAUDIO2FX_REVERB_I3DL2_PARAMETERS::Diffusion']/*"/>
<!-- No matching elements were found for the following include tag --><includefile="..\..\Documentation\CodeComments.xml"path="/comments/comment[@id='XAUDIO2FX_REVERB_I3DL2_PARAMETERS::Density']/*"/>
<!-- No matching elements were found for the following include tag --><includefile="..\..\Documentation\CodeComments.xml"path="/comments/comment[@id='XAUDIO2FX_REVERB_I3DL2_PARAMETERS::HFReference']/*"/>
<p>All parameters related to sampling rate or time are relative to a 48kHz voice and must be scaled for use with other sampling rates. For example, setting <strong>ReflectionsDelay</strong> to 300ms gives a true 300ms delay when the reverb is hosted in a 48kHz voice, but becomes a 150ms delay when hosted in a 24kHz voice.</p>
</remarks>
<!-- No matching elements were found for the following include tag --><includefile="..\..\Documentation\CodeComments.xml"path="/comments/comment[@id='XAUDIO2FX_REVERB_PARAMETERS']/*"/>
<dd> Percentage of the output that will be reverb. Allowable values are from 0 to 100. </dd>
</summary>
<!-- No matching elements were found for the following include tag --><includefile="..\..\Documentation\CodeComments.xml"path="/comments/comment[@id='XAUDIO2FX_REVERB_PARAMETERS::WetDryMix']/*"/>
<dd> The delay time of the first reflection relative to the direct path. Permitted range is from 0 to 300 milliseconds. <table><tr><th>Note </th></tr><tr><td>All parameters related to sampling rate or time are relative to a 48kHz sampling rate and must be scaled for use with other sampling rates. See remarks section below for additional information.</td></tr></table></dd>
</summary>
<!-- No matching elements were found for the following include tag --><includefile="..\..\Documentation\CodeComments.xml"path="/comments/comment[@id='XAUDIO2FX_REVERB_PARAMETERS::ReflectionsDelay']/*"/>
<msdn-id>ee419224</msdn-id>
<unmanaged>unsigned int ReflectionsDelay</unmanaged>
<unmanaged-short>unsigned int ReflectionsDelay</unmanaged-short>
<dd> Delay of reverb relative to the first reflection. Permitted range is from 0 to 85 milliseconds. <table><tr><th>Note </th></tr><tr><td>All parameters related to sampling rate or time are relative to a 48kHz sampling rate and must be scaled for use with other sampling rates. See remarks section below for additional information.</td></tr></table></dd>
</summary>
<!-- No matching elements were found for the following include tag --><includefile="..\..\Documentation\CodeComments.xml"path="/comments/comment[@id='XAUDIO2FX_REVERB_PARAMETERS::ReverbDelay']/*"/>
<dd> Delay for the left rear output and right rear output. Permitted range is from 0 to 5 milliseconds. <table><tr><th>Note </th></tr><tr><td>All parameters related to sampling rate or time are relative to a 48kHz sampling rate and must be scaled for use with other sampling rates. See remarks section below for additional information.</td></tr></table></dd>
</summary>
<!-- No matching elements were found for the following include tag --><includefile="..\..\Documentation\CodeComments.xml"path="/comments/comment[@id='XAUDIO2FX_REVERB_PARAMETERS::RearDelay']/*"/>
<dd> Position of the left input within the simulated space relative to the listener. With <strong>PositionLeft</strong> set to the minimum value, the left input is placed close to the listener. In this position, early reflections are dominant, and the reverb decay is set back in the sound field and reduced in amplitude. With <strong>PositionLeft</strong> set to the maximum value, the left input is placed at a maximum distance from the listener within the simulated room. <strong>PositionLeft</strong> does not affect the reverb decay time (liveness of the room), only the apparent position of the source relative to the listener. Permitted range is from 0 to 30 (no units). </dd>
</summary>
<!-- No matching elements were found for the following include tag --><includefile="..\..\Documentation\CodeComments.xml"path="/comments/comment[@id='XAUDIO2FX_REVERB_PARAMETERS::PositionLeft']/*"/>
<dd> Same as <strong>PositionLeft</strong>, but affecting only the right input. Permitted range is from 0 to 30 (no units). <table><tr><th>Note </th></tr><tr><td><strong>PositionRight</strong> is ignored in mono-in/mono-out mode.</td></tr></table></dd>
</summary>
<!-- No matching elements were found for the following include tag --><includefile="..\..\Documentation\CodeComments.xml"path="/comments/comment[@id='XAUDIO2FX_REVERB_PARAMETERS::PositionRight']/*"/>
<dd> Gives a greater or lesser impression of distance from the source to the listener. Permitted range is from 0 to 30 (no units). </dd>
</summary>
<!-- No matching elements were found for the following include tag --><includefile="..\..\Documentation\CodeComments.xml"path="/comments/comment[@id='XAUDIO2FX_REVERB_PARAMETERS::PositionMatrixLeft']/*"/>
<dd> Gives a greater or lesser impression of distance from the source to the listener. Permitted range is from 0 to 30 (no units). <table><tr><th>Note </th></tr><tr><td><strong>PositionMatrixRight</strong> is ignored in mono-in/mono-out mode.</td></tr></table></dd>
</summary>
<!-- No matching elements were found for the following include tag --><includefile="..\..\Documentation\CodeComments.xml"path="/comments/comment[@id='XAUDIO2FX_REVERB_PARAMETERS::PositionMatrixRight']/*"/>
<dd> Controls the character of the individual wall reflections. Set to minimum value to simulate a hard flat surface and to maximum value to simulate a diffuse surface. Permitted range is from 0 to 15 (no units). </dd>
</summary>
<!-- No matching elements were found for the following include tag --><includefile="..\..\Documentation\CodeComments.xml"path="/comments/comment[@id='XAUDIO2FX_REVERB_PARAMETERS::EarlyDiffusion']/*"/>
<dd> Controls the character of the individual wall reverberations. Set to minimum value to simulate a hard flat surface and to maximum value to simulate a diffuse surface. Permitted range is from 0 to 15 (no units). </dd>
</summary>
<!-- No matching elements were found for the following include tag --><includefile="..\..\Documentation\CodeComments.xml"path="/comments/comment[@id='XAUDIO2FX_REVERB_PARAMETERS::LateDiffusion']/*"/>
<dd> Adjusts the decay time of low frequencies relative to the decay time at 1 kHz. The values correspond to dB of gain as follows: <table><tr><th>Value</th><td>0</td><td>1</td><td>2</td><td>3</td><td>4</td><td>5</td><td>6</td><td>7</td><td>8</td><td>9</td><td>10</td><td>11</td><td>12</td></tr><tr><th>Gain (dB)</th><td>-8</td><td>-7</td><td>-6</td><td>-5</td><td>-4</td><td>-3</td><td>-2</td><td>-1</td><td>0</td><td>+1</td><td>+2</td><td>+3</td><td>+4</td></tr></table><p>Note that a <strong>LowEQGain</strong> value of 8 results in the decay time of low frequencies being equal to the decay time at 1 kHz. Permitted range is from 0 to 12 (no units).</p></dd>
</summary>
<!-- No matching elements were found for the following include tag --><includefile="..\..\Documentation\CodeComments.xml"path="/comments/comment[@id='XAUDIO2FX_REVERB_PARAMETERS::LowEQGain']/*"/>
<dd> Sets the corner frequency of the low pass filter that is controlled by the <strong>LowEQGain</strong> parameter. The values correspond to frequency in Hz as follows: <table><tr><th>Value</th><td>0</td><td>1</td><td>2</td><td>3</td><td>4</td><td>5</td><td>6</td><td>7</td><td>8</td><td>9</td></tr><tr><th>Frequency (Hz)</th><td>50</td><td>100</td><td>150</td><td>200</td><td>250</td><td>300</td><td>350</td><td>400</td><td>450</td><td>500</td></tr></table><p>Permitted range is from 0 to 9 (no units).</p></dd>
</summary>
<!-- No matching elements were found for the following include tag --><includefile="..\..\Documentation\CodeComments.xml"path="/comments/comment[@id='XAUDIO2FX_REVERB_PARAMETERS::LowEQCutoff']/*"/>
<dd> Adjusts the decay time of high frequencies relative to the decay time at 1 kHz. When set to zero, high frequencies decay at the same rate as 1 kHz. When set to maximum value, high frequencies decay at a much faster rate than 1 kHz. <table><tr><th>Value</th><td>0</td><td>1</td><td>2</td><td>3</td><td>4</td><td>5</td><td>6</td><td>7</td><td>8</td></tr><tr><th>Gain (dB)</th><td>-8</td><td>-7</td><td>-6</td><td>-5</td><td>-4</td><td>-3</td><td>-2</td><td>-1</td><td>0</td></tr></table><p>Permitted range is from 0 to 8 (no units).</p></dd>
</summary>
<!-- No matching elements were found for the following include tag --><includefile="..\..\Documentation\CodeComments.xml"path="/comments/comment[@id='XAUDIO2FX_REVERB_PARAMETERS::HighEQGain']/*"/>
<dd> Sets the corner frequency of the high pass filter that is controlled by the <strong>HighEQGain</strong> parameter. The values correspond to frequency in kHz as follows: <table><tr><th>Value</th><td>0</td><td>1</td><td>2</td><td>3</td><td>4</td><td>5</td><td>6</td><td>7</td><td>8</td><td>9</td><td>10</td><td>11</td><td>12</td><td>13</td><td>14</td></tr><tr><th>Frequency (kHz)</th><td>1</td><td>1.5</td><td>2</td><td>2.5</td><td>3</td><td>3.5</td><td>4</td><td>4.5</td><td>5</td><td>5.5</td><td>6</td><td>6.5</td><td>7</td><td>7.5</td><td>8</td></tr></table><p>Permitted range is from 0 to 14 (no units).</p></dd>
</summary>
<!-- No matching elements were found for the following include tag --><includefile="..\..\Documentation\CodeComments.xml"path="/comments/comment[@id='XAUDIO2FX_REVERB_PARAMETERS::HighEQCutoff']/*"/>
<dd> Sets the corner frequency of the low pass filter for the room effect. Permitted range is from 20 to 20,000 Hz. <table><tr><th>Note </th></tr><tr><td>All parameters related to sampling rate or time are relative to a 48kHz sampling rate and must be scaled for use with other sampling rates. See remarks section below for additional information.</td></tr></table></dd>
</summary>
<!-- No matching elements were found for the following include tag --><includefile="..\..\Documentation\CodeComments.xml"path="/comments/comment[@id='XAUDIO2FX_REVERB_PARAMETERS::RoomFilterFreq']/*"/>
<dd> Sets the pass band intensity level of the low-pass filter for both the early reflections and the late field reverberation. Permitted range is from -100 to 0 dB. </dd>
</summary>
<!-- No matching elements were found for the following include tag --><includefile="..\..\Documentation\CodeComments.xml"path="/comments/comment[@id='XAUDIO2FX_REVERB_PARAMETERS::RoomFilterMain']/*"/>
<dd> Sets the intensity of the low-pass filter for both the early reflections and the late field reverberation at the corner frequency (<strong>RoomFilterFreq</strong>). Permitted range is from -100 to 0 dB. </dd>
</summary>
<!-- No matching elements were found for the following include tag --><includefile="..\..\Documentation\CodeComments.xml"path="/comments/comment[@id='XAUDIO2FX_REVERB_PARAMETERS::RoomFilterHF']/*"/>
<dd> Adjusts the intensity of the early reflections. Permitted range is from -100 to 20 dB. </dd>
</summary>
<!-- No matching elements were found for the following include tag --><includefile="..\..\Documentation\CodeComments.xml"path="/comments/comment[@id='XAUDIO2FX_REVERB_PARAMETERS::ReflectionsGain']/*"/>
<dd> Adjusts the intensity of the reverberations. Permitted range is from -100 to 20 dB. </dd>
</summary>
<!-- No matching elements were found for the following include tag --><includefile="..\..\Documentation\CodeComments.xml"path="/comments/comment[@id='XAUDIO2FX_REVERB_PARAMETERS::ReverbGain']/*"/>
<dd> Reverberation decay time at 1 kHz. This is the time that a full scale input signal decays by 60 dB. Permitted range is from 0.1 to infinity seconds. </dd>
</summary>
<!-- No matching elements were found for the following include tag --><includefile="..\..\Documentation\CodeComments.xml"path="/comments/comment[@id='XAUDIO2FX_REVERB_PARAMETERS::DecayTime']/*"/>
<dd> Controls the modal density in the late field reverberation. For colorless spaces, <strong>Density</strong> should be set to the maximum value (100). As <strong>Density</strong> is decreased, the sound becomes hollow (comb filtered). This is an effect that can be useful if you are trying to model a silo. Permitted range as a percentage is from 0 to 100. </dd>
</summary>
<!-- No matching elements were found for the following include tag --><includefile="..\..\Documentation\CodeComments.xml"path="/comments/comment[@id='XAUDIO2FX_REVERB_PARAMETERS::Density']/*"/>
<dd> The apparent size of the acoustic space. Permitted range is from 1 to 100 feet. </dd>
</summary>
<!-- No matching elements were found for the following include tag --><includefile="..\..\Documentation\CodeComments.xml"path="/comments/comment[@id='XAUDIO2FX_REVERB_PARAMETERS::RoomSize']/*"/>
Describes parameters for use with the volume meter APO.
</summary>
<remarks>
<p>This structure is used with the XAudio2 <seecref="M:SharpDX.XAudio2.Voice.GetEffectParameters(System.Int32,System.IntPtr,System.Int32)"/> method.</p><p><strong>pPeakLevels</strong> and <strong>pRMSLevels</strong> are not returned by <seecref="M:SharpDX.XAudio2.Voice.GetEffectParameters(System.Int32,System.IntPtr,System.Int32)"/>, the arrays are only filled out if they are present. If <strong>pPeakLevels</strong> and <strong>pRMSLevels</strong> are used they must be allocated by the application. The application is responsible for freeing the arrays when they are no longer needed.</p><p><strong>ChannelCount</strong> must be set by the application to match the number of channels in the voice the effect is applied to.</p>
</remarks>
<!-- No matching elements were found for the following include tag --><includefile="..\..\Documentation\CodeComments.xml"path="/comments/comment[@id='XAUDIO2FX_VOLUMEMETER_LEVELS']/*"/>
<dd> Array that will be filled with the maximum absolute level for each channel during a processing pass. The array must be at least <strong>ChannelCount</strong> ? sizeof(float) bytes. <strong>pPeakLevels</strong> may be <c>null</c> if <strong>pRMSLevels</strong> is not <c>null</c>. </dd>
</summary>
<!-- No matching elements were found for the following include tag --><includefile="..\..\Documentation\CodeComments.xml"path="/comments/comment[@id='XAUDIO2FX_VOLUMEMETER_LEVELS::pPeakLevels']/*"/>
<dd> Array that will be filled with root mean square level for each channel during a processing pass. The array must be at least <strong>ChannelCount</strong> ? sizeof(float) bytes. <strong>pRMSLevels</strong> may be <c>null</c> if <strong>pPeakLevels</strong> is not <c>null</c>. </dd>
</summary>
<!-- No matching elements were found for the following include tag --><includefile="..\..\Documentation\CodeComments.xml"path="/comments/comment[@id='XAUDIO2FX_VOLUMEMETER_LEVELS::pRMSLevels']/*"/>
<!-- No matching elements were found for the following include tag --><includefile="..\..\Documentation\CodeComments.xml"path="/comments/comment[@id='XAUDIO2FX_VOLUMEMETER_LEVELS::ChannelCount']/*"/>
<msdn-id>ee419225</msdn-id>
<unmanaged>unsigned int ChannelCount</unmanaged>
<unmanaged-short>unsigned int ChannelCount</unmanaged-short>
</member>
<membername="T:SharpDX.XAudio2.MasteringVoice">
<summary>
A mastering voice is used to represent the audio output device. Data buffers cannot be submitted directly to mastering voices, but data submitted to other types of voices must be directed to a mastering voice to be heard.<p><strong><seecref="T:SharpDX.XAudio2.MasteringVoice"/></strong> inherits directly from <seecref="T:SharpDX.XAudio2.Voice"/>, but does not implement methods specific to mastering voices. The interface type exists solely because some of the base class methods are implemented differently for mastering voices. Having a separate type for these voices helps client code to distinguish the different voice types and to benefit from C++ type safety.</p>
</summary>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='IXAudio2MasteringVoice']/*"/>
Sets the volume level of each channel of the final output for the voice. These channels are mapped to the input channels of a specified destination voice.
</summary>
<remarks>
<p>This method is valid only for source and submix voices, because mastering voices write directly to the device with no matrix mixing.</p><p>Volume levels are expressed as floating-point amplitude multipliers between -<seecref="F:SharpDX.XAudio2.XAudio2.MaximumVolumeLevel"/> and <seecref="F:SharpDX.XAudio2.XAudio2.MaximumVolumeLevel"/> (-224 to 224), with a maximum gain of 144.5 dB. A volume level of 1.0 means there is no attenuation or gain and 0 means silence. Negative levels can be used to invert the audio's phase. See XAudio2 Volume and Pitch Control for additional information on volume control.</p><p></p><p>The X3DAudio function <seecref="M:SharpDX.X3DAudio.X3DAudio.X3DAudioCalculate(SharpDX.X3DAudio.X3DAudioHandle@,SharpDX.X3DAudio.Listener,SharpDX.X3DAudio.Emitter,SharpDX.X3DAudio.CalculateFlags,SharpDX.X3DAudio.DspSettings)"/> can produce an output matrix for use with <strong>SetOutputMatrix</strong> based on a sound's position and a listener's position.</p><table><tr><th>Note </th></tr><tr><td><seecref="M:SharpDX.XAudio2.Voice.GetOutputMatrix(SharpDX.XAudio2.Voice,System.Int32,System.Int32,System.Single[])"/> always returns the levels most recently set by <seecref="M:SharpDX.XAudio2.Voice.SetOutputMatrix(SharpDX.XAudio2.Voice,System.Int32,System.Int32,System.Single[],System.Int32)"/>. However, they may not actually be in effect yet: they only take effect the next time the audio engine runs after the <seecref="M:SharpDX.XAudio2.Voice.SetOutputMatrix(SharpDX.XAudio2.Voice,System.Int32,System.Int32,System.Single[],System.Int32)"/> call (or after the corresponding <seecref="M:SharpDX.XAudio2.XAudio2.CommitChanges(System.Int32)"/> call, if <seecref="M:SharpDX.XAudio2.Voice.SetOutputMatrix(SharpDX.XAudio2.Voice,System.Int32,System.Int32,System.Single[],System.Int32)"/> was called with a deferred operation ID).</td></tr></table>
</remarks>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='IXAudio2Voice']/*"/>
Performs an explicit conversion from <seecref="T:System.IntPtr"/> to <seecref="T:SharpDX.XAudio2.Voice"/>. (This method is a shortcut to <seecref="P:SharpDX.CppObject.NativePointer"/>)
Returns information about the creation flags, input channels, and sample rate of a voice.
</summary>
<paramname="voiceDetailsRef"><dd>[in, out] <seecref="T:SharpDX.XAudio2.VoiceDetails"/> structure containing information about the voice. </dd></param>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='IXAudio2Voice::GetVoiceDetails']/*"/>
Designates a new set of submix or mastering voices to receive the output of the voice.
</summary>
<paramname="sendListRef"><dd>[in] Array of <seecref="T:SharpDX.XAudio2.VoiceSendDescriptors"/> structure references to destination voices. If <em>pSendList</em> is <c>null</c>, the voice will send its output to the current mastering voice. To set the voice to not send its output anywhere set the <strong>OutputCount</strong> member of <seecref="T:SharpDX.XAudio2.VoiceSendDescriptors"/> to 0. All of the voices in a send list must have the same input sample rate, see XAudio2 Sample Rate Conversions for additional information. </dd></param>
<returns><p>Returns <seecref="F:SharpDX.Result.Ok"/> if successful, an error code otherwise. See XAudio2 Error Codes for descriptions of XAudio2 specific error codes.</p></returns>
<remarks>
<p>This method is only valid for source and submix voices. Mastering voices can not send audio to another voice.</p><p>After calling <strong>SetOutputVoices</strong> a voice's current send levels will be replaced by a default send matrix. The <seecref="M:SharpDX.XAudio2.Voice.SetOutputMatrix(SharpDX.XAudio2.Voice,System.Int32,System.Int32,System.Single[],System.Int32)"/> method must be called to set a custom matrix for the new sendlist.</p><p>It is illegal to call <strong>SetOutputVoices</strong> from within a callback. If <strong>SetOutputVoices</strong> is called within a callback XAUDIO2_E_INVALID_CALL will be returned.</p><table><tr><th>Note </th></tr><tr><td>Calling <strong>SetOutputVoices</strong> invalidates any send matrices previously set with <seecref="M:SharpDX.XAudio2.Voice.SetOutputMatrix(SharpDX.XAudio2.Voice,System.Int32,System.Int32,System.Single[],System.Int32)"/>.</td></tr></table>
</remarks>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='IXAudio2Voice::SetOutputVoices']/*"/>
<paramname="effectChainRef"><dd>[in, optional] Pointer to an <seecref="T:SharpDX.XAudio2.EffectChain"/> structure that describes the new effect chain to use. If <c>null</c> is passed, the current effect chain is removed. <table><tr><th>Note </th></tr><tr><td>If <em>pEffectChain</em> is non-<c>null</c>, the <seecref="T:SharpDX.XAudio2.EffectChain"/> structure that it points to must specify at least one effect.</td></tr></table></dd></param>
<returns><p> Returns <seecref="F:SharpDX.Result.Ok"/> if successful; otherwise, an error code. </p><p> See XAudio2 Error Codes for descriptions of XAudio2 specific error codes.</p></returns>
<remarks>
<p>The number of output channels allowed for a voice's effect chain is locked at creation of the voice. If you create the voice with an effect chain, any new effect chain passed to <strong>SetEffectChain</strong> must have the same number of input and output channels as the original effect chain. If you create the voice without an effect chain, the number of output channels allowed for the effect chain will default to the number of input channels for the voice. If any part of effect chain creation fails, none of it is applied.</p><p>After you attach an effect to an XAudio2 voice, XAudio2 takes control of the effect, and the client should not make any further calls to it. The simplest way to ensure this is to release all references to the effect.</p><p>It is illegal to call <strong>SetEffectChain</strong> from within a callback. If you call <strong>SetEffectChain</strong> within a callback, XAUDIO2_E_INVALID_CALL is returned.</p><p>The <seecref="T:SharpDX.XAudio2.EffectChain"/> that is passed in as the <em>pEffectChain</em> argument and any <seecref="T:SharpDX.XAudio2.EffectDescriptor"/> information contained within it are no longer needed after <strong>SetEffectChain</strong> successfully completes, and may be deleted immediately after <strong>SetEffectChain</strong> is called.</p>
</remarks>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='IXAudio2Voice::SetEffectChain']/*"/>
Enables the effect at a given position in the effect chain of the voice.
</summary>
<paramname="effectIndex"><dd>[in] Zero-based index of an effect in the effect chain of the voice. </dd></param>
<paramname="operationSet"><dd>[in] Identifies this call as part of a deferred batch. See the XAudio2 Operation Sets overview for more information. </dd></param>
<returns><p>Returns <seecref="F:SharpDX.Result.Ok"/> if successful; otherwise, an error code. See XAudio2 Error Codes for descriptions of error codes.</p></returns>
<remarks>
<p>Be careful when you enable an effect while the voice that hosts it is running. Such an action can result in a problem if the effect significantly changes the audio's pitch or volume.</p><p> The effects in a given XAudio2 voice's effect chain must consume and produce audio at that voice's processing sample rate. The only aspect of the audio format they can change is the channel count. For example a reverb effect can convert mono data to 5.1. The client can use the <seecref="T:SharpDX.XAudio2.EffectDescriptor"/> structure's <strong>OutputChannels</strong> field to specify the number of channels it wants each effect to produce. Each effect in an effect chain must produce a number of channels that the next effect can consume. Any calls to <seecref="M:SharpDX.XAudio2.Voice.EnableEffect(System.Int32,System.Int32)"/> or <seecref="M:SharpDX.XAudio2.Voice.DisableEffect(System.Int32,System.Int32)"/> that would make the effect chain stop fulfilling these requirements will fail.</p><p><strong>EnableEffect</strong> takes effect immediately when you call it from an XAudio2 callback with an <em>OperationSet</em> of <strong><seecref="F:SharpDX.XAudio2.XAudio2.CommitNow"/></strong>.</p>
</remarks>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='IXAudio2Voice::EnableEffect']/*"/>
Disables the effect at a given position in the effect chain of the voice.
</summary>
<paramname="effectIndex"><dd>[in] Zero-based index of an effect in the effect chain of the voice. </dd></param>
<paramname="operationSet"><dd>[in] Identifies this call as part of a deferred batch. See the XAudio2 Operation Sets overview for more information. </dd></param>
<returns><p>Returns <seecref="F:SharpDX.Result.Ok"/> if successful; otherwise, an error code. See XAudio2 Error Codes for descriptions of valid error codes.</p></returns>
<remarks>
<p>The effects in a given XAudio2 voice's effect chain must consume and produce audio at that voice's processing sample rate. The only aspect of the audio format they can change is the channel count. For example a reverb effect can convert mono data to 5.1. The client can use the <seecref="T:SharpDX.XAudio2.EffectDescriptor"/> structure's <strong>OutputChannels</strong> field to specify the number of channels it wants each effect to produce. Each effect in an effect chain must produce a number of channels that the next effect can consume. Any calls to <seecref="M:SharpDX.XAudio2.Voice.EnableEffect(System.Int32,System.Int32)"/> or <seecref="M:SharpDX.XAudio2.Voice.DisableEffect(System.Int32,System.Int32)"/> that would make the effect chain stop fulfilling these requirements will fail.</p><p>Disabling an effect immediately removes it from the processing graph. Any pending audio in the effect?such as a reverb tail?is not played. Be careful disabling an effect while the voice that hosts it is running. This can result in an audible artifact if the effect significantly changes the audio's pitch or volume.</p><p><strong>DisableEffect</strong> takes effect immediately when called from an XAudio2 callback with an <em>OperationSet</em> of <strong><seecref="F:SharpDX.XAudio2.XAudio2.CommitNow"/></strong>.</p>
</remarks>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='IXAudio2Voice::DisableEffect']/*"/>
Returns the running state of the effect at a specified position in the effect chain of the voice.
</summary>
<paramname="effectIndex"><dd>[in] Zero-based index of an effect in the effect chain of the voice. </dd></param>
<remarks>
<p><strong>GetEffectState</strong> always returns the effect's actual current state. However, this may not be the state set by the most recent <seecref="M:SharpDX.XAudio2.Voice.EnableEffect(System.Int32,System.Int32)"/> or <seecref="M:SharpDX.XAudio2.Voice.DisableEffect(System.Int32,System.Int32)"/> call: the actual state is only changed the next time the audio engine runs after the <seecref="M:SharpDX.XAudio2.Voice.EnableEffect(System.Int32,System.Int32)"/> or <seecref="M:SharpDX.XAudio2.Voice.DisableEffect(System.Int32,System.Int32)"/> call (or after the corresponding <seecref="M:SharpDX.XAudio2.XAudio2.CommitChanges(System.Int32)"/> call, if EnableEffect/DisableEffect was called with a deferred operation ID).</p>
</remarks>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='IXAudio2Voice::GetEffectState']/*"/>
Sets parameters for a given effect in the voice's effect chain.
</summary>
<paramname="effectIndex"><dd>[in] Zero-based index of an effect within the voice's effect chain. </dd></param>
<paramname="parametersRef"><dd>[in] Returns the current values of the effect-specific parameters. </dd></param>
<paramname="parametersByteSize"><dd>[in] Size of the <em>pParameters</em> array in bytes. </dd></param>
<paramname="operationSet"><dd>[in] Identifies this call as part of a deferred batch. See the XAudio2 Operation Sets overview for more information. </dd></param>
<returns><p>Returns <seecref="F:SharpDX.Result.Ok"/> if successful; otherwise, an error code. See XAudio2 Error Codes for descriptions of error codes.</p><p>Fails with E_NOTIMPL if the effect does not support a generic parameter control interface.</p></returns>
<remarks>
<p>The specific effect being used determines the valid size and format of the <em>pParameters</em> buffer. The call will fail if <em>pParameters</em> is invalid or if <em>ParametersByteSize</em> is not exactly the size that the effect expects. The client must take care to direct the <strong>SetEffectParameters</strong> call to the right effect. If this call is directed to a different effect that happens to accept the same parameter block size, the parameters will be interpreted differently. This may lead to unexpected results.</p><p>The memory pointed to by <em>pParameters</em> must <em>not</em> be freed immediately, because XAudio2 will need to refer to it later when the parameters actually are applied to the effect. This happens during the next audio processing pass if the <em>OperationSet</em> argument is <strong><seecref="F:SharpDX.XAudio2.XAudio2.CommitNow"/></strong>. Otherwise, the parameters are applied to the effect later, during the first processing pass after the <seecref="M:SharpDX.XAudio2.XAudio2.CommitChanges(System.Int32)"/> function is called with the same <em>OperationSet</em> argument.</p><p><strong>SetEffectParameters</strong> takes effect immediately when called from an XAudio2 callback with an <em>OperationSet</em> of <strong><seecref="F:SharpDX.XAudio2.XAudio2.CommitNow"/></strong>.</p><table><tr><th>Note </th></tr><tr><td><seecref="M:SharpDX.XAudio2.Voice.GetEffectParameters(System.Int32,System.IntPtr,System.Int32)"/> always returns the effect's actual current parameters. However, these may not match the parameters set by the most recent call to <seecref="M:SharpDX.XAudio2.Voice.SetEffectParameters(System.Int32,System.IntPtr,System.Int32,System.Int32)"/>. The actual parameters are only changed the next time the audio engine runs after the <seecref="M:SharpDX.XAudio2.Voice.SetEffectParameters(System.Int32,System.IntPtr,System.Int32,System.Int32)"/> call (or after the corresponding <seecref="M:SharpDX.XAudio2.XAudio2.CommitChanges(System.Int32)"/> call, if <seecref="M:SharpDX.XAudio2.Voice.SetEffectParameters(System.Int32,System.IntPtr,System.Int32,System.Int32)"/> was called with a deferred operation ID).</td></tr></table>
</remarks>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='IXAudio2Voice::SetEffectParameters']/*"/>
<unmanaged>HRESULT IXAudio2Voice::SetEffectParameters([In] unsigned int EffectIndex,[In, Buffer] const void* pParameters,[In] unsigned int ParametersByteSize,[In] unsigned int OperationSet)</unmanaged>
Returns the current effect-specific parameters of a given effect in the voice's effect chain.
</summary>
<paramname="effectIndex"><dd>[in] Zero-based index of an effect within the voice's effect chain. </dd></param>
<paramname="parametersRef"><dd>[out] Returns the current values of the effect-specific parameters. </dd></param>
<paramname="parametersByteSize"><dd>[out] Size, in bytes, of the <em>pParameters</em> array. </dd></param>
<returns><p>Returns <seecref="F:SharpDX.Result.Ok"/> if successful, an error code otherwise. See XAudio2 Error Codes for descriptions of error codes.</p><p>Fails with E_NOTIMPL if the effect does not support a generic parameter control interface.</p></returns>
<remarks>
<p><strong>GetEffectParameters</strong> always returns the effect's actual current parameters. However, these may not match the parameters set by the most recent call to IXAudio2Voice::SetEffectParameters: the actual parameters are only changed the next time the audio engine runs after the <seecref="M:SharpDX.XAudio2.Voice.SetEffectParameters(System.Int32,System.IntPtr,System.Int32,System.Int32)"/> call (or after the corresponding <seecref="M:SharpDX.XAudio2.XAudio2.CommitChanges(System.Int32)"/> call, if <seecref="M:SharpDX.XAudio2.Voice.SetEffectParameters(System.Int32,System.IntPtr,System.Int32,System.Int32)"/> was called with a deferred operation ID).</p>
</remarks>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='IXAudio2Voice::GetEffectParameters']/*"/>
<paramname="parametersRef"><dd>[in] Pointer to an <seecref="T:SharpDX.XAudio2.FilterParameters"/> structure containing the filter information. </dd></param>
<paramname="operationSet"><dd>[in] Identifies this call as part of a deferred batch. See the XAudio2 Operation Sets overview for more information. </dd></param>
<returns><p>Returns <seecref="F:SharpDX.Result.Ok"/> if successful, an error code otherwise. See XAudio2 Error Codes for descriptions of error codes. </p></returns>
<remarks>
<p><strong>SetFilterParameters</strong> will fail if the voice was not created with the <seecref="F:SharpDX.XAudio2.VoiceSendFlags.UseFilter"/> flag.</p><p>This method is usable only on source and submix voices and has no effect on mastering voices.</p><table><tr><th>Note </th></tr><tr><td><seecref="M:SharpDX.XAudio2.Voice.GetFilterParameters(SharpDX.XAudio2.FilterParameters@)"/> always returns this voice's actual current filter parameters. However, these may not match the parameters set by the most recent <seecref="M:SharpDX.XAudio2.Voice.SetFilterParameters(SharpDX.XAudio2.FilterParameters,System.Int32)"/> call: the actual parameters are only changed the next time the audio engine runs after the <seecref="M:SharpDX.XAudio2.Voice.SetFilterParameters(SharpDX.XAudio2.FilterParameters,System.Int32)"/> call (or after the corresponding <seecref="M:SharpDX.XAudio2.XAudio2.CommitChanges(System.Int32)"/> call, if <seecref="M:SharpDX.XAudio2.Voice.SetFilterParameters(SharpDX.XAudio2.FilterParameters,System.Int32)"/> was called with a deferred operation ID).</td></tr></table>
</remarks>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='IXAudio2Voice::SetFilterParameters']/*"/>
<msdn-id>ee418596</msdn-id>
<unmanaged>HRESULT IXAudio2Voice::SetFilterParameters([In] const XAUDIO2_FILTER_PARAMETERS* pParameters,[In] unsigned int OperationSet)</unmanaged>
<paramname="parametersRef"><dd>[out] Pointer to an <seecref="T:SharpDX.XAudio2.FilterParameters"/> structure containing the filter information. </dd></param>
<remarks>
<p><strong>GetFilterParameters</strong> will fail if the voice was not created with the <seecref="F:SharpDX.XAudio2.VoiceSendFlags.UseFilter"/> flag.</p><p><strong>GetFilterParameters</strong> always returns this voice's actual current filter parameters. However, these may not match the parameters set by the most recent <seecref="M:SharpDX.XAudio2.Voice.SetFilterParameters(SharpDX.XAudio2.FilterParameters,System.Int32)"/> call: the actual parameters are only changed the next time the audio engine runs after the <seecref="M:SharpDX.XAudio2.Voice.SetFilterParameters(SharpDX.XAudio2.FilterParameters,System.Int32)"/> call (or after the corresponding <seecref="M:SharpDX.XAudio2.XAudio2.CommitChanges(System.Int32)"/> call, if <seecref="M:SharpDX.XAudio2.Voice.SetFilterParameters(SharpDX.XAudio2.FilterParameters,System.Int32)"/> was called with a deferred operation ID).</p><table><tr><th>Note </th></tr><tr><td><strong>GetFilterParameters</strong> is usable only on source and submix voices and has no effect on mastering voices.</td></tr></table>
</remarks>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='IXAudio2Voice::GetFilterParameters']/*"/>
Sets the filter parameters on one of this voice's sends.
</summary>
<paramname="destinationVoiceRef"><dd>[in] <seecref="T:SharpDX.XAudio2.Voice"/> reference to the destination voice of the send whose filter parameters will be set. </dd></param>
<paramname="parametersRef"><dd>[in] Pointer to an <seecref="T:SharpDX.XAudio2.FilterParameters"/> structure containing the filter information. </dd></param>
<paramname="operationSet"><dd>[in] Identifies this call as part of a deferred batch. See the XAudio2 Operation Sets overview for more information. </dd></param>
<returns><p>Returns <seecref="F:SharpDX.Result.Ok"/> if successful, an error code otherwise. See XAudio2 Error Codes for descriptions of error codes.</p></returns>
<remarks>
<p><strong>SetOutputFilterParameters</strong> will fail if the send was not created with the XAUDIO2_SEND_USEFILTER flag. This method is usable only on sends belonging to source and submix voices and has no effect on a mastering voice's sends.</p><table><tr><th>Note </th></tr><tr><td><seecref="M:SharpDX.XAudio2.Voice.GetOutputFilterParameters(SharpDX.XAudio2.Voice,SharpDX.XAudio2.FilterParameters@)"/> always returns this send?s actual current filter parameters. However, these may not match the parameters set by the most recent <seecref="M:SharpDX.XAudio2.Voice.SetOutputFilterParameters(SharpDX.XAudio2.Voice,SharpDX.XAudio2.FilterParameters,System.Int32)"/> call: the actual parameters are only changed the next time the audio engine runs after the <seecref="M:SharpDX.XAudio2.Voice.SetOutputFilterParameters(SharpDX.XAudio2.Voice,SharpDX.XAudio2.FilterParameters,System.Int32)"/> call (or after the corresponding <seecref="M:SharpDX.XAudio2.XAudio2.CommitChanges(System.Int32)"/> call, if <seecref="M:SharpDX.XAudio2.Voice.SetOutputFilterParameters(SharpDX.XAudio2.Voice,SharpDX.XAudio2.FilterParameters,System.Int32)"/> was called with a deferred operation ID).</td></tr></table>
</remarks>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='IXAudio2Voice::SetOutputFilterParameters']/*"/>
Returns the filter parameters from one of this voice's sends.
</summary>
<paramname="destinationVoiceRef"><dd>[in] <seecref="T:SharpDX.XAudio2.Voice"/> reference to the destination voice of the send whose filter parameters will be read. </dd></param>
<paramname="parametersRef"><dd>[out] Pointer to an <seecref="T:SharpDX.XAudio2.FilterParameters"/> structure containing the filter information. </dd></param>
<remarks>
<p><strong>GetOutputFilterParameters</strong> will fail if the send was not created with the XAUDIO2_SEND_USEFILTER flag. This method is usable only on sends belonging to source and submix voices and has no effect on mastering voices? sends.</p><table><tr><th>Note </th></tr><tr><td><seecref="M:SharpDX.XAudio2.Voice.GetOutputFilterParameters(SharpDX.XAudio2.Voice,SharpDX.XAudio2.FilterParameters@)"/> always returns this send?s actual current filter parameters. However, these may not match the parameters set by the most recent <seecref="M:SharpDX.XAudio2.Voice.SetOutputFilterParameters(SharpDX.XAudio2.Voice,SharpDX.XAudio2.FilterParameters,System.Int32)"/> call: the actual parameters are only changed the next time the audio engine runs after the <seecref="M:SharpDX.XAudio2.Voice.SetOutputFilterParameters(SharpDX.XAudio2.Voice,SharpDX.XAudio2.FilterParameters,System.Int32)"/> call (or after the corresponding <seecref="M:SharpDX.XAudio2.XAudio2.CommitChanges(System.Int32)"/> call, if <seecref="M:SharpDX.XAudio2.Voice.SetOutputFilterParameters(SharpDX.XAudio2.Voice,SharpDX.XAudio2.FilterParameters,System.Int32)"/> was called with a deferred operation ID).</td></tr></table>
</remarks>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='IXAudio2Voice::GetOutputFilterParameters']/*"/>
<paramname="volume"><dd>[in] Overall volume level to use. See Remarks for more information on volume levels. </dd></param>
<paramname="operationSet"><dd>[in] Identifies this call as part of a deferred batch. See the XAudio2 Operation Sets overview for more information. </dd></param>
<returns><p>Returns <seecref="F:SharpDX.Result.Ok"/> if successful, an error code otherwise. See XAudio2 Error Codes for descriptions of error codes.</p></returns>
<remarks>
<p><strong>SetVolume</strong> controls a voice's master input volume level. The master volume level is applied at different times depending on the type of voice. For submix and mastering voices the volume level is applied just before the voice's built in filter and effect chain is applied. For source voices the master volume level is applied after the voice's filter and effect chain is applied.</p><p>Volume levels are expressed as floating-point amplitude multipliers between -<seecref="F:SharpDX.XAudio2.XAudio2.MaximumVolumeLevel"/> and <seecref="F:SharpDX.XAudio2.XAudio2.MaximumVolumeLevel"/> (-224 to 224), with a maximum gain of 144.5 dB. A volume level of 1.0 means there is no attenuation or gain and 0 means silence. Negative levels can be used to invert the audio's phase. See XAudio2 Volume and Pitch Control for additional information on volume control.</p><table><tr><th>Note </th></tr><tr><td><seecref="M:SharpDX.XAudio2.Voice.GetVolume(System.Single@)"/> always returns the volume most recently set by <seecref="M:SharpDX.XAudio2.Voice.SetVolume(System.Single,System.Int32)"/>. However, it may not actually be in effect yet: it only takes effect the next time the audio engine runs after the <seecref="M:SharpDX.XAudio2.Voice.SetVolume(System.Single,System.Int32)"/> call (or after the corresponding <seecref="M:SharpDX.XAudio2.XAudio2.CommitChanges(System.Int32)"/> call, if <seecref="M:SharpDX.XAudio2.Voice.SetVolume(System.Single,System.Int32)"/> was called with a deferred operation ID).</td></tr></table>
</remarks>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='IXAudio2Voice::SetVolume']/*"/>
Gets the current overall volume level of the voice.
</summary>
<paramname="volumeRef"><dd>[out] Returns the current overall volume level of the voice. See Remarks for more information on volume levels. </dd></param>
<remarks>
<p>Volume levels are expressed as floating-point amplitude multipliers between -224 to 224, with a maximum gain of 144.5 dB. A volume level of 1 means there is no attenuation or gain and 0 means silence. Negative levels can be used to invert the audio's phase. See XAudio2 Volume and Pitch Control for additional information on volume control.</p><table><tr><th>Note </th></tr><tr><td><strong>GetVolume</strong> always returns the volume most recently set by <seecref="M:SharpDX.XAudio2.Voice.SetVolume(System.Single,System.Int32)"/>. However, it may not actually be in effect yet: it only takes effect the next time the audio engine runs after the <seecref="M:SharpDX.XAudio2.Voice.SetVolume(System.Single,System.Int32)"/> call (or after the corresponding <seecref="M:SharpDX.XAudio2.XAudio2.CommitChanges(System.Int32)"/> call, if <seecref="M:SharpDX.XAudio2.Voice.SetVolume(System.Single,System.Int32)"/> was called with a deferred operation ID).</td></tr></table>
</remarks>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='IXAudio2Voice::GetVolume']/*"/>
Sets the volume levels for the voice, per channel.
</summary>
<paramname="channels"><dd>[in] Number of channels in the voice. </dd></param>
<paramname="volumesRef"><dd>[in] Array containing the new volumes of each channel in the voice. The array must have <em>Channels</em> elements. See Remarks for more information on volume levels. </dd></param>
<paramname="operationSet"><dd>[in] Identifies this call as part of a deferred batch. See the XAudio2 Operation Sets overview for more information. </dd></param>
<returns><p>Returns <seecref="F:SharpDX.Result.Ok"/> if successful, an error code otherwise. See XAudio2 Error Codes for descriptions of XAudio2 specific error codes. </p></returns>
<remarks>
<p><strong>SetChannelVolumes</strong> controls a voice's per-channel output levels and is applied just after the voice's final SRC and before its sends.</p><p>This method is valid only for source and submix voices, because mastering voices do not specify volume per channel.</p><p>Volume levels are expressed as floating-point amplitude multipliers between -<seecref="F:SharpDX.XAudio2.XAudio2.MaximumVolumeLevel"/> and <seecref="F:SharpDX.XAudio2.XAudio2.MaximumVolumeLevel"/> (-224 to 224), with a maximum gain of 144.5 dB. A volume of 1 means there is no attenuation or gain and 0 means silence. Negative levels can be used to invert the audio's phase. See XAudio2 Volume and Pitch Control for additional information on volume control.</p><table><tr><th>Note </th></tr><tr><td><seecref="M:SharpDX.XAudio2.Voice.GetChannelVolumes(System.Int32,System.Single[])"/> always returns the volume levels most recently set by <seecref="M:SharpDX.XAudio2.Voice.SetChannelVolumes(System.Int32,System.Single[],System.Int32)"/>. However, those values may not actually be in effect yet: they only take effect the next time the audio engine runs after the <seecref="M:SharpDX.XAudio2.Voice.SetChannelVolumes(System.Int32,System.Single[],System.Int32)"/> call (or after the corresponding <seecref="M:SharpDX.XAudio2.XAudio2.CommitChanges(System.Int32)"/> call, if <seecref="M:SharpDX.XAudio2.Voice.SetChannelVolumes(System.Int32,System.Single[],System.Int32)"/> was called with a deferred operation ID). </td></tr></table>
</remarks>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='IXAudio2Voice::SetChannelVolumes']/*"/>
<msdn-id>ee418593</msdn-id>
<unmanaged>HRESULT IXAudio2Voice::SetChannelVolumes([In] unsigned int Channels,[In, Buffer] const float* pVolumes,[In] unsigned int OperationSet)</unmanaged>
Returns the volume levels for the voice, per channel.
</summary>
<paramname="channels"><dd>[in] Confirms the channel count of the voice. </dd></param>
<paramname="volumesRef"><dd>[out] Returns the current volume level of each channel in the voice. The array must have at least <em>Channels</em> elements. See Remarks for more information on volume levels. </dd></param>
<remarks>
<p>These settings are applied after the effect chain is applied. This method is valid only for source and submix voices, because mastering voices do not specify volume per channel.</p><p>Volume levels are expressed as floating-point amplitude multipliers between -224 to 224, with a maximum gain of 144.5 dB. A volume of 1 means there is no attenuation or gain, 0 means silence, and negative levels can be used to invert the audio's phase. See XAudio2 Volume and Pitch Control for additional information on volume control.</p><table><tr><th>Note </th></tr><tr><td><strong>GetChannelVolumes</strong> always returns the volume levels most recently set by <seecref="M:SharpDX.XAudio2.Voice.SetChannelVolumes(System.Int32,System.Single[],System.Int32)"/>. However, those values may not actually be in effect yet: they only take effect the next time the audio engine runs after the <seecref="M:SharpDX.XAudio2.Voice.SetChannelVolumes(System.Int32,System.Single[],System.Int32)"/> call (or after the corresponding <seecref="M:SharpDX.XAudio2.XAudio2.CommitChanges(System.Int32)"/> call, if <seecref="M:SharpDX.XAudio2.Voice.SetChannelVolumes(System.Int32,System.Single[],System.Int32)"/> was called with a deferred operation ID). </td></tr></table>
</remarks>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='IXAudio2Voice::GetChannelVolumes']/*"/>
<msdn-id>ee418585</msdn-id>
<unmanaged>void IXAudio2Voice::GetChannelVolumes([In] unsigned int Channels,[Out, Buffer] float* pVolumes)</unmanaged>
Sets the volume level of each channel of the final output for the voice. These channels are mapped to the input channels of a specified destination voice.
</summary>
<paramname="destinationVoiceRef"><dd>[in] Pointer to a destination <seecref="T:SharpDX.XAudio2.Voice"/> for which to set volume levels. <table><tr><th>Note </th></tr><tr><td>If the voice sends to a single target voice then specifying <c>null</c> will cause <strong>SetOutputMatrix</strong> to operate on that target voice.</td></tr></table></dd></param>
<paramname="sourceChannels"><dd>[in] Confirms the output channel count of the voice. This is the number of channels that are produced by the last effect in the chain. </dd></param>
<paramname="destinationChannels"><dd>[in] Confirms the input channel count of the destination voice. </dd></param>
<paramname="levelMatrixRef"><dd>[in] Array of [<em>SourceChannels</em> ? <em>DestinationChannels</em>] volume levels sent to the destination voice. The level sent from source channel <em>S</em> to destination channel <em>D</em> is specified in the form <em>pLevelMatrix</em>[<em>SourceChannels</em> ? <em>D</em> + <em>S</em>]. <p>For example, when rendering two-channel stereo input into 5.1 output that is weighted toward the front channels?but is absent from the center and low-frequency channels?the matrix might have the values shown in the following table.</p><table><tr><th>Output</th><th>Left Input [Array Index]</th><th>Right Input [Array Index]</th></tr><tr><td>Left</td><td>1.0 [0]</td><td>0.0 [1]</td></tr><tr><td>Right</td><td>0.0 [2]</td><td>1.0 [3]</td></tr><tr><td>Front Center</td><td>0.0 [4]</td><td>0.0 [5]</td></tr><tr><td>LFE</td><td>0.0 [6]</td><td>0.0 [7]</td></tr><tr><td>Rear Left</td><td>0.8 [8]</td><td>0.0 [9]</td></tr><tr><td>Rear Right</td><td>0.0 [10]</td><td>0.8 [11]</td></tr></table><p>Note that the left and right input are fully mapped to the output left and right channels; 80 percent of the left and right input is mapped to the rear left and right channels.</p><p>See Remarks for more information on volume levels.</p></dd></param>
<paramname="operationSet"><dd>[in] Identifies this call as part of a deferred batch. See the XAudio2 Operation Sets overview for more information. </dd></param>
<returns><p>Returns <seecref="F:SharpDX.Result.Ok"/> if successful, an error code otherwise. See XAudio2 Error Codes for descriptions of error codes.</p></returns>
<remarks>
<p>This method is valid only for source and submix voices, because mastering voices write directly to the device with no matrix mixing.</p><p>Volume levels are expressed as floating-point amplitude multipliers between -<seecref="F:SharpDX.XAudio2.XAudio2.MaximumVolumeLevel"/> and <seecref="F:SharpDX.XAudio2.XAudio2.MaximumVolumeLevel"/> (-224 to 224), with a maximum gain of 144.5 dB. A volume level of 1.0 means there is no attenuation or gain and 0 means silence. Negative levels can be used to invert the audio's phase. See XAudio2 Volume and Pitch Control for additional information on volume control.</p><p></p><p>The X3DAudio function <seecref="M:SharpDX.X3DAudio.X3DAudio.X3DAudioCalculate(SharpDX.X3DAudio.X3DAudioHandle@,SharpDX.X3DAudio.Listener,SharpDX.X3DAudio.Emitter,SharpDX.X3DAudio.CalculateFlags,SharpDX.X3DAudio.DspSettings)"/> can produce an output matrix for use with <strong>SetOutputMatrix</strong> based on a sound's position and a listener's position.</p><table><tr><th>Note </th></tr><tr><td><seecref="M:SharpDX.XAudio2.Voice.GetOutputMatrix(SharpDX.XAudio2.Voice,System.Int32,System.Int32,System.Single[])"/> always returns the levels most recently set by <seecref="M:SharpDX.XAudio2.Voice.SetOutputMatrix(SharpDX.XAudio2.Voice,System.Int32,System.Int32,System.Single[],System.Int32)"/>. However, they may not actually be in effect yet: they only take effect the next time the audio engine runs after the <seecref="M:SharpDX.XAudio2.Voice.SetOutputMatrix(SharpDX.XAudio2.Voice,System.Int32,System.Int32,System.Single[],System.Int32)"/> call (or after the corresponding <seecref="M:SharpDX.XAudio2.XAudio2.CommitChanges(System.Int32)"/> call, if <seecref="M:SharpDX.XAudio2.Voice.SetOutputMatrix(SharpDX.XAudio2.Voice,System.Int32,System.Int32,System.Single[],System.Int32)"/> was called with a deferred operation ID).</td></tr></table>
</remarks>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='IXAudio2Voice::SetOutputMatrix']/*"/>
Gets the volume level of each channel of the final output for the voice. These channels are mapped to the input channels of a specified destination voice.
</summary>
<paramname="destinationVoiceRef"><dd>[in] Pointer specifying the destination <seecref="T:SharpDX.XAudio2.Voice"/> to retrieve the output matrix for. <table><tr><th>Note </th></tr><tr><td>If the voice sends to a single target voice then specifying <c>null</c> will cause <strong>GetOutputMatrix</strong> to operate on that target voice.</td></tr></table></dd></param>
<paramname="sourceChannels"><dd>[in] Confirms the output channel count of the voice. This is the number of channels that are produced by the last effect in the chain. </dd></param>
<paramname="destinationChannels"><dd>[in] Confirms the input channel count of the destination voice. </dd></param>
<paramname="levelMatrixRef"><dd>[out] Array of [<em>SourceChannels</em> * <em>DestinationChannels</em>] volume levels sent to the destination voice. The level sent from source channel <em>S</em> to destination channel <em>D</em> is returned in the form <em>pLevelMatrix</em>[<em>DestinationChannels</em> ? <em>S</em> + <em>D</em>]. See Remarks for more information on volume levels. </dd></param>
<remarks>
<p>This method applies only to source and submix voices, because mastering voices write directly to the device with no matrix mixing.</p><p>Volume levels are expressed as floating-point amplitude multipliers between -224 to 224, with a maximum gain of 144.5 dB. A volume level of 1 means there is no attenuation or gain and 0 means silence. Negative levels can be used to invert the audio's phase. See XAudio2 Volume and Pitch Control for additional information on volume control.</p><p>See <strong><seecref="T:SharpDX.Multimedia.WaveFormatExtensible"/></strong> for information on standard channel ordering.</p><table><tr><th>Note </th></tr><tr><td><strong>GetOutputMatrix</strong> always returns the levels most recently set by <seecref="M:SharpDX.XAudio2.Voice.SetOutputMatrix(SharpDX.XAudio2.Voice,System.Int32,System.Int32,System.Single[],System.Int32)"/>. However, they may not actually be in effect yet: they only take effect the next time the audio engine runs after the <seecref="M:SharpDX.XAudio2.Voice.SetOutputMatrix(SharpDX.XAudio2.Voice,System.Int32,System.Int32,System.Single[],System.Int32)"/> call (or after the corresponding <seecref="M:SharpDX.XAudio2.XAudio2.CommitChanges(System.Int32)"/> call, if <seecref="M:SharpDX.XAudio2.Voice.SetOutputMatrix(SharpDX.XAudio2.Voice,System.Int32,System.Int32,System.Single[],System.Int32)"/> was called with a deferred operation ID).</td></tr></table>
</remarks>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='IXAudio2Voice::GetOutputMatrix']/*"/>
<msdn-id>ee418590</msdn-id>
<unmanaged>void IXAudio2Voice::GetOutputMatrix([In, Optional] IXAudio2Voice* pDestinationVoice,[In] unsigned int SourceChannels,[In] unsigned int DestinationChannels,[Out, Buffer] float* pLevelMatrix)</unmanaged>
Destroys the voice. If necessary, stops the voice and removes it from the XAudio2 graph.
</summary>
<remarks>
<p>If any other voice is currently sending audio to this voice, the method fails.</p><p><strong>DestroyVoice</strong> waits for the audio processing thread to be idle, so it can take a little while (typically no more than a couple of milliseconds). This is necessary to guarantee that the voice will no longer make any callbacks or read any audio data, so the application can safely free up these resources as soon as the call returns.</p><p>To avoid title thread interruptions from a blocking <strong>DestroyVoice</strong> call, the application can destroy voices on a separate non-critical thread, or the application can use voice pooling strategies to reuse voices rather than destroying them. Note that voices can only be reused with audio that has the same data format and the same number of channels the voice was created with. A voice can play audio data with different sample rates than that of the voice by calling <seecref="M:SharpDX.XAudio2.SourceVoice.SetFrequencyRatio(System.Single,System.Int32)"/> with an appropriate ratio parameter.</p><p>It is illegal to call <strong>DestroyVoice</strong> from within a callback. If <strong>DestroyVoice</strong> is called within a callback XAUDIO2_E_INVALID_CALL will be returned.</p>
</remarks>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='IXAudio2Voice::DestroyVoice']/*"/>
Sets parameters for a given effect in the voice's effect chain.
</summary>
<paramname="effectIndex">[in] Zero-based index of an effect within the voice's effect chain. </param>
<paramname="effectParameter">[in] Returns the current values of the effect-specific parameters. </param>
<paramname="operationSet">[in] Identifies this call as part of a deferred batch. See the {{XAudio2 Operation Sets}} overview for more information. </param>
Sets parameters for a given effect in the voice's effect chain.
</summary>
<paramname="effectIndex">[in] Zero-based index of an effect within the voice's effect chain. </param>
<paramname="effectParameter">[in] Returns the current values of the effect-specific parameters. </param>
<paramname="operationSet">[in] Identifies this call as part of a deferred batch. See the {{XAudio2 Operation Sets}} overview for more information. </param>
<paramname="effectDescriptors">[in, optional] an array of <seecref="T:SharpDX.XAudio2.EffectDescriptor"/> structure that describes the new effect chain to use. If NULL is passed, the current effect chain is removed. If array is non null, its length must be at least of 1. </param>
Designates a new set of submix or mastering voices to receive the output of the voice.
</summary>
<paramname="outputVoices">[in] Array of <seecref="T:SharpDX.XAudio2.VoiceSendDescriptor"/> structure pointers to destination voices. If outputVoices is NULL, the voice will send its output to the current mastering voice. To set the voice to not send its output anywhere set an array of lenvth 0. All of the voices in a send list must have the same input sample rate, see {{XAudio2 Sample Rate Conversions}} for additional information. </param>
Sets the volume level of each channel of the final output for the voice. These channels are mapped to the input channels of a specified destination voice.
</summary>
<paramname="sourceChannels">[in] Confirms the output channel count of the voice. This is the number of channels that are produced by the last effect in the chain. </param>
<paramname="destinationChannels">[in] Confirms the input channel count of the destination voice. </param>
<paramname="levelMatrixRef">[in] Array of [SourceChannels ? DestinationChannels] volume levels sent to the destination voice. The level sent from source channel S to destination channel D is specified in the form pLevelMatrix[SourceChannels ? D + S]. For example, when rendering two-channel stereo input into 5.1 output that is weighted toward the front channels?but is absent from the center and low-frequency channels?the matrix might have the values shown in the following table. OutputLeft InputRight Input Left1.00.0 Right0.01.0 Front Center0.00.0 LFE0.00.0 Rear Left0.80.0 Rear Right0.00.8 Note that the left and right input are fully mapped to the output left and right channels; 80 percent of the left and right input is mapped to the rear left and right channels. See Remarks for more information on volume levels. </param>
Sets the volume level of each channel of the final output for the voice. These channels are mapped to the input channels of a specified destination voice.
</summary>
<paramname="destinationVoiceRef">[in] Pointer to a destination <seecref="T:SharpDX.XAudio2.Voice"/> for which to set volume levels. Note If the voice sends to a single target voice then specifying NULL will cause SetOutputMatrix to operate on that target voice. </param>
<paramname="sourceChannels">[in] Confirms the output channel count of the voice. This is the number of channels that are produced by the last effect in the chain. </param>
<paramname="destinationChannels">[in] Confirms the input channel count of the destination voice. </param>
<paramname="levelMatrixRef">[in] Array of [SourceChannels ? DestinationChannels] volume levels sent to the destination voice. The level sent from source channel S to destination channel D is specified in the form pLevelMatrix[SourceChannels ? D + S]. For example, when rendering two-channel stereo input into 5.1 output that is weighted toward the front channels?but is absent from the center and low-frequency channels?the matrix might have the values shown in the following table. OutputLeft InputRight Input Left1.00.0 Right0.01.0 Front Center0.00.0 LFE0.00.0 Rear Left0.80.0 Rear Right0.00.8 Note that the left and right input are fully mapped to the output left and right channels; 80 percent of the left and right input is mapped to the rear left and right channels. See Remarks for more information on volume levels. </param>
Sets the volume level of each channel of the final output for the voice. These channels are mapped to the input channels of a specified destination voice.
</summary>
<paramname="sourceChannels">[in] Confirms the output channel count of the voice. This is the number of channels that are produced by the last effect in the chain. </param>
<paramname="destinationChannels">[in] Confirms the input channel count of the destination voice. </param>
<paramname="levelMatrixRef">[in] Array of [SourceChannels ? DestinationChannels] volume levels sent to the destination voice. The level sent from source channel S to destination channel D is specified in the form pLevelMatrix[SourceChannels ? D + S]. For example, when rendering two-channel stereo input into 5.1 output that is weighted toward the front channels?but is absent from the center and low-frequency channels?the matrix might have the values shown in the following table. OutputLeft InputRight Input Left1.00.0 Right0.01.0 Front Center0.00.0 LFE0.00.0 Rear Left0.80.0 Rear Right0.00.8 Note that the left and right input are fully mapped to the output left and right channels; 80 percent of the left and right input is mapped to the rear left and right channels. See Remarks for more information on volume levels. </param>
<paramname="operationSet">[in] Identifies this call as part of a deferred batch. See the {{XAudio2 Operation Sets}} overview for more information. </param>
Returns information about the creation flags, input channels, and sample rate of a voice.
</summary>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='IXAudio2Voice::GetVoiceDetails']/*"/>
Designates a new set of submix or mastering voices to receive the output of the voice.
</summary>
<remarks>
<p>This method is only valid for source and submix voices. Mastering voices can not send audio to another voice.</p><p>After calling <strong>SetOutputVoices</strong> a voice's current send levels will be replaced by a default send matrix. The <seecref="M:SharpDX.XAudio2.Voice.SetOutputMatrix(SharpDX.XAudio2.Voice,System.Int32,System.Int32,System.Single[],System.Int32)"/> method must be called to set a custom matrix for the new sendlist.</p><p>It is illegal to call <strong>SetOutputVoices</strong> from within a callback. If <strong>SetOutputVoices</strong> is called within a callback XAUDIO2_E_INVALID_CALL will be returned.</p><table><tr><th>Note </th></tr><tr><td>Calling <strong>SetOutputVoices</strong> invalidates any send matrices previously set with <seecref="M:SharpDX.XAudio2.Voice.SetOutputMatrix(SharpDX.XAudio2.Voice,System.Int32,System.Int32,System.Single[],System.Int32)"/>.</td></tr></table>
</remarks>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='IXAudio2Voice::SetOutputVoices']/*"/>
<p><strong>GetFilterParameters</strong> will fail if the voice was not created with the <seecref="F:SharpDX.XAudio2.VoiceSendFlags.UseFilter"/> flag.</p><p><strong>GetFilterParameters</strong> always returns this voice's actual current filter parameters. However, these may not match the parameters set by the most recent <seecref="M:SharpDX.XAudio2.Voice.SetFilterParameters(SharpDX.XAudio2.FilterParameters,System.Int32)"/> call: the actual parameters are only changed the next time the audio engine runs after the <seecref="M:SharpDX.XAudio2.Voice.SetFilterParameters(SharpDX.XAudio2.FilterParameters,System.Int32)"/> call (or after the corresponding <seecref="M:SharpDX.XAudio2.XAudio2.CommitChanges(System.Int32)"/> call, if <seecref="M:SharpDX.XAudio2.Voice.SetFilterParameters(SharpDX.XAudio2.FilterParameters,System.Int32)"/> was called with a deferred operation ID).</p><table><tr><th>Note </th></tr><tr><td><strong>GetFilterParameters</strong> is usable only on source and submix voices and has no effect on mastering voices.</td></tr></table>
</remarks>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='IXAudio2Voice::GetFilterParameters']/*"/>
Gets the current overall volume level of the voice.
</summary>
<remarks>
<p>Volume levels are expressed as floating-point amplitude multipliers between -224 to 224, with a maximum gain of 144.5 dB. A volume level of 1 means there is no attenuation or gain and 0 means silence. Negative levels can be used to invert the audio's phase. See XAudio2 Volume and Pitch Control for additional information on volume control.</p><table><tr><th>Note </th></tr><tr><td><strong>GetVolume</strong> always returns the volume most recently set by <seecref="M:SharpDX.XAudio2.Voice.SetVolume(System.Single,System.Int32)"/>. However, it may not actually be in effect yet: it only takes effect the next time the audio engine runs after the <seecref="M:SharpDX.XAudio2.Voice.SetVolume(System.Single,System.Int32)"/> call (or after the corresponding <seecref="M:SharpDX.XAudio2.XAudio2.CommitChanges(System.Int32)"/> call, if <seecref="M:SharpDX.XAudio2.Voice.SetVolume(System.Single,System.Int32)"/> was called with a deferred operation ID).</td></tr></table>
</remarks>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='IXAudio2Voice::GetVolume']/*"/>
Performs an explicit conversion from <seecref="T:System.IntPtr"/> to <seecref="T:SharpDX.XAudio2.MasteringVoice"/>. (This method is a shortcut to <seecref="P:SharpDX.CppObject.NativePointer"/>)
<paramname="device">an instance of <seecref="T:SharpDX.XAudio2.XAudio2"/></param>
<paramname="inputChannels">[in] Number of channels the mastering voice expects in its input audio. InputChannels must be less than or equal to XAUDIO2_MAX_AUDIO_CHANNELS. InputChannels can be set to XAUDIO2_DEFAULT_CHANNELS, with the default being determined by the current platform. Windows Attempts to detect the system speaker configuration setup. Xbox 360 Defaults to 5.1 surround. </param>
<paramname="inputSampleRate">[in] Sample rate of the input audio data of the mastering voice. This rate must be a multiple of XAUDIO2_QUANTUM_DENOMINATOR. InputSampleRate must be between XAUDIO2_MIN_SAMPLE_RATE and XAUDIO2_MAX_SAMPLE_RATE. InputSampleRate can be set to XAUDIO2_DEFAULT_SAMPLERATE, with the default being determined by the current platform. Windows Windows XP defaults to 44100. Windows Vista and Windows 7 default to the setting specified in the Sound Control Panel. The default for this setting is 44100 (or 48000 if required by the driver). Xbox 360 Defaults to 48000. </param>
<paramname="deviceIndex">[in] Index of the output device that will be sent input by the mastering voice. Specifying the default value of 0 causes XAudio2 to select the global default audio device. </param>
Use a source voice to submit audio data to the XAudio2 processing pipeline. You must send voice data to a mastering voice to be heard, either directly or through intermediate submix voices.<p><strong><seecref="T:SharpDX.XAudio2.SourceVoice"/></strong> inherits directly from <seecref="T:SharpDX.XAudio2.Voice"/>. It implements its own methods.</p>
</summary>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='IXAudio2SourceVoice']/*"/>
Performs an explicit conversion from <seecref="T:System.IntPtr"/> to <seecref="T:SharpDX.XAudio2.SourceVoice"/>. (This method is a shortcut to <seecref="P:SharpDX.CppObject.NativePointer"/>)
Starts consumption and processing of audio by the voice. Delivers the result to any connected submix or mastering voices, or to the output device.
</summary>
<paramname="flags"><dd>[in] Flags that control how the voice is started. Must be 0. </dd></param>
<paramname="operationSet"><dd>[in] Identifies this call as part of a deferred batch. See the XAudio2 Operation Sets overview for more information. </dd></param>
<returns><p>Returns <seecref="F:SharpDX.Result.Ok"/> if successful, an error code otherwise. See XAudio2 Error Codes for descriptions of XAudio2 specific error codes. </p></returns>
<remarks>
<p>If the XAudio2 engine is stopped, the voice stops running. However, it remains in the started state, so that it starts running again as soon as the engine starts.</p><p>When first created, source voices are in the stopped state. Submix and mastering voices are in the started state.</p><p>After <strong>Start</strong> is called it has no further effect if called again before <seecref="M:SharpDX.XAudio2.SourceVoice.Stop(SharpDX.XAudio2.PlayFlags,System.Int32)"/> is called. In addition multiple calls to <strong>Start</strong> without matching calls to <seecref="M:SharpDX.XAudio2.SourceVoice.Stop(SharpDX.XAudio2.PlayFlags,System.Int32)"/> will result in warning messages in debug builds.</p>
</remarks>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='IXAudio2SourceVoice::Start']/*"/>
<paramname="flags"><dd>[in] Flags that control how the voice is stopped. Can be 0 or the following: <table><tr><th>Value</th><th>Description</th></tr><tr><td><seecref="F:SharpDX.XAudio2.PlayFlags.Tails"/></td><td>Continue emitting effect output after the voice is stopped.?</td></tr></table></dd></param>
<paramname="operationSet"><dd>[in] Identifies this call as part of a deferred batch. See the XAudio2 Operation Sets overview for more information. </dd></param>
<returns><p>Returns <seecref="F:SharpDX.Result.Ok"/> if successful, an error code otherwise. See XAudio2 Error Codes for descriptions of XAudio2 specific error codes. </p></returns>
<remarks>
<p>All source buffers that are queued on the voice and the current cursor position are preserved. This allows the voice to continue from where it left off, when it is restarted. The <seecref="M:SharpDX.XAudio2.SourceVoice.FlushSourceBuffers"/> method can be used to flush queued source buffers.</p><p>By default, any pending output from voice effects?for example, reverb tails?is not played. Instead, the voice is immediately rendered silent. The <seecref="F:SharpDX.XAudio2.PlayFlags.Tails"/> flag can be used to continue emitting effect output after the voice stops running.</p><p>A voice stopped with the <seecref="F:SharpDX.XAudio2.PlayFlags.Tails"/> flag stops consuming source buffers, but continues to process its effects and send audio to its destination voices. A voice in this state can later be stopped completely by calling <strong>Stop</strong> again with the <em>Flags</em> argument set to 0. This enables stopping a voice with <seecref="F:SharpDX.XAudio2.PlayFlags.Tails"/>, waiting sufficient time for any audio being produced by its effects to finish, and then fully stopping the voice by calling <strong>Stop</strong> again without <seecref="F:SharpDX.XAudio2.PlayFlags.Tails"/>. This technique allows voices with effects to be stopped gracefully while ensuring idle voices will not continue to be processed after they have finished producing audio.</p><p><strong>Stop</strong> is always asynchronous, even if called within a callback.</p><table><tr><th>Note </th></tr><tr><td>XAudio2 never calls any voice callbacks for a voice if the voice is stopped (even if it was stopped with <seecref="F:SharpDX.XAudio2.PlayFlags.Tails"/>).</td></tr></table>
</remarks>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='IXAudio2SourceVoice::Stop']/*"/>
<paramname="bufferRef"><dd>[in] Pointer to an <seecref="T:SharpDX.XAudio2.AudioBuffer"/> structure to queue. </dd></param>
<paramname="bufferWMARef"><dd>[in] Pointer to an additional <seecref="T:SharpDX.XAudio2.BufferWma"/> structure used when submitting WMA data. </dd></param>
<returns><p>Returns <seecref="F:SharpDX.Result.Ok"/> if successful, an error code otherwise. See XAudio2 Error Codes for descriptions of XAudio2 specific error codes. </p></returns>
<remarks>
<p>The voice processes and plays back the buffers in its queue in the order that they were submitted.</p><p>The <seecref="T:SharpDX.XAudio2.AudioBuffer"/> structure includes details about the audio buffer's location and size, the part of the buffer that should actually be played, the loop region (if any) and loop count, the context reference to be used in any callbacks relating to this buffer, and an optional <seecref="F:SharpDX.XAudio2.BufferFlags.EndOfStream"/> flag that indicates that it is the last buffer of a contiguous sound.</p><p>If the voice is started and has no buffers queued, the new buffer will start playing immediately. If the voice is stopped, the buffer is added to the voice's queue and will be played when the voice starts.</p><p>If only part of the given buffer should be played, the <strong>PlayBegin</strong> and <strong>PlayLength</strong> fields in the <seecref="T:SharpDX.XAudio2.AudioBuffer"/> can be used to specify the region to be played. A <strong>PlayLength</strong> value of 0 means to play the entire buffer (and in this case <strong>PlayBegin</strong> must be 0 as well).</p><p>If all or part of the buffer should be played in a continuous loop, the <strong>LoopBegin</strong>, <strong>LoopLength</strong> and <strong>LoopCount</strong> fields in <seecref="T:SharpDX.XAudio2.AudioBuffer"/> can be used to specify the characteristics of the loop region. A <strong>LoopBegin</strong> value of <seecref="F:SharpDX.XAudio2.XAudio2.NoLoopRegion"/> means that no looping should be performed, and in this case <strong>LoopLength</strong> and <strong>LoopCount</strong> must be given as 0. If a loop region is specified, it must be non-empty (<strong>LoopLength</strong>> 0), and the loop count must be between 1 and <seecref="F:SharpDX.XAudio2.XAudio2.MaximumLoopCount"/> inclusive (or <seecref="F:SharpDX.XAudio2.AudioBuffer.LoopInfinite"/> to specify an endless loop which will only end when <seecref="M:SharpDX.XAudio2.SourceVoice.ExitLoop(System.Int32)"/> is called). A loop count of <em>N</em> means to skip backwards <em>N</em> times, i.e. to play the loop region <em>N+1</em> times.</p><p>If an explicit play region is specified, it must begin and end within the given audio buffer (or, in the compressed case, within the set of samples that the buffer will decode to). In addition, the loop region cannot end past the end of the play region.</p><table><tr><th>Xbox 360 </th></tr><tr><td><p>For certain audio formats, there may be additional restrictions on the valid endpoints of any play or loop regions; e.g. for XMA buffers, the regions can only begin or end at 128-sample boundaries in the decoded audio.</p></td></tr></table><p>The <em>pBuffer</em> reference can be reused or freed immediately after calling this method, but the actual audio data referenced by <em>pBuffer</em> must remain valid until the buffer has been fully consumed by XAudio2 (which is indicated by the <seecref="M:SharpDX.XAudio2.VoiceCallback.OnBufferEnd(System.IntPtr)"/> callback).</p><p>Up to <seecref="F:SharpDX.XAudio2.XAudio2.MaximumQueuedBuffers"/> buffers can be queued on a voice at any one time.</p><p><strong>SubmitSourceBuffer</strong> takes effect immediately when called from an XAudio2 callback with an OperationSet of <seecref="F:SharpDX.XAudio2.XAudio2.CommitNow"/>.</p><table><tr><th>Xbox 360 </th></tr><tr><td><p>This method can be called from an Xbox system thread (most other XAudio2 methods cannot). However, a maximum of two source buffers can be submitted from a system thread at a time.</p></td></tr></table>
</remarks>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='IXAudio2SourceVoice::SubmitSourceBuffer']/*"/>
<p>If the voice is started, the buffer that is currently playing is not removed from the queue.</p><p><strong>FlushSourceBuffers</strong> can be called regardless of whether the voice is currently started or stopped.</p><p>For every buffer removed, an OnBufferEnd callback will be made, but none of the other per-buffer callbacks (OnBufferStart, OnStreamEnd or OnLoopEnd) will be made.</p><p><strong>FlushSourceBuffers</strong> does not change a the voice's running state, so if the voice was playing a buffer prior to the call, it will continue to do so, and will deliver all the callbacks for the buffer normally. This means that the OnBufferEnd callback for this buffer will take place after the OnBufferEnd callbacks for the buffers that were removed. Thus, an XAudio2 client that calls FlushSourceBuffers cannot expect to receive OnBufferEnd callbacks in the order in which the buffers were submitted.</p><p>No warnings for starvation of the buffer queue will be emitted when the currently playing buffer completes; it is assumed that the client has intentionally removed the buffers that followed it. However, there may be an audio pop if this buffer does not end at a zero crossing. If the application must ensure that the flush operation takes place while a specific buffer is playing?perhaps because the buffer ends with a zero crossing?it must call <strong>FlushSourceBuffers</strong> from a callback, so that it executes synchronously.</p><p>Calling <strong>FlushSourceBuffers</strong> after a voice is stopped and then submitting new data to the voice resets all of the voice's internal counters.</p><p>A voice's state is not considered reset after calling <strong>FlushSourceBuffers</strong> until the OnBufferEnd callback occurs (if a buffer was previously submitted) or <seecref="M:SharpDX.XAudio2.SourceVoice.GetState(SharpDX.XAudio2.VoiceState@)"/> returns with <seecref="T:SharpDX.XAudio2.VoiceState"/>.<strong>BuffersQueued</strong> == 0. For example, if you stop a voice and call <strong>FlushSourceBuffers</strong>, it's still not legal to immediately call <seecref="M:SharpDX.XAudio2.SourceVoice.SetSourceSampleRate(System.Int32)"/> (which requires the voice to not have any buffers currently queued), until either of the previously mentioned conditions are met.
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='IXAudio2SourceVoice::FlushSourceBuffers']/*"/>
Notifies an XAudio2 voice that no more buffers are coming after the last one that is currently in its queue.
</summary>
<returns>Returns <seecref="F:SharpDX.Result.Ok"/> if successful, an error code otherwise.</returns>
<remarks>
<p><strong>Discontinuity</strong> suppresses the warnings that normally occur in the debug build of XAudio2 when a voice runs out of audio buffers to play. It is preferable to mark the final buffer of a stream by tagging it with the <seecref="F:SharpDX.XAudio2.BufferFlags.EndOfStream"/> flag, but in some cases the client may not know that a buffer is the end of a stream until after the buffer has been submitted.</p><p>Because calling <strong>Discontinuity</strong> is equivalent to applying the <seecref="F:SharpDX.XAudio2.BufferFlags.EndOfStream"/> flag retroactively to the last buffer submitted, an OnStreamEnd callback will be made when this buffer completes.</p><table><tr><th>Note </th></tr><tr><td>XAudio2 may consume its entire buffer queue and emit a warning before the <strong>Discontinuity</strong> call takes effect, so <strong>Discontinuity</strong> is not guaranteed to suppress the warnings.</td></tr></table>
</remarks>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='IXAudio2SourceVoice::Discontinuity']/*"/>
Stops looping the voice when it reaches the end of the current loop region.
</summary>
<paramname="operationSet"><dd>[in] Identifies this call as part of a deferred batch. See the XAudio2 Operation Sets overview for more information. </dd></param>
<returns><p>Returns <seecref="F:SharpDX.Result.Ok"/> if successful, an error code otherwise. See XAudio2 Error Codes for descriptions of XAudio2 specific error codes. </p></returns>
<remarks>
<p>If the cursor for the voice is not in a loop region, <strong>ExitLoop</strong> does nothing.</p>
</remarks>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='IXAudio2SourceVoice::ExitLoop']/*"/>
<msdn-id>ee418465</msdn-id>
<unmanaged>HRESULT IXAudio2SourceVoice::ExitLoop([In] unsigned int OperationSet)</unmanaged>
<p>If a client needs to obtain the correlated positions of several voices (i.e. to know exactly which sample of a given voice is playing when a given sample of another voice is playing) it must make <strong>GetState</strong> calls in an XAudio2 engine callback, to ensure that none of the voices advance while the calls are being made. See the XAudio2 Callbacks overview for information about using XAudio2 callbacks.</p>
</remarks>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='IXAudio2SourceVoice::GetState']/*"/>
<paramname="ratio"><dd>[in] Frequency adjustment ratio. This value must be between <seecref="F:SharpDX.XAudio2.XAudio2.MinimumFrequencyRatio"/> and the <em>MaxFrequencyRatio</em> parameter specified when the voice was created (see <seecref="M:SharpDX.XAudio2.XAudio2.CreateSourceVoice_(SharpDX.XAudio2.SourceVoice,System.IntPtr,SharpDX.XAudio2.VoiceFlags,System.Single,System.IntPtr,System.Nullable{SharpDX.XAudio2.VoiceSendDescriptors},System.Nullable{SharpDX.XAudio2.EffectChain})"/>). <seecref="F:SharpDX.XAudio2.XAudio2.MinimumFrequencyRatio"/> currently is 0.0005, which allows pitch to be lowered by up to 11 octaves. </dd></param>
<paramname="operationSet"><dd>[in] Identifies this call as part of a deferred batch. See the XAudio2 Operation Sets overview for more information. </dd></param>
<returns><p>Returns <seecref="F:SharpDX.Result.Ok"/> if successful, an error code otherwise. See XAudio2 Error Codes for descriptions of error codes. </p></returns>
<remarks>
<p>Frequency adjustment is expressed as <em>source frequency</em> / <em>target frequency</em>. Changing the frequency ratio changes the rate audio is played on the voice. A ratio greater than 1.0 will cause the audio to play faster and a ratio less than 1.0 will cause the audio to play slower. Additionally, the frequency ratio affects the pitch of audio on the voice. As an example, a value of 1.0 has no effect on the audio, whereas a value of 2.0 raises pitch by one octave and 0.5 lowers it by one octave.</p><p>If <strong>SetFrequencyRatio</strong> is called specifying a <em>Ratio</em> value outside the valid range, the method will set the frequency ratio to the nearest valid value. A warning also will be generated for debug builds.</p><table><tr><th>Note </th></tr><tr><td><seecref="M:SharpDX.XAudio2.SourceVoice.GetFrequencyRatio(System.Single@)"/> always returns the voice's actual current frequency ratio. However, this may not match the ratio set by the most recent <seecref="M:SharpDX.XAudio2.SourceVoice.SetFrequencyRatio(System.Single,System.Int32)"/> call: the actual ratio is only changed the next time the audio engine runs after the <seecref="M:SharpDX.XAudio2.SourceVoice.SetFrequencyRatio(System.Single,System.Int32)"/> call (or after the corresponding <seecref="M:SharpDX.XAudio2.XAudio2.CommitChanges(System.Int32)"/> call, if <seecref="M:SharpDX.XAudio2.SourceVoice.SetFrequencyRatio(System.Single,System.Int32)"/> was called with a deferred operation ID).</td></tr></table>
</remarks>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='IXAudio2SourceVoice::SetFrequencyRatio']/*"/>
<msdn-id>ee418469</msdn-id>
<unmanaged>HRESULT IXAudio2SourceVoice::SetFrequencyRatio([In] float Ratio,[In] unsigned int OperationSet)</unmanaged>
Returns the frequency adjustment ratio of the voice.
</summary>
<paramname="ratioRef"><dd>[out] Returns the current frequency adjustment ratio if successful. </dd></param>
<remarks>
<p><strong>GetFrequencyRatio</strong> always returns the voice's actual current frequency ratio. However, this may not match the ratio set by the most recent <seecref="M:SharpDX.XAudio2.SourceVoice.SetFrequencyRatio(System.Single,System.Int32)"/> call: the actual ratio is only changed the next time the audio engine runs after the <seecref="M:SharpDX.XAudio2.SourceVoice.SetFrequencyRatio(System.Single,System.Int32)"/> call (or after the corresponding <seecref="M:SharpDX.XAudio2.XAudio2.CommitChanges(System.Int32)"/> call, if <seecref="M:SharpDX.XAudio2.SourceVoice.SetFrequencyRatio(System.Single,System.Int32)"/> was called with a deferred operation ID).</p><p>For information on frequency ratios, see <seecref="M:SharpDX.XAudio2.SourceVoice.SetFrequencyRatio(System.Single,System.Int32)"/>.</p>
</remarks>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='IXAudio2SourceVoice::GetFrequencyRatio']/*"/>
Reconfigures the voice to consume source data at a different sample rate than the rate specified when the voice was created.
</summary>
<paramname="newSourceSampleRate"><dd>[in] The new sample rate the voice should process submitted data at. Valid sample rates are 1kHz to 200kHz. </dd></param>
<returns><p>Returns <seecref="F:SharpDX.Result.Ok"/> if successful, an error code otherwise. See XAudio2 Error Codes for descriptions of error codes.</p></returns>
<remarks>
<p>The <strong>SetSourceSampleRate</strong> method supports reuse of XAudio2 voices by allowing a voice to play sounds with a variety of sample rates. To use <strong>SetSourceSampleRate</strong> the voice must have been created without the <seecref="F:SharpDX.XAudio2.VoiceFlags.NoPitch"/> or <seecref="F:SharpDX.XAudio2.VoiceFlags.NoSampleRateConversion"/> flags and must not have any buffers currently queued.</p><p>The typical use of <strong>SetSourceSampleRate</strong> is to support voice pooling. For example to support voice pooling an application would precreate all the voices it expects to use. Whenever a new sound will be played the application chooses an inactive voice or ,if all voices are busy, picks the least important voice and calls <strong>SetSourceSampleRate</strong> on the voice with the new sound's sample rate. After <strong>SetSourceSampleRate</strong> has been called on the voice, the application can immediately start submitting and playing buffers with the new sample rate. This allows the application to avoid the overhead of creating and destroying voices frequently during gameplay.</p>
</remarks>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='IXAudio2SourceVoice::SetSourceSampleRate']/*"/>
<msdn-id>ee418470</msdn-id>
<unmanaged>HRESULT IXAudio2SourceVoice::SetSourceSampleRate([In] unsigned int NewSourceSampleRate)</unmanaged>
<paramname="device">an instance of <seecref="T:SharpDX.XAudio2.XAudio2"/></param>
<paramname="sourceFormat">[in] Pointer to a <seecref="T:SharpDX.Multimedia.WaveFormat"/> structure. This structure contains the expected format for all audio buffers submitted to the source voice. XAudio2 supports voice types of PCM, xWMA, ADPCM (Windows only), and XMA (Xbox 360 only). XAudio2 supports the following PCM formats. 8-bit (unsigned) integer PCM 16-bit integer PCM (Optimal format for XAudio2) 20-bit integer PCM (either in 24 or 32 bit containers) 24-bit integer PCM (either in 24 or 32 bit containers) 32-bit integer PCM 32-bit float PCM (Preferred format after 16-bit integer) The number of channels in a source voice must be less than or equal to XAUDIO2_MAX_AUDIO_CHANNELS. The sample rate of a source voice must be between XAUDIO2_MIN_SAMPLE_RATE and XAUDIO2_MAX_SAMPLE_RATE. Note Data formats such as XMA, {{ADPCM}}, and {{xWMA}} that require more information than provided by <seecref="T:SharpDX.Multimedia.WaveFormat"/> have a <seecref="T:SharpDX.Multimedia.WaveFormat"/> structure as the first member in their format structure. When creating a source voice with one of those formats cast the format's structure as a <seecref="T:SharpDX.Multimedia.WaveFormat"/> structure and use it as the value for pSourceFormat. </param>
<paramname="device">an instance of <seecref="T:SharpDX.XAudio2.XAudio2"/></param>
<paramname="sourceFormat">[in] Pointer to a <seecref="T:SharpDX.Multimedia.WaveFormat"/> structure. This structure contains the expected format for all audio buffers submitted to the source voice. XAudio2 supports voice types of PCM, xWMA, ADPCM (Windows only), and XMA (Xbox 360 only). XAudio2 supports the following PCM formats. 8-bit (unsigned) integer PCM 16-bit integer PCM (Optimal format for XAudio2) 20-bit integer PCM (either in 24 or 32 bit containers) 24-bit integer PCM (either in 24 or 32 bit containers) 32-bit integer PCM 32-bit float PCM (Preferred format after 16-bit integer) The number of channels in a source voice must be less than or equal to XAUDIO2_MAX_AUDIO_CHANNELS. The sample rate of a source voice must be between XAUDIO2_MIN_SAMPLE_RATE and XAUDIO2_MAX_SAMPLE_RATE. Note Data formats such as XMA, {{ADPCM}}, and {{xWMA}} that require more information than provided by <seecref="T:SharpDX.Multimedia.WaveFormat"/> have a <seecref="T:SharpDX.Multimedia.WaveFormat"/> structure as the first member in their format structure. When creating a source voice with one of those formats cast the format's structure as a <seecref="T:SharpDX.Multimedia.WaveFormat"/> structure and use it as the value for pSourceFormat. </param>
<paramname="enableCallbackEvents">True to enable delegate callbacks on this instance. Default is false</param>
<paramname="device">an instance of <seecref="T:SharpDX.XAudio2.XAudio2"/></param>
<paramname="sourceFormat">[in] Pointer to a <seecref="T:SharpDX.Multimedia.WaveFormat"/> structure. This structure contains the expected format for all audio buffers submitted to the source voice. XAudio2 supports voice types of PCM, xWMA, ADPCM (Windows only), and XMA (Xbox 360 only). XAudio2 supports the following PCM formats. 8-bit (unsigned) integer PCM 16-bit integer PCM (Optimal format for XAudio2) 20-bit integer PCM (either in 24 or 32 bit containers) 24-bit integer PCM (either in 24 or 32 bit containers) 32-bit integer PCM 32-bit float PCM (Preferred format after 16-bit integer) The number of channels in a source voice must be less than or equal to XAUDIO2_MAX_AUDIO_CHANNELS. The sample rate of a source voice must be between XAUDIO2_MIN_SAMPLE_RATE and XAUDIO2_MAX_SAMPLE_RATE. Note Data formats such as XMA, {{ADPCM}}, and {{xWMA}} that require more information than provided by <seecref="T:SharpDX.Multimedia.WaveFormat"/> have a <seecref="T:SharpDX.Multimedia.WaveFormat"/> structure as the first member in their format structure. When creating a source voice with one of those formats cast the format's structure as a <seecref="T:SharpDX.Multimedia.WaveFormat"/> structure and use it as the value for pSourceFormat. </param>
<paramname="flags">[in] Flags that specify the behavior of the source voice. A flag can be 0 or a combination of one or more of the following: ValueDescriptionXAUDIO2_VOICE_NOPITCHNo pitch control is available on the voice.?XAUDIO2_VOICE_NOSRCNo sample rate conversion is available on the voice, the voice's outputs must have the same sample rate.Note The XAUDIO2_VOICE_NOSRC flag causes the voice to behave as though the XAUDIO2_VOICE_NOPITCH flag also is specified. ?XAUDIO2_VOICE_USEFILTERThe filter effect should be available on this voice.?XAUDIO2_VOICE_MUSICThe voice is used to play background music. The system automatically can replace the voice with music selected by the user.? </param>
<paramname="device">an instance of <seecref="T:SharpDX.XAudio2.XAudio2"/></param>
<paramname="sourceFormat">[in] Pointer to a <seecref="T:SharpDX.Multimedia.WaveFormat"/> structure. This structure contains the expected format for all audio buffers submitted to the source voice. XAudio2 supports voice types of PCM, xWMA, ADPCM (Windows only), and XMA (Xbox 360 only). XAudio2 supports the following PCM formats. 8-bit (unsigned) integer PCM 16-bit integer PCM (Optimal format for XAudio2) 20-bit integer PCM (either in 24 or 32 bit containers) 24-bit integer PCM (either in 24 or 32 bit containers) 32-bit integer PCM 32-bit float PCM (Preferred format after 16-bit integer) The number of channels in a source voice must be less than or equal to XAUDIO2_MAX_AUDIO_CHANNELS. The sample rate of a source voice must be between XAUDIO2_MIN_SAMPLE_RATE and XAUDIO2_MAX_SAMPLE_RATE. Note Data formats such as XMA, {{ADPCM}}, and {{xWMA}} that require more information than provided by <seecref="T:SharpDX.Multimedia.WaveFormat"/> have a <seecref="T:SharpDX.Multimedia.WaveFormat"/> structure as the first member in their format structure. When creating a source voice with one of those formats cast the format's structure as a <seecref="T:SharpDX.Multimedia.WaveFormat"/> structure and use it as the value for pSourceFormat. </param>
<paramname="flags">[in] Flags that specify the behavior of the source voice. A flag can be 0 or a combination of one or more of the following: ValueDescriptionXAUDIO2_VOICE_NOPITCHNo pitch control is available on the voice.?XAUDIO2_VOICE_NOSRCNo sample rate conversion is available on the voice, the voice's outputs must have the same sample rate.Note The XAUDIO2_VOICE_NOSRC flag causes the voice to behave as though the XAUDIO2_VOICE_NOPITCH flag also is specified. ?XAUDIO2_VOICE_USEFILTERThe filter effect should be available on this voice.?XAUDIO2_VOICE_MUSICThe voice is used to play background music. The system automatically can replace the voice with music selected by the user.? </param>
<paramname="enableCallbackEvents">True to enable delegate callbacks on this instance. Default is false</param>
<paramname="device">an instance of <seecref="T:SharpDX.XAudio2.XAudio2"/></param>
<paramname="sourceFormat">[in] Pointer to a <seecref="T:SharpDX.Multimedia.WaveFormat"/> structure. This structure contains the expected format for all audio buffers submitted to the source voice. XAudio2 supports voice types of PCM, xWMA, ADPCM (Windows only), and XMA (Xbox 360 only). XAudio2 supports the following PCM formats. 8-bit (unsigned) integer PCM 16-bit integer PCM (Optimal format for XAudio2) 20-bit integer PCM (either in 24 or 32 bit containers) 24-bit integer PCM (either in 24 or 32 bit containers) 32-bit integer PCM 32-bit float PCM (Preferred format after 16-bit integer) The number of channels in a source voice must be less than or equal to XAUDIO2_MAX_AUDIO_CHANNELS. The sample rate of a source voice must be between XAUDIO2_MIN_SAMPLE_RATE and XAUDIO2_MAX_SAMPLE_RATE. Note Data formats such as XMA, {{ADPCM}}, and {{xWMA}} that require more information than provided by <seecref="T:SharpDX.Multimedia.WaveFormat"/> have a <seecref="T:SharpDX.Multimedia.WaveFormat"/> structure as the first member in their format structure. When creating a source voice with one of those formats cast the format's structure as a <seecref="T:SharpDX.Multimedia.WaveFormat"/> structure and use it as the value for pSourceFormat. </param>
<paramname="flags">[in] Flags that specify the behavior of the source voice. A flag can be 0 or a combination of one or more of the following: ValueDescriptionXAUDIO2_VOICE_NOPITCHNo pitch control is available on the voice.?XAUDIO2_VOICE_NOSRCNo sample rate conversion is available on the voice, the voice's outputs must have the same sample rate.Note The XAUDIO2_VOICE_NOSRC flag causes the voice to behave as though the XAUDIO2_VOICE_NOPITCH flag also is specified. ?XAUDIO2_VOICE_USEFILTERThe filter effect should be available on this voice.?XAUDIO2_VOICE_MUSICThe voice is used to play background music. The system automatically can replace the voice with music selected by the user.? </param>
<paramname="maxFrequencyRatio">[in] Highest allowable frequency ratio that can be set on this voice. The value for this argument must be between XAUDIO2_MIN_FREQ_RATIO and XAUDIO2_MAX_FREQ_RATIO. Subsequent calls to <seecref="M:SharpDX.XAudio2.SourceVoice.SetFrequencyRatio(System.Single,System.Int32)"/> are clamped between XAUDIO2_MIN_FREQ_RATIO and MaxFrequencyRatio. The maximum value for this argument is defined as XAUDIO2_MAX_FREQ_RATIO, which allows pitch to be raised by up to 10 octaves. If MaxFrequencyRatio is less than 1.0, the voice will use that ratio immediately after being created (rather than the default of 1.0). Xbox 360 For XMA voices there is an additional restriction on the MaxFrequencyRatio argument and the voice's sample rate. The product of these two numbers cannot exceed XAUDIO2_MAX_RATIO_TIMES_RATE_XMA_MONO for one-channel voices or XAUDIO2_MAX_RATIO_TIMES_RATE_XMA_MULTICHANNEL for voices with any other number of channels. If the value specified for MaxFrequencyRatio is too high for the specified format, the call to CreateSourceVoice fails and produces a debug message. Note XAudio2's memory usage can be reduced by using the lowest possible MaxFrequencyRatio value. </param>
<paramname="device">an instance of <seecref="T:SharpDX.XAudio2.XAudio2"/></param>
<paramname="sourceFormat">[in] Pointer to a <seecref="T:SharpDX.Multimedia.WaveFormat"/> structure. This structure contains the expected format for all audio buffers submitted to the source voice. XAudio2 supports voice types of PCM, xWMA, ADPCM (Windows only), and XMA (Xbox 360 only). XAudio2 supports the following PCM formats. 8-bit (unsigned) integer PCM 16-bit integer PCM (Optimal format for XAudio2) 20-bit integer PCM (either in 24 or 32 bit containers) 24-bit integer PCM (either in 24 or 32 bit containers) 32-bit integer PCM 32-bit float PCM (Preferred format after 16-bit integer) The number of channels in a source voice must be less than or equal to XAUDIO2_MAX_AUDIO_CHANNELS. The sample rate of a source voice must be between XAUDIO2_MIN_SAMPLE_RATE and XAUDIO2_MAX_SAMPLE_RATE. Note Data formats such as XMA, {{ADPCM}}, and {{xWMA}} that require more information than provided by <seecref="T:SharpDX.Multimedia.WaveFormat"/> have a <seecref="T:SharpDX.Multimedia.WaveFormat"/> structure as the first member in their format structure. When creating a source voice with one of those formats cast the format's structure as a <seecref="T:SharpDX.Multimedia.WaveFormat"/> structure and use it as the value for pSourceFormat. </param>
<paramname="flags">[in] Flags that specify the behavior of the source voice. A flag can be 0 or a combination of one or more of the following: ValueDescriptionXAUDIO2_VOICE_NOPITCHNo pitch control is available on the voice.?XAUDIO2_VOICE_NOSRCNo sample rate conversion is available on the voice, the voice's outputs must have the same sample rate.Note The XAUDIO2_VOICE_NOSRC flag causes the voice to behave as though the XAUDIO2_VOICE_NOPITCH flag also is specified. ?XAUDIO2_VOICE_USEFILTERThe filter effect should be available on this voice.?XAUDIO2_VOICE_MUSICThe voice is used to play background music. The system automatically can replace the voice with music selected by the user.? </param>
<paramname="maxFrequencyRatio">[in] Highest allowable frequency ratio that can be set on this voice. The value for this argument must be between XAUDIO2_MIN_FREQ_RATIO and XAUDIO2_MAX_FREQ_RATIO. Subsequent calls to <seecref="M:SharpDX.XAudio2.SourceVoice.SetFrequencyRatio(System.Single,System.Int32)"/> are clamped between XAUDIO2_MIN_FREQ_RATIO and MaxFrequencyRatio. The maximum value for this argument is defined as XAUDIO2_MAX_FREQ_RATIO, which allows pitch to be raised by up to 10 octaves. If MaxFrequencyRatio is less than 1.0, the voice will use that ratio immediately after being created (rather than the default of 1.0). Xbox 360 For XMA voices there is an additional restriction on the MaxFrequencyRatio argument and the voice's sample rate. The product of these two numbers cannot exceed XAUDIO2_MAX_RATIO_TIMES_RATE_XMA_MONO for one-channel voices or XAUDIO2_MAX_RATIO_TIMES_RATE_XMA_MULTICHANNEL for voices with any other number of channels. If the value specified for MaxFrequencyRatio is too high for the specified format, the call to CreateSourceVoice fails and produces a debug message. Note XAudio2's memory usage can be reduced by using the lowest possible MaxFrequencyRatio value. </param>
<paramname="callback">[in, optional] Pointer to a client-provided callback interface, <seecref="T:SharpDX.XAudio2.VoiceCallback"/>. </param>
Creates and configures a source voice with callback through delegates.
</summary>
<paramname="device">an instance of <seecref="T:SharpDX.XAudio2.XAudio2"/></param>
<paramname="sourceFormat">[in] Pointer to a <seecref="T:SharpDX.Multimedia.WaveFormat"/> structure. This structure contains the expected format for all audio buffers submitted to the source voice. XAudio2 supports voice types of PCM, xWMA, ADPCM (Windows only), and XMA (Xbox 360 only). XAudio2 supports the following PCM formats. 8-bit (unsigned) integer PCM 16-bit integer PCM (Optimal format for XAudio2) 20-bit integer PCM (either in 24 or 32 bit containers) 24-bit integer PCM (either in 24 or 32 bit containers) 32-bit integer PCM 32-bit float PCM (Preferred format after 16-bit integer) The number of channels in a source voice must be less than or equal to XAUDIO2_MAX_AUDIO_CHANNELS. The sample rate of a source voice must be between XAUDIO2_MIN_SAMPLE_RATE and XAUDIO2_MAX_SAMPLE_RATE. Note Data formats such as XMA, {{ADPCM}}, and {{xWMA}} that require more information than provided by <seecref="T:SharpDX.Multimedia.WaveFormat"/> have a <seecref="T:SharpDX.Multimedia.WaveFormat"/> structure as the first member in their format structure. When creating a source voice with one of those formats cast the format's structure as a <seecref="T:SharpDX.Multimedia.WaveFormat"/> structure and use it as the value for pSourceFormat. </param>
<paramname="flags">[in] Flags that specify the behavior of the source voice. A flag can be 0 or a combination of one or more of the following: ValueDescriptionXAUDIO2_VOICE_NOPITCHNo pitch control is available on the voice.?XAUDIO2_VOICE_NOSRCNo sample rate conversion is available on the voice, the voice's outputs must have the same sample rate.Note The XAUDIO2_VOICE_NOSRC flag causes the voice to behave as though the XAUDIO2_VOICE_NOPITCH flag also is specified. ?XAUDIO2_VOICE_USEFILTERThe filter effect should be available on this voice.?XAUDIO2_VOICE_MUSICThe voice is used to play background music. The system automatically can replace the voice with music selected by the user.? </param>
<paramname="maxFrequencyRatio">[in] Highest allowable frequency ratio that can be set on this voice. The value for this argument must be between XAUDIO2_MIN_FREQ_RATIO and XAUDIO2_MAX_FREQ_RATIO. Subsequent calls to <seecref="M:SharpDX.XAudio2.SourceVoice.SetFrequencyRatio(System.Single,System.Int32)"/> are clamped between XAUDIO2_MIN_FREQ_RATIO and MaxFrequencyRatio. The maximum value for this argument is defined as XAUDIO2_MAX_FREQ_RATIO, which allows pitch to be raised by up to 10 octaves. If MaxFrequencyRatio is less than 1.0, the voice will use that ratio immediately after being created (rather than the default of 1.0). Xbox 360 For XMA voices there is an additional restriction on the MaxFrequencyRatio argument and the voice's sample rate. The product of these two numbers cannot exceed XAUDIO2_MAX_RATIO_TIMES_RATE_XMA_MONO for one-channel voices or XAUDIO2_MAX_RATIO_TIMES_RATE_XMA_MULTICHANNEL for voices with any other number of channels. If the value specified for MaxFrequencyRatio is too high for the specified format, the call to CreateSourceVoice fails and produces a debug message. Note XAudio2's memory usage can be reduced by using the lowest possible MaxFrequencyRatio value. </param>
<paramname="enableDelegateCallbacks">True to enable delegate callbacks on this instance. Default is false</param>
Starts consumption and processing of audio by the voice. Delivers the result to any connected submix or mastering voices, or to the output device, with CommitNow changes.
Starts consumption and processing of audio by the voice. Delivers the result to any connected submix or mastering voices, or to the output device.
</summary>
<paramname="operationSet">[in] Identifies this call as part of a deferred batch. See the {{XAudio2 Operation Sets}} overview for more information. </param>
<!-- Failed to insert some or all of included XML --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='IXAudio2SourceVoice::SubmitSourceBuffer']/*"/>
<p>Returns the voice's current cursor position data.</p>
</summary>
<remarks>
<p>If a client needs to obtain the correlated positions of several voices (i.e. to know exactly which sample of a given voice is playing when a given sample of another voice is playing) it must make <strong>GetState</strong> calls in an XAudio2 engine callback, to ensure that none of the voices advance while the calls are being made. See the XAudio2 Callbacks overview for information about using XAudio2 callbacks.</p>
</remarks>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='IXAudio2SourceVoice::GetState']/*"/>
Returns the frequency adjustment ratio of the voice.
</summary>
<remarks>
<p><strong>GetFrequencyRatio</strong> always returns the voice's actual current frequency ratio. However, this may not match the ratio set by the most recent <seecref="M:SharpDX.XAudio2.SourceVoice.SetFrequencyRatio(System.Single,System.Int32)"/> call: the actual ratio is only changed the next time the audio engine runs after the <seecref="M:SharpDX.XAudio2.SourceVoice.SetFrequencyRatio(System.Single,System.Int32)"/> call (or after the corresponding <seecref="M:SharpDX.XAudio2.XAudio2.CommitChanges(System.Int32)"/> call, if <seecref="M:SharpDX.XAudio2.SourceVoice.SetFrequencyRatio(System.Single,System.Int32)"/> was called with a deferred operation ID).</p><p>For information on frequency ratios, see <seecref="M:SharpDX.XAudio2.SourceVoice.SetFrequencyRatio(System.Single,System.Int32)"/>.</p>
</remarks>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='IXAudio2SourceVoice::GetFrequencyRatio']/*"/>
Reconfigures the voice to consume source data at a different sample rate than the rate specified when the voice was created.
</summary>
<remarks>
<p>The <strong>SetSourceSampleRate</strong> method supports reuse of XAudio2 voices by allowing a voice to play sounds with a variety of sample rates. To use <strong>SetSourceSampleRate</strong> the voice must have been created without the <seecref="F:SharpDX.XAudio2.VoiceFlags.NoPitch"/> or <seecref="F:SharpDX.XAudio2.VoiceFlags.NoSampleRateConversion"/> flags and must not have any buffers currently queued.</p><p>The typical use of <strong>SetSourceSampleRate</strong> is to support voice pooling. For example to support voice pooling an application would precreate all the voices it expects to use. Whenever a new sound will be played the application chooses an inactive voice or ,if all voices are busy, picks the least important voice and calls <strong>SetSourceSampleRate</strong> on the voice with the new sound's sample rate. After <strong>SetSourceSampleRate</strong> has been called on the voice, the application can immediately start submitting and playing buffers with the new sample rate. This allows the application to avoid the overhead of creating and destroying voices frequently during gameplay.</p>
</remarks>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='IXAudio2SourceVoice::SetSourceSampleRate']/*"/>
In order to use this delegate, this instance must have been intialized with events delegate support.
</remarks>
</member>
<membername="T:SharpDX.XAudio2.VoiceCallback">
<summary>
The<strong><seecref="T:SharpDX.XAudio2.VoiceCallback"/></strong>interface contains methods that notify the client when certain events happen in a givenIXAudio2SourceVoice. This interface should be implemented by the XAudio2 client. XAudio2 calls these methods through an interface reference provided by the client in theIXAudio2::CreateSourceVoicemethod. Methods in this interface return<strong>void</strong>, rather than an <seecref="T:SharpDX.Result"/>.<p>See the XAudio2 Callbacks topic for restrictions on callback implementation.</p>
</summary>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='IXAudio2VoiceCallback']/*"/>
Called during each processing pass for each voice, just before XAudio2 reads data from the voice's buffer queue.
</summary>
<paramname="bytesRequired"> The number of bytes that must be submitted immediately to avoid starvation. This allows the implementation of just-in-time streaming scenarios; the client can keep the absolute minimum data queued on the voice at all times, and pass it fresh data just before the data is required. This model provides the lowest possible latency attainable with XAudio2. For xWMA and XMA data BytesRequired will always be zero, since the concept of a frame of xWMA or XMA data is meaningless. Note In a situation where there is always plenty of data available on the source voice, BytesRequired should always report zero, because it doesn't need any samples immediately to avoid glitching. </param>
Called when the voice is about to start processing a new audio buffer.
</summary>
<paramname="context"> Context pointer that was assigned to the pContext member of the <seecref="T:SharpDX.XAudio2.AudioBuffer"/> structure when the buffer was submitted. </param>
Called when the voice finishes processing a buffer.
</summary>
<paramname="context"> Context pointer assigned to the pContext member of the <seecref="T:SharpDX.XAudio2.AudioBuffer"/> structure when the buffer was submitted. </param>
Called when the voice reaches the end position of a loop.
</summary>
<paramname="context"> Context pointer that was assigned to the pContext member of the <seecref="T:SharpDX.XAudio2.AudioBuffer"/> structure when the buffer was submitted. </param>
Called when a critical error occurs during voice processing.
</summary>
<paramname="context"> Context pointer that was assigned to the pContext member of the <seecref="T:SharpDX.XAudio2.AudioBuffer"/> structure when the buffer was submitted. </param>
<paramname="error"> The HRESULT code of the error encountered. </param>
A submix voice is used primarily for performance improvements and effects processing. Data buffers cannot be submitted directly to submix voices and will not be audible unless submitted to a mastering voice. A submix voice can be used to ensure that a particular set of voice data is converted to the same format and/or to have a particular effect chain processed on the collective result.<p><strong><seecref="T:SharpDX.XAudio2.SubmixVoice"/></strong> inherits directly from <seecref="T:SharpDX.XAudio2.Voice"/>, but does not implement methods specific to submix voices. The interface type exists solely because some of the base class methods are implemented differently for submix voices. Having a separate type for these voices helps client code to distinguish the different voice types and to benefit from C++ type safety.</p>
</summary>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='IXAudio2SubmixVoice']/*"/>
Performs an explicit conversion from <seecref="T:System.IntPtr"/> to <seecref="T:SharpDX.XAudio2.SubmixVoice"/>. (This method is a shortcut to <seecref="P:SharpDX.CppObject.NativePointer"/>)
Creates and configures a mastering voice on the default audio device and 44100Hz.
</summary>
<paramname="device">an instance of <seecref="T:SharpDX.XAudio2.XAudio2"/></param>
<paramname="inputChannels">[in] Number of channels the mastering voice expects in its input audio. InputChannels must be less than or equal to XAUDIO2_MAX_AUDIO_CHANNELS. InputChannels can be set to XAUDIO2_DEFAULT_CHANNELS, with the default being determined by the current platform. Windows Attempts to detect the system speaker configuration setup. Xbox 360 Defaults to 5.1 surround. </param>
Creates and configures a mastering voice on the default audio device.
</summary>
<paramname="device">an instance of <seecref="T:SharpDX.XAudio2.XAudio2"/></param>
<paramname="inputChannels">[in] Number of channels the mastering voice expects in its input audio. InputChannels must be less than or equal to XAUDIO2_MAX_AUDIO_CHANNELS. InputChannels can be set to XAUDIO2_DEFAULT_CHANNELS, with the default being determined by the current platform. Windows Attempts to detect the system speaker configuration setup. Xbox 360 Defaults to 5.1 surround. </param>
<paramname="inputSampleRate">[in] Sample rate of the input audio data of the mastering voice. This rate must be a multiple of XAUDIO2_QUANTUM_DENOMINATOR. InputSampleRate must be between XAUDIO2_MIN_SAMPLE_RATE and XAUDIO2_MAX_SAMPLE_RATE. InputSampleRate can be set to XAUDIO2_DEFAULT_SAMPLERATE, with the default being determined by the current platform. Windows Windows XP defaults to 44100. Windows Vista and Windows 7 default to the setting specified in the Sound Control Panel. The default for this setting is 44100 (or 48000 if required by the driver). Xbox 360 Defaults to 48000. </param>
<paramname="device">an instance of <seecref="T:SharpDX.XAudio2.XAudio2"/></param>
<paramname="inputChannels">[in] Number of channels in the input audio data of the submix voice. InputChannels must be less than or equal to XAUDIO2_MAX_AUDIO_CHANNELS. </param>
<paramname="inputSampleRate">[in] Sample rate of the input audio data of submix voice. This rate must be a multiple of XAUDIO2_QUANTUM_DENOMINATOR. InputSampleRate must be between XAUDIO2_MIN_SAMPLE_RATE and XAUDIO2_MAX_SAMPLE_RATE. </param>
<paramname="flags">[in] Flags that specify the behavior of the submix voice. Can be 0 or the following: ValueDescriptionXAUDIO2_VOICE_USEFILTERThe filter effect should be available on this voice.? </param>
<paramname="processingStage">[in] An arbitrary number that specifies when this voice is processed with respect to other submix voices, if the XAudio2 engine is running other submix voices. The voice is processed after all other voices that include a smaller ProcessingStage value, and before all other voices that include a larger ProcessingStage value. Voices that include the same ProcessingStage value are processed in any order. A submix voice cannot send to another submix voice with a lower or equal ProcessingStage value; this prevents audio being lost due to a submix cycle. </param>
<seecref="T:SharpDX.XAudio2.XAudio2"/> is the interface for the<strong>XAudio2</strong>object that manages all audio engine states, the audio processing thread, the voice graph, and so forth. This is the only XAudio2 interface that is derived from the COM<strong><seecref="T:SharpDX.ComObject"/></strong>interface. It controls the lifetime of the<strong>XAudio2</strong>object using two methods derived from<strong><seecref="T:SharpDX.ComObject"/></strong>:IXAudio2::AddRefandIXAudio2::Release. No other XAudio2 objects are reference-counted. Their lifetimes are explicitly controlled using<em>create</em>and<em>destroy</em>calls, and are bounded by the lifetime of the XAudio2 object that owns them.
</summary>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='IXAudio2']/*"/>
Performs an explicit conversion from <seecref="T:System.IntPtr"/> to <seecref="T:SharpDX.XAudio2.XAudio2"/>. (This method is a shortcut to <seecref="P:SharpDX.CppObject.NativePointer"/>)
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='IXAudio2::GetDeviceCount']/*"/>
<p>Returns information about an audio output device.</p>
</summary>
<paramname="index"><dd>[in] Index of the device to be queried. This value must be less than the count returned by <seecref="M:SharpDX.XAudio2.XAudio2.GetDeviceCount(System.Int32@)"/>. </dd></param>
<paramname="deviceDetailsRef"><dd>[out] On success, reference to an <seecref="T:SharpDX.XAudio2.DeviceDetails"/> structure that is returned. </dd></param>
<returns><p>Returns <seecref="F:SharpDX.Result.Ok"/> if successful, an error code otherwise. See XAudio2 Error Codes for descriptions of XAudio2 specific error codes.</p></returns>
<remarks>
<p><strong>GetDeviceDetails</strong> and <seecref="M:SharpDX.XAudio2.XAudio2.GetDeviceCount(System.Int32@)"/> are the only <seecref="T:SharpDX.XAudio2.XAudio2"/> methods that may be called before calling <seecref="M:SharpDX.XAudio2.XAudio2.Initialize(System.Int32,SharpDX.XAudio2.ProcessorSpecifier)"/>.</p>
</remarks>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='IXAudio2::GetDeviceDetails']/*"/>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='IXAudio2::Initialize']/*"/>
<unmanaged>HRESULT IXAudio2::Initialize([In] unsigned int Flags,[In] XAUDIO2_WINDOWS_PROCESSOR_SPECIFIER XAudio2Processor)</unmanaged>
<returns><p>Returns <seecref="F:SharpDX.Result.Ok"/> if successful, an error code otherwise. See XAudio2 Error Codes for descriptions of XAudio2 specific error codes.</p></returns>
<remarks>
<p>This method can be called multiple times, allowing different components or layers of the same application to manage their own engine callback implementations separately.</p><p>It is illegal to call <strong>RegisterForCallbacks</strong> from within a callback. If <strong>RegisterForCallbacks</strong> is called within a callback XAUDIO2_E_INVALID_CALL will be returned.</p>
</remarks>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='IXAudio2::RegisterForCallbacks']/*"/>
<p>It is illegal to call <strong>UnregisterForCallbacks</strong> from within a callback. If <strong>UnregisterForCallbacks</strong> is called within a callback XAUDIO2_E_INVALID_CALL will be returned.</p>
</remarks>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='IXAudio2::UnregisterForCallbacks']/*"/>
<paramname="sourceVoiceOut"><dd>[out] If successful, returns a reference to the new <seecref="T:SharpDX.XAudio2.SourceVoice"/> object. </dd></param>
<paramname="sourceFormatRef"><dd>[in] Pointer to a <strong><seecref="T:SharpDX.Multimedia.WaveFormat"/></strong> structure. This structure contains the expected format for all audio buffers submitted to the source voice. <p>XAudio2 supports PCM and ADPCM voice types. XAudio2 supports the following PCM formats.</p><ul><li><p>8-bit (unsigned) integer PCM</p></li><li><p>16-bit integer PCM (optimal format for XAudio2)</p></li><li><p>20-bit integer PCM (either in 24 or 32 bit containers)</p></li><li><p>24-bit integer PCM (either in 24 or 32 bit containers)</p></li><li><p>32-bit integer PCM</p></li><li><p>32-bit float PCM (preferred format after 16-bit integer)</p></li></ul><p>The number of channels in a source voice must be less than or equal to <seecref="F:SharpDX.XAudio2.XAudio2.MaximumAudioChannels"/>. The sample rate of a source voice must be between <seecref="F:SharpDX.XAudio2.XAudio2.MinimumSampleRate"/> and <seecref="F:SharpDX.XAudio2.XAudio2.MaximumSampleRate"/>.</p><table><tr><th>Note </th></tr><tr><td>Data formats such as ADPCM that require more information than provided by <strong><seecref="T:SharpDX.Multimedia.WaveFormat"/></strong> have a <strong><seecref="T:SharpDX.Multimedia.WaveFormat"/></strong> structure as the first member in their format structures. When you create a source voice with one of those formats, cast the format's structure as a <strong><seecref="T:SharpDX.Multimedia.WaveFormat"/></strong> structure and use it as the value for <em>pSourceFormat</em>.</td></tr></table></dd></param>
<paramname="flags"><dd>[in] Flags that specify the behavior of the source voice. A flag can be 0 or a combination of one or more of the following: <table><tr><th>Value</th><th>Description</th></tr><tr><td><seecref="F:SharpDX.XAudio2.VoiceFlags.NoPitch"/></td><td>No pitch control is available on the voice.?</td></tr><tr><td><seecref="F:SharpDX.XAudio2.VoiceFlags.NoSampleRateConversion"/></td><td>No sample rate conversion is available on the voice. The voice's outputs must have the same sample rate. Note The <seecref="F:SharpDX.XAudio2.VoiceFlags.NoSampleRateConversion"/> flag causes the voice to behave as though the <seecref="F:SharpDX.XAudio2.VoiceFlags.NoPitch"/> flag also is specified. ?</td></tr><tr><td><seecref="F:SharpDX.XAudio2.VoiceSendFlags.UseFilter"/></td><td>The filter effect should be available on this voice.?</td></tr></table></dd></param>
<paramname="maxFrequencyRatio"><dd>[in] Highest allowable frequency ratio that can be set on this voice. The value for this argument must be between <seecref="F:SharpDX.XAudio2.XAudio2.MinimumFrequencyRatio"/> and <seecref="F:SharpDX.XAudio2.XAudio2.MaximumFrequencyRatio"/>. Subsequent calls to <seecref="M:SharpDX.XAudio2.SourceVoice.SetFrequencyRatio(System.Single,System.Int32)"/> are clamped between <seecref="F:SharpDX.XAudio2.XAudio2.MinimumFrequencyRatio"/> and <strong>MaxFrequencyRatio</strong>. <p>The maximum value for this argument is defined as <seecref="F:SharpDX.XAudio2.XAudio2.MaximumFrequencyRatio"/>, which allows pitch to be raised by up to 10 octaves.</p><p>If <em>MaxFrequencyRatio</em> is less than 1.0, the voice will use that ratio immediately after being created (rather than the default of 1.0).</p><table><tr><th>Xbox 360 </th></tr><tr><td><p>For XMA voices, there is one more restriction on the <em>MaxFrequencyRatio</em> argument and the voice's sample rate. The product of these two numbers cannot exceed XAUDIO2_MAX_RATIO_TIMES_RATE_XMA_MONO for one-channel voices or XAUDIO2_MAX_RATIO_TIMES_RATE_XMA_MULTICHANNEL for voices with any other number of channels. If the value specified for <em>MaxFrequencyRatio</em> is too high for the specified format, the call to <strong>CreateSourceVoice</strong> fails and produces a debug message.</p></td></tr></table><table><tr><th>Note </th></tr><tr><td> You can use the lowest possible <em>MaxFrequencyRatio</em> value to reduce XAudio2's memory usage.</td></tr></table></dd></param>
<paramname="callbackRef"><dd>[in, optional] Pointer to a client-provided callback interface, <seecref="T:SharpDX.XAudio2.VoiceCallback"/>. </dd></param>
<paramname="sendListRef"><dd>[in, optional] Pointer to a list of <seecref="T:SharpDX.XAudio2.VoiceSendDescriptors"/> structures that describe the set of destination voices for the source voice. If <em>pSendList</em> is <c>null</c>, the send list defaults to a single output to the first mastering voice created. </dd></param>
<paramname="effectChainRef"><dd>[in, optional] Pointer to a list of <seecref="T:SharpDX.XAudio2.EffectChain"/> structures that describe an effect chain to use in the source voice. </dd></param>
<returns><p> Returns <seecref="F:SharpDX.Result.Ok"/> if successful; otherwise, an error code. </p><p> See XAudio2 Error Codes for descriptions of XAudio2-specific error codes.</p></returns>
<remarks>
<p>Source voices read audio data from the client. They process the data and send it to the XAudio2 processing graph.</p><p>A source voice includes a variable-rate sample rate conversion, to convert data from the source format sample rate to the output rate required for the voice send list. If you use a <c>null</c> send list, the target sample rate will be the mastering voice's input sample rate. If you provide a single voice in <em>pSendList</em>, that voice's input sample rate is the target rate. If you provide multiple voices in the <em>pSendList</em>, all the source voice's output voices must be running at the same input sample rate.</p><p>You cannot create any source or submix voices until a mastering voice exists, and you cannot destory a mastering voice if any source or submix voices still exist.</p><p>Source voices are always processed before any submix or mastering voices. This means that you do not need a <em>ProcessingStage</em> parameter to control the processing order.</p><p>When first created, source voices are in the stopped state.</p><p>XAudio2 uses an internal memory pooler for voices with the same format. This means memory allocation for voices will occur less frequently as more voices are created and then destroyed. To minimize just-in-time allocations, a title can create the anticipated maximum number of voices needed up front, and then delete them as necessary. Voices will then be reused from the XAudio2 pool. The memory pool is tied to an XAudio2 engine instance. You can reclaim all the memory used by an instance of the XAudio2 engine by destroying the XAudio2 object and recreating it as necessary (forcing the memory pool to grow via preallocation would have to be reapplied as needed).</p><p>It is illegal to call <strong>CreateSourceVoice</strong> from within a callback. If you call <strong>CreateSourceVoice</strong> within a callback, XAUDIO2_E_INVALID_CALL is returned.</p><p>The <seecref="T:SharpDX.XAudio2.EffectChain"/> that is passed in as the <em>pEffectChain</em> argument and any <seecref="T:SharpDX.XAudio2.EffectDescriptor"/> information contained within it are no longer needed after <strong>CreateSourceVoice</strong> successfully completes, and may be deleted immediately after <strong>CreateSourceVoice</strong> is called.</p>
</remarks>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='IXAudio2::CreateSourceVoice']/*"/>
<paramname="submixVoiceOut"><dd>[out] On success, returns a reference to the new <seecref="T:SharpDX.XAudio2.SubmixVoice"/> object. </dd></param>
<paramname="inputChannels"><dd>[in] Number of channels in the input audio data of the submix voice. <p><em>InputChannels</em> must be less than or equal to <seecref="F:SharpDX.XAudio2.XAudio2.MaximumAudioChannels"/>.</p></dd></param>
<paramname="inputSampleRate"><dd>[in] Sample rate of the input audio data of submix voice. This rate must be a multiple of XAUDIO2_QUANTUM_DENOMINATOR. <em>InputSampleRate</em> must be between <seecref="F:SharpDX.XAudio2.XAudio2.MinimumSampleRate"/> and <seecref="F:SharpDX.XAudio2.XAudio2.MaximumSampleRate"/>. </dd></param>
<paramname="flags"><dd>[in] Flags that specify the behavior of the submix voice. It can be 0 or the following: <table><tr><th>Value</th><th>Description</th></tr><tr><td><seecref="F:SharpDX.XAudio2.VoiceSendFlags.UseFilter"/></td><td>The filter effect should be available on this voice.?</td></tr></table></dd></param>
<paramname="processingStage"><dd>[in] An arbitrary number that specifies when this voice is processed with respect to other submix voices, if the XAudio2 engine is running other submix voices. The voice is processed after all other voices that include a smaller <em>ProcessingStage</em> value and before all other voices that include a larger <em>ProcessingStage</em> value. Voices that include the same <em>ProcessingStage</em> value are processed in any order. A submix voice cannot send to another submix voice with a lower or equal <em>ProcessingStage</em> value. This prevents audio being lost due to a submix cycle. </dd></param>
<paramname="sendListRef"><dd>[in, optional] Pointer to a list of <seecref="T:SharpDX.XAudio2.VoiceSendDescriptors"/> structures that describe the set of destination voices for the submix voice. If <em>pSendList</em> is <c>null</c>, the send list will default to a single output to the first mastering voice created. </dd></param>
<paramname="effectChainRef"><dd>[in, optional] Pointer to a list of <seecref="T:SharpDX.XAudio2.EffectChain"/> structures that describe an effect chain to use in the submix voice. </dd></param>
<returns><p> Returns <seecref="F:SharpDX.Result.Ok"/> if successful; otherwise, an error code. </p><p> See XAudio2 Error Codes for descriptions of XAudio2 specific error codes.</p></returns>
<remarks>
<p>Submix voices receive the output of one or more source or submix voices. They process the output, and then send it to another submix voice or to a mastering voice.</p><p>A submix voice performs a sample rate conversion from the input sample rate to the input rate of its output voices in <em>pSendList</em>. If you specify multiple voice sends, they must all have the input same sample rate.</p><p>You cannot create any source or submix voices until a mastering voice exists, and you cannot destroy a mastering voice if any source or submix voices still exist.</p><p>When first created, submix voices are in the started state.</p><p>XAudio2 uses an internal memory pooler for voices with the same format. This means that memory allocation for voices will occur less frequently as more voices are created and then destroyed. To minimize just-in-time allocations, a title can create the anticipated maximum number of voices needed up front, and then delete them as necessary. Voices will then be reused from the XAudio2 pool. The memory pool is tied to an XAudio2 engine instance. You can reclaim all the memory used by an instance of the XAudio2 engine by destroying the XAudio2 object and recreating it as necessary (forcing the memory pool to grow via preallocation would have to be reapplied as needed).</p><p>It is illegal to call <strong>CreateSubmixVoice</strong> from within a callback. If you call <strong>CreateSubmixVoice</strong> within a callback, XAUDIO2_E_INVALID_CALL is returned.</p><p>The <seecref="T:SharpDX.XAudio2.EffectChain"/> that is passed in as the <em>pEffectChain</em> argument and any <seecref="T:SharpDX.XAudio2.EffectDescriptor"/> information contained within it are no longer needed after <strong>CreateSubmixVoice</strong> successfully completes, and may be deleted immediately after <strong>CreateSubmixVoice</strong> is called.</p>
</remarks>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='IXAudio2::CreateSubmixVoice']/*"/>
<paramname="masteringVoiceOut"><dd>[out] If successful, returns a reference to the new <seecref="T:SharpDX.XAudio2.MasteringVoice"/> object. </dd></param>
<paramname="inputChannels"><dd>[in] Number of channels the mastering voice expects in its input audio. <p><em>InputChannels</em> must be less than or equal to <seecref="F:SharpDX.XAudio2.XAudio2.MaximumAudioChannels"/>.</p><p><em>InputChannels</em> can be set to <seecref="F:SharpDX.XAudio2.XAudio2.DefaultChannels"/>, with the default being determined by the current platform.</p><table><tr><th>Windows </th></tr><tr><td><p>Attempts to detect the system speaker configuration setup.</p></td></tr></table><table><tr><th>Xbox 360 </th></tr><tr><td><p>Defaults to 5.1 surround.</p></td></tr></table></dd></param>
<paramname="inputSampleRate"><dd>[in] Sample rate of the input audio data of the mastering voice. This rate must be a multiple of XAUDIO2_QUANTUM_DENOMINATOR. <p><em>InputSampleRate</em> must be between <seecref="F:SharpDX.XAudio2.XAudio2.MinimumSampleRate"/> and <seecref="F:SharpDX.XAudio2.XAudio2.MaximumSampleRate"/>.</p><p><em>InputSampleRate</em> can be set to <seecref="F:SharpDX.XAudio2.XAudio2.DefaultSampleRate"/>, with the default being determined by the current platform.</p><table><tr><th>Windows </th></tr><tr><td><p>Windows XP defaults to 44100.</p><p>Windows Vista and Windows 7 default to the setting specified in the Sound Control Panel. The default for this setting is 44100 (or 48000 if required by the driver).</p></td></tr></table><table><tr><th>Xbox 360 </th></tr><tr><td><p>Defaults to 48000.</p></td></tr></table></dd></param>
<paramname="flags"><dd>[in] Flags that specify the behavior of the mastering voice. Must be 0. </dd></param>
<paramname="deviceIndex"><dd>[in] Index of the output device that will be sent input by the mastering voice. Specifying the default value of 0 causes XAudio2 to select the global default audio device. </dd></param>
<paramname="effectChainRef"><dd>[in, optional] Pointer to an <seecref="T:SharpDX.XAudio2.EffectChain"/> structure that describe an effect chain to use in the mastering voice, or <c>null</c> to use no effects. </dd></param>
<returns><p>Returns <seecref="F:SharpDX.Result.Ok"/> if successful, an error code otherwise. See XAudio2 Error Codes for descriptions of XAudio2 specific error codes.</p></returns>
<p>Mastering voices receive the output of one or more source or submix voices. They process the data and send it to the audio output device.</p><p>Typically, a mastering voice should be created with an input sample rate that will be used by the majority of the title's audio content. The mastering voice performs a sample rate conversion from this input sample rate to the actual device output rate. Alternatively, <seecref="M:SharpDX.XAudio2.XAudio2.GetDeviceDetails(System.Int32,SharpDX.XAudio2.DeviceDetails@)"/> can be used to find the native audio rate, and that can be used throughout the majority of the title's audio graph.</p><p>No source or submix voices can be created until a mastering voice exists, and a mastering voice cannot be destroyed if any source or submix voices still exist.</p><p>Mastering voices are always processed after all source and submix voices. This means that you need not specify a <em>ProcessingStage</em> parameter to control the processing order.</p><p>Several mastering voices can exist at once, but only one of them can be started. Only one device can be used by XAudio2 at a time.</p><p>When first created, mastering voices are in the started state.</p><p>It is illegal to call <strong>CreateMasteringVoice</strong> from within a callback. If <strong>CreateMasteringVoice</strong> is called within a callback XAUDIO2_E_INVALID_CALL will be returned.</p>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='IXAudio2::CreateMasteringVoice']/*"/>
<returns><p>Returns <seecref="F:SharpDX.Result.Ok"/> if successful, an error code otherwise. See XAudio2 Error Codes for descriptions of XAudio2 specific error codes.</p></returns>
<remarks>
<p>After <strong>StartEngine</strong> is called, all started voices begin to consume audio. All enabled effects start running, and the resulting audio is sent to any connected output devices. When XAudio2 is first initialized, the engine is already in the started state.</p><p>It is illegal to call <strong>StartEngine</strong> from within a callback. If <strong>StartEngine</strong> is called within a callback XAUDIO2_E_INVALID_CALL will be returned.</p>
</remarks>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='IXAudio2::StartEngine']/*"/>
<p>When <strong>StopEngine</strong> is called, all output is stopped immediately. However, the audio graph is left untouched, preserving effect parameters, effect histories (for example, the data stored by a reverb effect in order to emit echoes of a previous sound), voice states, pending source buffers, cursor positions, and so forth. When the engine is restarted, the resulting audio output will be identical?apart from a period of silence?to the output that would have been produced if the engine had never been stopped.</p><p>It is illegal to call <strong>StopEngine</strong> from within a callback. If <strong>StopEngine</strong> is called within a callback XAUDIO2_E_INVALID_CALL will be returned.</p>
</remarks>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='IXAudio2::StopEngine']/*"/>
Atomically applies a set of operations that are tagged with a given identifier.
</summary>
<paramname="operationSet"><dd>[in] Identifier of the set of operations to be applied. To commit all pending operations, pass <strong><seecref="F:SharpDX.XAudio2.XAudio2.CommitAll"/></strong>. </dd></param>
<returns><p>Returns <seecref="F:SharpDX.Result.Ok"/> if successful; returns an error code otherwise. See XAudio2 Error Codes for descriptions of XAudio2 specific error codes.</p></returns>
<remarks>
<p><strong>CommitChanges</strong> does nothing if no operations are tagged with the given identifier.</p><p>See the XAudio2 Operation Sets overview about working with <strong>CommitChanges</strong> and XAudio2 interface methods that may be deferred.</p>
</remarks>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='IXAudio2::CommitChanges']/*"/>
Returns current resource usage details, such as available memory or CPU usage.
</summary>
<paramname="perfDataRef"><dd>[out] On success, reference to an <seecref="T:SharpDX.XAudio2.PerformanceData"/> structure that is returned. </dd></param>
<remarks>
<p>For specific information on the statistics returned by <strong>GetPerformanceData</strong>, see the <seecref="T:SharpDX.XAudio2.PerformanceData"/> structure reference.</p>
</remarks>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='IXAudio2::GetPerformanceData']/*"/>
Changes global debug logging options for XAudio2.<table><tr><th>Note </th></tr><tr><td>This function has no effect in this version of XAudio2.</td></tr></table>
</summary>
<paramname="debugConfigurationRef"><dd> Pointer to a <seecref="T:SharpDX.XAudio2.DebugConfiguration"/> structure that contains the new debug configuration. </dd></param>
<p>This function only has an effect in debug versions of the XAudio2 library. <strong>SetDebugConfiguration</strong> sets the debug configuration for all instances of XAudio2 in the current process, not just the one interface on which the call was made.</p><p>The default debug level produces only ERROR and WARNING messages. See <seecref="T:SharpDX.XAudio2.DebugConfiguration"/> for other debug levels.</p>
</remarks>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='IXAudio2::SetDebugConfiguration']/*"/>
<paramname="index">[in] Index of the device to be queried. This value must be less than the count returned by <seecref="M:SharpDX.XAudio2.XAudio2.GetDeviceCount(System.Int32@)"/>. </param>
<returns>On success, pointer to an <seecref="T:SharpDX.XAudio2.DeviceDetails"/> structure that is returned. </returns>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='IXAudio2::GetDeviceCount']/*"/>
Returns current resource usage details, such as available memory or CPU usage.
</summary>
<remarks>
<p>For specific information on the statistics returned by <strong>GetPerformanceData</strong>, see the <seecref="T:SharpDX.XAudio2.PerformanceData"/> structure reference.</p>
</remarks>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='IXAudio2::GetPerformanceData']/*"/>
Called if a critical system error occurs that requires XAudio2 to be closed down and restarted.
</summary>
</member>
<membername="T:SharpDX.XAudio2.BufferWma">
<summary>
Used withIXAudio2SourceVoice::SubmitSourceBufferwhen submitting xWMA data.
</summary>
<remarks>
<p>When streaming an xWMA file a few packets at a time, <seecref="F:SharpDX.XAudio2.BufferFlags.EndOfStream"/> should be specified on the last packet. Alternatively, the application may call <seecref="M:SharpDX.XAudio2.SourceVoice.Discontinuity"/> after submitting the last packet.</p><p>In addition, when streaming an xWMA file a few packets at a time, the application should subtract <strong>pDecodedPacketCumulativeBytes</strong>[<strong>PacketCount</strong>-1] of the previous packet from all the entries of the currently submitted packet.</p><p>The members of <strong><seecref="T:SharpDX.XAudio2.BufferWma"/></strong> correspond to values contained in the 'dpds' RIFF chunk of the xWMA file being played. <strong>PacketCount</strong> will correspond to the size in UINT32s of the chunk. <strong>pDecodedPacketCumulativeBytes</strong> will correspond to a UINT32 buffer containing the contents of the chunk. The contents of the buffer will need to be byte swapped when loading the buffer on Xbox 360.</p><p>Memory allocated to hold a <seecref="T:SharpDX.XAudio2.AudioBuffer"/> or <seecref="T:SharpDX.XAudio2.BufferWma"/> structure can be freed as soon as the <seecref="M:SharpDX.XAudio2.SourceVoice.SubmitSourceBuffer(SharpDX.XAudio2.AudioBuffer,System.IntPtr)"/> call it is passed to returns. The data the structure points to (<strong>pAudioData</strong> and <strong>pDecodedPacketCumulativeBytes</strong>, respectively) can't be freed until the buffer completes (as signaled by the <seecref="M:SharpDX.XAudio2.VoiceCallback.OnBufferEnd(System.IntPtr)"/> callback) or the voice is stopped and destroyed.</p>
</remarks>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='XAUDIO2_BUFFER_WMA']/*"/>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='XAUDIO2_BUFFER_WMA::pDecodedPacketCumulativeBytes']/*"/>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='XAUDIO2_BUFFER_WMA::PacketCount']/*"/>
<unmanaged>unsigned int PacketCount</unmanaged>
<unmanaged-short>unsigned int PacketCount</unmanaged-short>
Contains the new global debug configuration for XAudio2. Used with theSetDebugConfigurationfunction.
</summary>
<remarks>
<p>Debugging messages can be completely turned off by initializing <strong><seecref="T:SharpDX.XAudio2.DebugConfiguration"/></strong> to all zeroes.</p>
</remarks>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='XAUDIO2_DEBUG_CONFIGURATION']/*"/>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='XAUDIO2_DEBUG_CONFIGURATION::TraceMask']/*"/>
<unmanaged>unsigned int TraceMask</unmanaged>
<unmanaged-short>unsigned int TraceMask</unmanaged-short>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='XAUDIO2_DEBUG_CONFIGURATION::BreakMask']/*"/>
<unmanaged>unsigned int BreakMask</unmanaged>
<unmanaged-short>unsigned int BreakMask</unmanaged-short>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='XAUDIO2_DEBUG_CONFIGURATION::LogThreadID']/*"/>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='XAUDIO2_DEBUG_CONFIGURATION::LogFileline']/*"/>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='XAUDIO2_DEBUG_CONFIGURATION::LogFunctionName']/*"/>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='XAUDIO2_DEBUG_CONFIGURATION::LogTiming']/*"/>
<p>Provides information about an audio device.</p>
</summary>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='XAUDIO2_DEVICE_DETAILS']/*"/>
<dd> String identifier for the audio device. </dd>
</summary>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='XAUDIO2_DEVICE_DETAILS::DeviceID']/*"/>
<dd> Friendly name, which is suitable for display to the user. </dd>
</summary>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='XAUDIO2_DEVICE_DETAILS::DisplayName']/*"/>
<dd> Roles are assigned by the user, and specify which audio scenarios use the device as a default device. See the <seecref="T:SharpDX.XAudio2.DeviceRole"/> enumeration for details. </dd>
</summary>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='XAUDIO2_DEVICE_DETAILS::Role']/*"/>
<dd><seecref="T:SharpDX.Multimedia.WaveFormatExtensible"/> structure that describes the device's native PCM audio format. </dd>
</summary>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='XAUDIO2_DEVICE_DETAILS::OutputFormat']/*"/>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='XAUDIO2_EFFECT_CHAIN']/*"/>
<dd> Number of effects in the effect chain for the voice. </dd>
</summary>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='XAUDIO2_EFFECT_CHAIN::EffectCount']/*"/>
<msdn-id>ee419235</msdn-id>
<unmanaged>unsigned int EffectCount</unmanaged>
<unmanaged-short>unsigned int EffectCount</unmanaged-short>
<dd> Array of <seecref="T:SharpDX.XAudio2.EffectDescriptor"/> structures containing references to XAPO instances. </dd>
</summary>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='XAUDIO2_EFFECT_CHAIN::pEffectDescriptors']/*"/>
<p>Setting <strong><seecref="T:SharpDX.XAudio2.FilterParameters"/></strong> with the following values is acoustically equivalent to the filter being fully bypassed.</p><pre><seecref="T:SharpDX.XAudio2.FilterParameters"/> FilterParams; FilterParams.Frequency = 1.0f; FilterParams.OneOverQ = 1.0f; FilterParams.Type = LowPassFilter; </pre><p>The following formulas show the relationship between the members of <strong><seecref="T:SharpDX.XAudio2.FilterParameters"/></strong> and the per-voice filter.</p><pre> Yl( n ) = F1 yb( n ) + yl( n - 1 )
Yb( n ) = F1 yh( n ) + yb( n - 1 )
Yh( n ) = x( n ) - yl( n ) - OneOverQ(yb( n - 1 )
Yn( n ) = Yl(n) + Yh(n)
</pre><p>Where:</p><pre> Yl = lowpass output
Yb = bandpass output
Yh = highpass output
Yn = notch output
F1 = <seecref="T:SharpDX.XAudio2.FilterParameters"/>.Frequency
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='XAUDIO2_FILTER_PARAMETERS']/*"/>
<dd> An <seecref="T:SharpDX.XAudio2.FilterType"/> indicating whether the filter is low pass, band pass, high pass, or notch. </dd>
</summary>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='XAUDIO2_FILTER_PARAMETERS::Type']/*"/>
<dd> Filter radian frequency calculated as (2 * sin(pi * (desired filter cutoff frequency) / sampleRate)). The frequency must be greater than or equal to 0 and less than or equal to <seecref="F:SharpDX.XAudio2.XAudio2.MaximumFilterFrequency"/>. The maximum frequency allowable is equal to the source sound's sample rate divided by six which corresponds to the maximum filter radian frequency of 1. For example, if a sound's sample rate is 48000 and the desired cutoff frequency is the maximum allowable value for that sample rate, 8000, the value for <strong>Frequency</strong> will be 1. <p>If XAUDIO2_HELPER_FUNCTIONS is defined, XAudio2.h will include the XAudio2RadiansToCutoffFrequency and XAudio2CutoffFrequencyToRadians helper functions for converting between hertz and radian frequencies.</p></dd>
</summary>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='XAUDIO2_FILTER_PARAMETERS::Frequency']/*"/>
<dd> Reciprocal of Q factor. Controls how quickly frequencies beyond <em>Frequency</em> are dampened. Larger values result in quicker dampening while smaller values cause dampening to occur more gradually. Must be greater than 0 and less than or equal to <seecref="F:SharpDX.XAudio2.XAudio2.MaximumFilterOneOverQ"/>. </dd>
</summary>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='XAUDIO2_FILTER_PARAMETERS::OneOverQ']/*"/>
<msdn-id>ee419237</msdn-id>
<unmanaged>float OneOverQ</unmanaged>
<unmanaged-short>float OneOverQ</unmanaged-short>
</member>
<membername="T:SharpDX.XAudio2.PerformanceData">
<summary>
Contains performance information.
</summary>
<remarks>
<p>CPU cycles are recorded using . Use to convert these values.</p>
</remarks>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='XAUDIO2_PERFORMANCE_DATA']/*"/>
<dd> CPU cycles spent on audio processing since the last call to the <seecref="M:SharpDX.XAudio2.XAudio2.StartEngine"/> or <seecref="M:SharpDX.XAudio2.XAudio2.GetPerformanceData(SharpDX.XAudio2.PerformanceData@)"/> function. </dd>
</summary>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='XAUDIO2_PERFORMANCE_DATA::AudioCyclesSinceLastQuery']/*"/>
<dd> Total CPU cycles elapsed since the last call. <table><tr><th>Note </th></tr><tr><td>This only counts cycles on the CPU on which XAudio2 is running.</td></tr></table></dd>
</summary>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='XAUDIO2_PERFORMANCE_DATA::TotalCyclesSinceLastQuery']/*"/>
<dd> Fewest CPU cycles spent on processing any single audio quantum since the last call. </dd>
</summary>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='XAUDIO2_PERFORMANCE_DATA::MinimumCyclesPerQuantum']/*"/>
<dd> Most CPU cycles spent on processing any single audio quantum since the last call. </dd>
</summary>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='XAUDIO2_PERFORMANCE_DATA::MaximumCyclesPerQuantum']/*"/>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='XAUDIO2_PERFORMANCE_DATA::MemoryUsageInBytes']/*"/>
<dd> Minimum delay that occurs between the time a sample is read from a source buffer and the time it reaches the speakers. <table><tr><th>Windows </th></tr><tr><td><p>The delay reported is a variable value equal to the rough distance between the last sample submitted to the driver by XAudio2 and the sample currently playing. The following factors can affect the delay: playing multichannel audio on a hardware-accelerated device; the type of audio device (WavePci, WaveCyclic, or WaveRT); and, to a lesser extent, audio hardware implementation.</p></td></tr></table><table><tr><th>Xbox 360 </th></tr><tr><td><p>The delay reported is a fixed value, which is normally 1,024 samples (21.333 ms at 48 kHz). If <strong>XOverrideSpeakerConfig</strong> has been called using the <strong>XAUDIOSPEAKERCONFIG_LOW_LATENCY</strong> flag, the delay reported is 512 samples (10.667 ms at 48 kHz).</p></td></tr></table></dd>
</summary>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='XAUDIO2_PERFORMANCE_DATA::CurrentLatencyInSamples']/*"/>
<dd> Total audio dropouts since the engine started. </dd>
</summary>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='XAUDIO2_PERFORMANCE_DATA::GlitchesSinceEngineStarted']/*"/>
<dd> Number of source voices currently playing. </dd>
</summary>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='XAUDIO2_PERFORMANCE_DATA::ActiveSourceVoiceCount']/*"/>
<dd> Total number of source voices currently in existence. </dd>
</summary>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='XAUDIO2_PERFORMANCE_DATA::TotalSourceVoiceCount']/*"/>
<dd> Number of submix voices currently playing. </dd>
</summary>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='XAUDIO2_PERFORMANCE_DATA::ActiveSubmixVoiceCount']/*"/>
<dd> Number of resampler xAPOs currently active. </dd>
</summary>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='XAUDIO2_PERFORMANCE_DATA::ActiveResamplerCount']/*"/>
<dd> Number of matrix mix xAPOs currently active. </dd>
</summary>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='XAUDIO2_PERFORMANCE_DATA::ActiveMatrixMixCount']/*"/>
<dd><table><tr><th>Windows </th></tr><tr><td><p>Unsupported.</p></td></tr></table><table><tr><th>Xbox 360 </th></tr><tr><td><p>Number of source voices decoding XMA data.</p></td></tr></table></dd>
</summary>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='XAUDIO2_PERFORMANCE_DATA::ActiveXmaSourceVoices']/*"/>
<dd><table><tr><th>Windows </th></tr><tr><td><p>Unsupported.</p></td></tr></table><table><tr><th>Xbox 360 </th></tr><tr><td><p>A voice can use more than one XMA stream.</p></td></tr></table></dd>
</summary>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='XAUDIO2_PERFORMANCE_DATA::ActiveXmaStreams']/*"/>
<unmanaged>unsigned int ActiveXmaStreams</unmanaged>
<unmanaged-short>unsigned int ActiveXmaStreams</unmanaged-short>
</member>
<membername="T:SharpDX.XAudio2.VoiceDetails">
<summary>
Contains information about the creation flags, input channels, and sample rate of a voice.
</summary>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='XAUDIO2_VOICE_DETAILS']/*"/>
<dd> Flags used to create the voice; see the individual voice interfaces for more information. </dd>
</summary>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='XAUDIO2_VOICE_DETAILS::CreationFlags']/*"/>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='XAUDIO2_VOICE_DETAILS::InputChannels']/*"/>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='XAUDIO2_VOICE_DETAILS::InputSampleRate']/*"/>
Defines a destination voice that is the target of a send from another voice and specifies whether a filter should be used.
</summary>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='XAUDIO2_SEND_DESCRIPTOR']/*"/>
<dd> Indicates whether a filter should be used on data sent to the voice pointed to by <strong>pOutputVoice</strong>. <strong>Flags</strong> can be 0 or XAUDIO2_SEND_USEFILTER. </dd>
</summary>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='XAUDIO2_SEND_DESCRIPTOR::Flags']/*"/>
<dd> A reference to an <seecref="T:SharpDX.XAudio2.Voice"/> that will be the target of the send. The <strong>pOutputVoice</strong> member cannot be <c>null</c>. </dd>
</summary>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='XAUDIO2_SEND_DESCRIPTOR::pOutputVoice']/*"/>
Defines a set of voices to receive data from a single output voice.
</summary>
<remarks>
<p>If <strong>pSends</strong> is not <c>null</c> all of its elements must be non-<c>null</c>. To send output to the default mastering voice call <seecref="M:SharpDX.XAudio2.Voice.SetOutputVoices(System.Nullable{SharpDX.XAudio2.VoiceSendDescriptors})"/> with the <em>pSendList</em> argument set to <c>null</c>.</p><p>Setting <strong>SendCount</strong> to 0 is useful for certain effects such as volume meters or file writers that don't generate any audio output to pass on to another voice.</p><p>If needed, a voice will perform a single sample rate conversion, from the voice's input sample rate to the input sample rate of the voice's output voices. Because only one sample rate conversion will be performed, all the voice's output voices must have the same input sample rate. If the input sample rates of the voice and its output voices are the same, no sample rate conversion is performed.</p>
</remarks>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='XAUDIO2_VOICE_SENDS']/*"/>
<dd> Number of voices to receive the output of the voice. An <strong>OutputCount</strong> value of 0 indicates the voice should not send output to any voices. </dd>
</summary>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='XAUDIO2_VOICE_SENDS::SendCount']/*"/>
<msdn-id>ee419246</msdn-id>
<unmanaged>unsigned int SendCount</unmanaged>
<unmanaged-short>unsigned int SendCount</unmanaged-short>
<dd> Array of <seecref="T:SharpDX.XAudio2.VoiceSendDescriptor"/> structures describing destination voices and the filters that should be used when sending to the voices. This array should contain <strong>SendCount</strong> elements. If <strong>SendCount</strong> is 0 <strong>pSends</strong> should be <c>null</c>. Note that <em>pSends</em> cannot contain the same voice more than once. </dd>
</summary>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='XAUDIO2_VOICE_SENDS::pSends']/*"/>
<p>For all encoded formats, including constant bit rate (CBR) formats such as adaptive differential pulse code modulation (ADPCM), <strong>SamplesPlayed</strong> is expressed in terms of decoded samples. For pulse code modulation (PCM) formats, <strong>SamplesPlayed</strong> is expressed in terms of either input or output samples. There is a one-to-one mapping from input to output for PCM formats.</p><p>If a client needs to get the correlated positions of several voices?that is, to know exactly which sample of a particular voice is playing when a specified sample of another voice is playing?it must make the <seecref="M:SharpDX.XAudio2.SourceVoice.GetState(SharpDX.XAudio2.VoiceState@)"/> calls in an XAudio2 engine callback. Doing this ensures that none of the voices advance while the calls are made.</p>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='XAUDIO2_VOICE_STATE']/*"/>
<dd> Pointer to a buffer context provided in the <seecref="T:SharpDX.XAudio2.AudioBuffer"/> that is processed currently, or, if the voice is stopped currently, to the next buffer due to be processed. <strong>pCurrentBufferContext</strong> is <c>null</c> if there are no buffers in the queue. </dd>
</summary>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='XAUDIO2_VOICE_STATE::pCurrentBufferContext']/*"/>
<dd> Number of audio buffers currently queued on the voice, including the one that is processed currently. </dd>
</summary>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='XAUDIO2_VOICE_STATE::BuffersQueued']/*"/>
<msdn-id>ee419247</msdn-id>
<unmanaged>unsigned int BuffersQueued</unmanaged>
<unmanaged-short>unsigned int BuffersQueued</unmanaged-short>
<dd> Total number of samples processed by this voice since it last started, or since the last audio stream ended (as marked with the <seecref="F:SharpDX.XAudio2.BufferFlags.EndOfStream"/> flag). This total includes samples played multiple times due to looping. Theoretically, if all audio emitted by the voice up to this time is captured, this parameter would be the length of the audio stream in samples. If you specify <strong>XAUDIO2_VOICE_NOSAMPLESPLAYED</strong> when you call <seecref="M:SharpDX.XAudio2.SourceVoice.GetState(SharpDX.XAudio2.VoiceState@)"/>, this member won't be calculated, and its value is unspecified on return from <seecref="M:SharpDX.XAudio2.SourceVoice.GetState(SharpDX.XAudio2.VoiceState@)"/>. <seecref="M:SharpDX.XAudio2.SourceVoice.GetState(SharpDX.XAudio2.VoiceState@)"/> takes about one-third as much time to complete when you specify <strong>XAUDIO2_VOICE_NOSAMPLESPLAYED</strong>. </dd>
<!-- No matching elements were found for the following include tag --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='XAUDIO2_VOICE_STATE::SamplesPlayed']/*"/>
<!-- No matching elements were found for the following include tag --><includefile="..\..\Documentation\CodeComments.xml"path="/comments/comment[@id='X3DAudioCalculateFlags']/*"/>
<!-- No matching elements were found for the following include tag --><includefile="..\..\Documentation\CodeComments.xml"path="/comments/comment[@id='X3DAUDIO_CALCULATE_MATRIX']/*"/>
<!-- No matching elements were found for the following include tag --><includefile="..\..\Documentation\CodeComments.xml"path="/comments/comment[@id='X3DAUDIO_CALCULATE_DELAY']/*"/>
<!-- No matching elements were found for the following include tag --><includefile="..\..\Documentation\CodeComments.xml"path="/comments/comment[@id='X3DAUDIO_CALCULATE_LPF_DIRECT']/*"/>
<!-- No matching elements were found for the following include tag --><includefile="..\..\Documentation\CodeComments.xml"path="/comments/comment[@id='X3DAUDIO_CALCULATE_LPF_REVERB']/*"/>
<!-- No matching elements were found for the following include tag --><includefile="..\..\Documentation\CodeComments.xml"path="/comments/comment[@id='X3DAUDIO_CALCULATE_REVERB']/*"/>
<!-- No matching elements were found for the following include tag --><includefile="..\..\Documentation\CodeComments.xml"path="/comments/comment[@id='X3DAUDIO_CALCULATE_DOPPLER']/*"/>
<!-- No matching elements were found for the following include tag --><includefile="..\..\Documentation\CodeComments.xml"path="/comments/comment[@id='X3DAUDIO_CALCULATE_EMITTER_ANGLE']/*"/>
<!-- No matching elements were found for the following include tag --><includefile="..\..\Documentation\CodeComments.xml"path="/comments/comment[@id='X3DAUDIO_CALCULATE_ZEROCENTER']/*"/>
<!-- No matching elements were found for the following include tag --><includefile="..\..\Documentation\CodeComments.xml"path="/comments/comment[@id='X3DAUDIO_CALCULATE_REDIRECT_TO_LFE']/*"/>
<!-- No matching elements were found for the following include tag --><includefile="..\..\Documentation\CodeComments.xml"path="/comments/comment[@id='SharpDX.X3DAudio.X3DAudio']/*"/>
Calculates DSP settings with respect to 3D parameters.
</summary>
<paramname="instance"><dd>[in] 3D audio instance handle. Call <seecref="M:SharpDX.X3DAudio.X3DAudio.X3DAudioInitialize(SharpDX.Multimedia.Speakers,System.Single,SharpDX.X3DAudio.X3DAudioHandle@)"/> to get this handle. </dd></param>
<paramname="listenerRef"><dd>[in] Pointer to an <seecref="T:SharpDX.X3DAudio.Listener"/> representing the point of reception. </dd></param>
<paramname="emitterRef"><dd>[in] Pointer to an <seecref="T:SharpDX.X3DAudio.Emitter"/> representing the sound source. </dd></param>
<paramname="flags"><dd>[in] Flags used to control which DSP settings are calculated: <table><tr><th>Value</th><th>Description</th></tr><tr><td><seecref="F:SharpDX.X3DAudio.CalculateFlags.Matrix"/></td><td>Enables matrix coefficient table calculation.?</td></tr><tr><td><seecref="F:SharpDX.X3DAudio.CalculateFlags.Delay"/></td><td>Enables delay time array calculation (stereo only).?</td></tr><tr><td><seecref="F:SharpDX.X3DAudio.CalculateFlags.LpfDirect"/></td><td>Enables low pass filter (LPF) direct-path coefficient calculation.?</td></tr><tr><td><seecref="F:SharpDX.X3DAudio.CalculateFlags.LpfReverb"/></td><td>Enables LPF reverb-path coefficient calculation.?</td></tr><tr><td><seecref="F:SharpDX.X3DAudio.CalculateFlags.Reverb"/></td><td>Enables reverb send level calculation.?</td></tr><tr><td><seecref="F:SharpDX.X3DAudio.CalculateFlags.Doppler"/></td><td>Enables Doppler shift factor calculation.?</td></tr><tr><td><seecref="F:SharpDX.X3DAudio.CalculateFlags.EmitterAngle"/></td><td>Enables emitter-to-listener interior angle calculation.?</td></tr><tr><td><seecref="F:SharpDX.X3DAudio.CalculateFlags.ZeroCenter"/></td><td>Fills the center channel with silence. This flag allows you to keep a 6-channel matrix so you do not have to remap the channels, but the center channel will be silent. This flag is only valid if you also set <seecref="F:SharpDX.X3DAudio.CalculateFlags.Matrix"/>.?</td></tr><tr><td><seecref="F:SharpDX.X3DAudio.CalculateFlags.RedirectToLfe"/></td><td> Applies an equal mix of all source channels to a low frequency effect (LFE) destination channel. It only applies to matrix calculations with a source that does not have an LFE channel and a destination that does have an LFE channel. This flag is only valid if you also set <seecref="F:SharpDX.X3DAudio.CalculateFlags.Matrix"/>.?</td></tr></table></dd></param>
<paramname="dSPSettingsRef"><dd>[in, out] Pointer to an <seecref="T:SharpDX.X3DAudio.DspSettings"/> structure that receives the calculation results. </dd></param>
<!-- No matching elements were found for the following include tag --><includefile="..\..\Documentation\CodeComments.xml"path="/comments/comment[@id='X3DAudioCalculate']/*"/>
<paramname="speakerChannelMask"><dd>[in] Assignment of channels to speaker positions. This value must not be zero. The only permissible value on Xbox 360 is SPEAKER_XBOX. </dd></param>
<paramname="speedOfSound"><dd>[in] Speed of sound, in user-defined world units per second. Use this value only for doppler calculations. It must be greater than or equal to FLT_MIN. </dd></param>
<paramname="instance"><dd>[out] 3D audio instance handle. Use this handle when you call <seecref="M:SharpDX.X3DAudio.X3DAudio.X3DAudioCalculate(SharpDX.X3DAudio.X3DAudioHandle@,SharpDX.X3DAudio.Listener,SharpDX.X3DAudio.Emitter,SharpDX.X3DAudio.CalculateFlags,SharpDX.X3DAudio.DspSettings)"/>. </dd></param>
<!-- No matching elements were found for the following include tag --><includefile="..\..\Documentation\CodeComments.xml"path="/comments/comment[@id='X3DAudioInitialize']/*"/>
Specifies directionality for a single-channel non-LFE emitter by scaling DSP behavior with respect to the emitter's orientation.
</summary>
<remarks>
<p>For a detailed explanation of sound cones see Sound Cones.</p>
</remarks>
<!-- No matching elements were found for the following include tag --><includefile="..\..\Documentation\CodeComments.xml"path="/comments/comment[@id='X3DAUDIO_CONE']/*"/>
<msdn-id>ee419054</msdn-id>
<unmanaged>X3DAUDIO_CONE</unmanaged>
<unmanaged-short>X3DAUDIO_CONE</unmanaged-short>
</member>
<membername="F:SharpDX.X3DAudio.Cone.InnerAngle">
<summary>
<dd> Inner cone angle in radians. This value must be within 0.0f to X3DAUDIO_2PI. </dd>
</summary>
<!-- No matching elements were found for the following include tag --><includefile="..\..\Documentation\CodeComments.xml"path="/comments/comment[@id='X3DAUDIO_CONE::InnerAngle']/*"/>
<dd> Outer cone angle in radians. This value must be within <strong>InnerAngle</strong> to X3DAUDIO_2PI. </dd>
</summary>
<!-- No matching elements were found for the following include tag --><includefile="..\..\Documentation\CodeComments.xml"path="/comments/comment[@id='X3DAUDIO_CONE::OuterAngle']/*"/>
<dd> Volume scaler on/within inner cone. This value must be within 0.0f to 2.0f. </dd>
</summary>
<!-- No matching elements were found for the following include tag --><includefile="..\..\Documentation\CodeComments.xml"path="/comments/comment[@id='X3DAUDIO_CONE::InnerVolume']/*"/>
<dd> Volume scaler on/beyond outer cone. This value must be within 0.0f to 2.0f. </dd>
</summary>
<!-- No matching elements were found for the following include tag --><includefile="..\..\Documentation\CodeComments.xml"path="/comments/comment[@id='X3DAUDIO_CONE::OuterVolume']/*"/>
<dd> LPF direct-path or reverb-path coefficient scaler on/within inner cone. This value is only used for LPF calculations and must be within 0.0f to 1.0f. </dd>
</summary>
<!-- No matching elements were found for the following include tag --><includefile="..\..\Documentation\CodeComments.xml"path="/comments/comment[@id='X3DAUDIO_CONE::InnerLPF']/*"/>
<msdn-id>ee419054</msdn-id>
<unmanaged>float InnerLPF</unmanaged>
<unmanaged-short>float InnerLPF</unmanaged-short>
</member>
<membername="F:SharpDX.X3DAudio.Cone.OuterLpf">
<summary>
<dd> LPF direct-path or reverb-path coefficient scaler on or beyond outer cone. This value is only used for LPF calculations and must be within 0.0f to 1.0f. </dd>
</summary>
<!-- No matching elements were found for the following include tag --><includefile="..\..\Documentation\CodeComments.xml"path="/comments/comment[@id='X3DAUDIO_CONE::OuterLPF']/*"/>
<dd> Reverb send level scaler on or within inner cone. This must be within 0.0f to 2.0f. </dd>
</summary>
<!-- No matching elements were found for the following include tag --><includefile="..\..\Documentation\CodeComments.xml"path="/comments/comment[@id='X3DAUDIO_CONE::InnerReverb']/*"/>
<dd> Reverb send level scaler on/beyond outer cone. This must be within 0.0f to 2.0f. </dd>
</summary>
<!-- No matching elements were found for the following include tag --><includefile="..\..\Documentation\CodeComments.xml"path="/comments/comment[@id='X3DAUDIO_CONE::OuterReverb']/*"/>
Defines a DSP setting at a given normalized distance.
</summary>
<!-- No matching elements were found for the following include tag --><includefile="..\..\Documentation\CodeComments.xml"path="/comments/comment[@id='X3DAUDIO_DISTANCE_CURVE_POINT']/*"/>
<dd> Normalized distance. This must be within 0.0f to 1.0f. </dd>
</summary>
<!-- No matching elements were found for the following include tag --><includefile="..\..\Documentation\CodeComments.xml"path="/comments/comment[@id='X3DAUDIO_DISTANCE_CURVE_POINT::Distance']/*"/>
<!-- No matching elements were found for the following include tag --><includefile="..\..\Documentation\CodeComments.xml"path="/comments/comment[@id='X3DAUDIO_DISTANCE_CURVE_POINT::DSPSetting']/*"/>
Defines a DSP setting at a given normalized distance.
</summary>
<!-- No matching elements were found for the following include tag --><includefile="..\..\Documentation\CodeComments.xml"path="/comments/comment[@id='X3DAUDIO_DISTANCE_CURVE']/*"/>
<dd> Normalized distance. This must be within 0.0f to 1.0f. </dd>
</summary>
<!-- No matching elements were found for the following include tag --><includefile="..\..\Documentation\CodeComments.xml"path="/comments/comment[@id='X3DAUDIO_DISTANCE_CURVE::pPoints']/*"/>
<!-- No matching elements were found for the following include tag --><includefile="..\..\Documentation\CodeComments.xml"path="/comments/comment[@id='X3DAUDIO_DISTANCE_CURVE::PointCount']/*"/>
<msdn-id>ee419056</msdn-id>
<unmanaged>unsigned int PointCount</unmanaged>
<unmanaged-short>unsigned int PointCount</unmanaged-short>
</member>
<membername="T:SharpDX.X3DAudio.DspSettings">
<summary>
Receives the results from a call toX3DAudioCalculate.
</summary>
<remarks>
<p>The following members must be initialized before passing this structure to the <seecref="M:SharpDX.X3DAudio.X3DAudio.X3DAudioCalculate(SharpDX.X3DAudio.X3DAudioHandle@,SharpDX.X3DAudio.Listener,SharpDX.X3DAudio.Emitter,SharpDX.X3DAudio.CalculateFlags,SharpDX.X3DAudio.DspSettings)"/> function:</p><ul><li><p><strong>pMatrixCoefficients</strong></p></li><li><p><strong>pDelayTimes</strong></p></li><li><p><strong>SrcChannelCount</strong></p></li><li><p><strong>DstChannelCount</strong></p></li></ul><p>The following members are returned by passing this structure to the <seecref="M:SharpDX.X3DAudio.X3DAudio.X3DAudioCalculate(SharpDX.X3DAudio.X3DAudioHandle@,SharpDX.X3DAudio.Listener,SharpDX.X3DAudio.Emitter,SharpDX.X3DAudio.CalculateFlags,SharpDX.X3DAudio.DspSettings)"/> function:</p><ul><li><p><strong>pMatrixCoefficients</strong></p></li><li><p><strong>pDelayTimes</strong></p></li><li><p><strong>LPFDirectCoefficient</strong></p></li><li><p><strong>LPFReverbCoefficient</strong></p></li><li><p><strong>ReverbLevel</strong></p></li><li><p><strong>DopplerFactor</strong></p></li><li><p><strong>EmitterToListenerAngle</strong></p></li><li><p><strong>EmitterToListenerDistance</strong></p></li><li><p><strong>EmitterVelocityComponent</strong></p></li><li><p><strong>ListenerVelocityComponent</strong></p></li></ul><table><tr><th>Note </th></tr><tr><td>For <strong>pMatrixCoefficients</strong> and <strong>pDelayTimes</strong>, <seecref="M:SharpDX.X3DAudio.X3DAudio.X3DAudioCalculate(SharpDX.X3DAudio.X3DAudioHandle@,SharpDX.X3DAudio.Listener,SharpDX.X3DAudio.Emitter,SharpDX.X3DAudio.CalculateFlags,SharpDX.X3DAudio.DspSettings)"/> does not allocate additional memory. <seecref="M:SharpDX.X3DAudio.X3DAudio.X3DAudioCalculate(SharpDX.X3DAudio.X3DAudioHandle@,SharpDX.X3DAudio.Listener,SharpDX.X3DAudio.Emitter,SharpDX.X3DAudio.CalculateFlags,SharpDX.X3DAudio.DspSettings)"/> merely modifies the values at the memory locations allocated for these references.</td></tr></table>
</remarks>
<!-- No matching elements were found for the following include tag --><includefile="..\..\Documentation\CodeComments.xml"path="/comments/comment[@id='X3DAUDIO_DSP_SETTINGS']/*"/>
<!-- Failed to insert some or all of included XML --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='X3DAUDIO_DSP_SETTINGS']/*"/>
<!-- No matching elements were found for the following include tag --><includefile="..\..\Documentation\CodeComments.xml"path="/comments/comment[@id='X3DAUDIO_DSP_SETTINGS::pMatrixCoefficients']/*"/>
<!-- No matching elements were found for the following include tag --><includefile="..\..\Documentation\CodeComments.xml"path="/comments/comment[@id='X3DAUDIO_DSP_SETTINGS::pDelayTimes']/*"/>
<!-- No matching elements were found for the following include tag --><includefile="..\..\Documentation\CodeComments.xml"path="/comments/comment[@id='X3DAUDIO_DSP_SETTINGS::SrcChannelCount']/*"/>
<unmanaged>unsigned int SrcChannelCount</unmanaged>
<unmanaged-short>unsigned int SrcChannelCount</unmanaged-short>
<!-- No matching elements were found for the following include tag --><includefile="..\..\Documentation\CodeComments.xml"path="/comments/comment[@id='X3DAUDIO_DSP_SETTINGS::DstChannelCount']/*"/>
<unmanaged>unsigned int DstChannelCount</unmanaged>
<unmanaged-short>unsigned int DstChannelCount</unmanaged-short>
<!-- No matching elements were found for the following include tag --><includefile="..\..\Documentation\CodeComments.xml"path="/comments/comment[@id='X3DAUDIO_DSP_SETTINGS::LPFDirectCoefficient']/*"/>
<!-- No matching elements were found for the following include tag --><includefile="..\..\Documentation\CodeComments.xml"path="/comments/comment[@id='X3DAUDIO_DSP_SETTINGS::LPFReverbCoefficient']/*"/>
<!-- No matching elements were found for the following include tag --><includefile="..\..\Documentation\CodeComments.xml"path="/comments/comment[@id='X3DAUDIO_DSP_SETTINGS::ReverbLevel']/*"/>
<!-- No matching elements were found for the following include tag --><includefile="..\..\Documentation\CodeComments.xml"path="/comments/comment[@id='X3DAUDIO_DSP_SETTINGS::DopplerFactor']/*"/>
<!-- No matching elements were found for the following include tag --><includefile="..\..\Documentation\CodeComments.xml"path="/comments/comment[@id='X3DAUDIO_DSP_SETTINGS::EmitterToListenerAngle']/*"/>
<!-- No matching elements were found for the following include tag --><includefile="..\..\Documentation\CodeComments.xml"path="/comments/comment[@id='X3DAUDIO_DSP_SETTINGS::EmitterToListenerDistance']/*"/>
<!-- No matching elements were found for the following include tag --><includefile="..\..\Documentation\CodeComments.xml"path="/comments/comment[@id='X3DAUDIO_DSP_SETTINGS::EmitterVelocityComponent']/*"/>
<!-- No matching elements were found for the following include tag --><includefile="..\..\Documentation\CodeComments.xml"path="/comments/comment[@id='X3DAUDIO_DSP_SETTINGS::ListenerVelocityComponent']/*"/>
Defines a single-point or multiple-point 3D audio source that is used with an arbitrary number of sound channels.
</summary>
<remarks>
<p><strong><seecref="T:SharpDX.X3DAudio.Emitter"/></strong> only supports a cone in a single-point emitter. Multi-point emitters are a convenient and efficient way to manage a related group of sound sources. Many properties are shared among all channel points, such as Doppler?the same Doppler shift is applied to all channels in the emitter. Thus, the Doppler value need only be calculated once, not per-point as would be needed with multiple separate single-point emitters. Because <strong><seecref="T:SharpDX.X3DAudio.Emitter"/></strong> only has one orientation vector, a multi-point emitter cone would be of limited usefulness, forcing all channels to behave as if they were facing the same direction. If multiple independent cones are needed, multiple single-point emitters should be used, each with its own orientation.</p><p>The parameter type <strong><seecref="T:SharpDX.Vector3"/></strong> is typed to <strong>DirectX::XMFLOAT3</strong>, to provide <em>x</em> , <em>y</em> , and <em>z</em> floating-point values.</p><p>X3DAudio uses a left-handed Cartesian coordinate system, with values on the x-axis increasing from left to right, on the y-axis from bottom to top, and on the z-axis from near to far. Azimuths are measured clockwise from a given reference direction.</p><p>For user-defined distance curves, the distance field of the first point must be 0.0f and the distance field of the last point must be 1.0f.</p><p>If an emitter moves beyond a distance of (<strong>CurveDistanceScaler</strong> ? 1.0f), the last point on the curve is used to compute the volume output level. The last point is determined by the following:</p><pre><seecref="T:SharpDX.X3DAudio.DistanceCurve"/>.pPoints[PointCount-1].DSPSetting)</pre> Inner Radius and Inner Radius Angle <p><strong>InnerRadius</strong> is used to specify an area of smooth transition around the origin point as a sound travels directly through, above or below the listener. Elevation is accounted for by specifying an <strong>InnerRadiusAngle</strong>, whereby a sound whose elevation increases or decreases, will eventually start to bleed the sound into more than just two speakers.</p><p>When Inner Radius and Inner Radius Angle are not used, emitters are audible in the two closest speakers to their current position/orientation (or, if directly on a line with one speaker's defined angle, solely from that one speaker).</p><p>Inner Radius and Inner Radius Angle have no effect on emitters positioned outside of the cones they describe. Inside of the cone, they will gradually cause the sound to bleed into the opposite speakers, until the sound will be equally heard in all speakers when the emitter is at the same position as (or directly above or below) the listener.</p>
</remarks>
<!-- No matching elements were found for the following include tag --><includefile="..\..\Documentation\CodeComments.xml"path="/comments/comment[@id='X3DAUDIO_EMITTER']/*"/>
<!-- Failed to insert some or all of included XML --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='X3DAUDIO_EMITTER']/*"/>
<dd> Pointer to a sound cone. Used only with single-channel emitters for matrix, LPF (both direct and reverb paths), and reverb calculations. <c>null</c> specifies the emitter is omnidirectional. </dd>
</summary>
<!-- No matching elements were found for the following include tag --><includefile="..\..\Documentation\CodeComments.xml"path="/comments/comment[@id='X3DAUDIO_EMITTER::pCone']/*"/>
<dd> Orientation of the front direction. This value must be orthonormal with <strong>OrientTop</strong>. <strong>OrientFront</strong> must be normalized when used. For single-channel emitters without cones <strong>OrientFront</strong> is only used for emitter angle calculations. For multi channel emitters or single-channel with cones <strong>OrientFront</strong> is used for matrix, LPF (both direct and reverb paths), and reverb calculations. </dd>
</summary>
<!-- No matching elements were found for the following include tag --><includefile="..\..\Documentation\CodeComments.xml"path="/comments/comment[@id='X3DAUDIO_EMITTER::OrientFront']/*"/>
<dd> Orientation of the top direction. This value must be orthonormal with <strong>OrientFront</strong>. <strong>OrientTop</strong> is only used with multi-channel emitters for matrix calculations. </dd>
</summary>
<!-- No matching elements were found for the following include tag --><includefile="..\..\Documentation\CodeComments.xml"path="/comments/comment[@id='X3DAUDIO_EMITTER::OrientTop']/*"/>
<dd> Position in user-defined world units. This value does not affect <strong>Velocity</strong>. </dd>
</summary>
<!-- No matching elements were found for the following include tag --><includefile="..\..\Documentation\CodeComments.xml"path="/comments/comment[@id='X3DAUDIO_EMITTER::Position']/*"/>
<dd> Velocity vector in user-defined world units/second. This value is used only for doppler calculations. It does not affect <strong>Position</strong>. </dd>
</summary>
<!-- No matching elements were found for the following include tag --><includefile="..\..\Documentation\CodeComments.xml"path="/comments/comment[@id='X3DAUDIO_EMITTER::Velocity']/*"/>
<dd> Value to be used for the inner radius calculations. If <strong>InnerRadius</strong> is 0, then no inner radius is used, but <strong>InnerRadiusAngle</strong> may still be used. This value must be between 0.0f and MAX_FLT. </dd>
</summary>
<!-- No matching elements were found for the following include tag --><includefile="..\..\Documentation\CodeComments.xml"path="/comments/comment[@id='X3DAUDIO_EMITTER::InnerRadius']/*"/>
<dd> Value to be used for the inner radius angle calculations. This value must be between 0.0f and X3DAUDIO_PI/4.0. </dd>
</summary>
<!-- No matching elements were found for the following include tag --><includefile="..\..\Documentation\CodeComments.xml"path="/comments/comment[@id='X3DAUDIO_EMITTER::InnerRadiusAngle']/*"/>
<dd> Number of emitters defined by the <strong><seecref="T:SharpDX.X3DAudio.Emitter"/></strong> structure. Must be greater than 0. </dd>
</summary>
<!-- No matching elements were found for the following include tag --><includefile="..\..\Documentation\CodeComments.xml"path="/comments/comment[@id='X3DAUDIO_EMITTER::ChannelCount']/*"/>
<dd> Distance from <strong>Position</strong> that channels will be placed if <strong>ChannelCount</strong> is greater than 1. <strong>ChannelRadius</strong> is only used with multi-channel emitters for matrix calculations. Must be greater than or equal to 0.0f. </dd>
</summary>
<!-- No matching elements were found for the following include tag --><includefile="..\..\Documentation\CodeComments.xml"path="/comments/comment[@id='X3DAUDIO_EMITTER::ChannelRadius']/*"/>
<dd> Table of channel positions, expressed as an azimuth in radians along the channel radius with respect to the front orientation vector in the plane orthogonal to the top orientation vector. An azimuth of X3DAUDIO_2PI specifies a channel is a low-frequency effects (LFE) channel. LFE channels are positioned at the emitter base and are calculated with respect to <strong>pLFECurve</strong> only, never <strong>pVolumeCurve</strong>. <strong>pChannelAzimuths</strong> must have at least <strong>ChannelCount</strong> elements. The table values must be within 0.0f to X3DAUDIO_2PI. <strong>pChannelAzimuths</strong> is used with multi-channel emitters for matrix calculations. </dd>
</summary>
<!-- No matching elements were found for the following include tag --><includefile="..\..\Documentation\CodeComments.xml"path="/comments/comment[@id='X3DAUDIO_EMITTER::pChannelAzimuths']/*"/>
<dd> Volume-level distance curve, which is used only for matrix calculations. <c>null</c> specifies a specialized default curve that conforms to the inverse square law, such that when distance is between 0.0f and <strong>CurveDistanceScaler</strong> ? 1.0f, no attenuation is applied. <p>When distance is greater than <strong>CurveDistanceScaler</strong> ? 1.0f, the amplification factor is (<strong>CurveDistanceScaler</strong> ? 1.0f)/distance. At a distance of <strong>CurveDistanceScaler</strong> ? 2.0f, the sound will be at half volume or -6 dB, at a distance of <strong>CurveDistanceScaler</strong> ? 4.0f, the sound will be at one quarter volume or -12 dB, and so on.</p><p><strong>pVolumeCurve</strong> and <strong>pLFECurve</strong> are independent of each other. <strong>pVolumeCurve</strong> does not affect LFE channel volume.</p></dd>
</summary>
<!-- No matching elements were found for the following include tag --><includefile="..\..\Documentation\CodeComments.xml"path="/comments/comment[@id='X3DAUDIO_EMITTER::pVolumeCurve']/*"/>
<dd> LFE roll-off distance curve, or <c>null</c> to use default curve: [0.0f, <strong>CurveDistanceScaler</strong> ?1.0f], [<strong>CurveDistanceScaler</strong> ?1.0f, 0.0f]. A <c>null</c> value for <strong>pLFECurve</strong> specifies a default curve that conforms to the inverse square law with distances <= <strong>CurveDistanceScaler</strong> clamped to no attenuation. <p><strong>pVolumeCurve</strong> and <strong>pLFECurve</strong> are independent of each other. <strong>pLFECurve</strong> does not affect non LFE channel volume.</p></dd>
</summary>
<!-- No matching elements were found for the following include tag --><includefile="..\..\Documentation\CodeComments.xml"path="/comments/comment[@id='X3DAUDIO_EMITTER::pLFECurve']/*"/>
<dd> Low-pass filter (LPF) direct-path coefficient distance curve, or <c>null</c> to use the default curve: [0.0f, 1.0f], [1.0f, 0.75f]. <strong>pLPFDirectCurve</strong> is only used for LPF direct-path calculations. </dd>
</summary>
<!-- No matching elements were found for the following include tag --><includefile="..\..\Documentation\CodeComments.xml"path="/comments/comment[@id='X3DAUDIO_EMITTER::pLPFDirectCurve']/*"/>
<dd> LPF reverb-path coefficient distance curve, or <c>null</c> to use default curve: [0.0f, 0.75f], [1.0f, 0.75f]. <strong>pLPFReverbCurve</strong> is only used for LPF reverb path calculations. </dd>
</summary>
<!-- No matching elements were found for the following include tag --><includefile="..\..\Documentation\CodeComments.xml"path="/comments/comment[@id='X3DAUDIO_EMITTER::pLPFReverbCurve']/*"/>
<dd> Reverb send level distance curve, or <c>null</c> to use default curve: [0.0f, 1.0f], [1.0f, 0.0f]. </dd>
</summary>
<!-- No matching elements were found for the following include tag --><includefile="..\..\Documentation\CodeComments.xml"path="/comments/comment[@id='X3DAUDIO_EMITTER::pReverbCurve']/*"/>
<dd> Curve distance scaler that is used to scale normalized distance curves to user-defined world units, and/or to exaggerate their effect. This does not affect any other calculations. The value must be within the range FLT_MIN to FLT_MAX. <strong>CurveDistanceScaler</strong> is only used for matrix, LPF (both direct and reverb paths), and reverb calculations. </dd>
</summary>
<!-- No matching elements were found for the following include tag --><includefile="..\..\Documentation\CodeComments.xml"path="/comments/comment[@id='X3DAUDIO_EMITTER::CurveDistanceScaler']/*"/>
<dd> Doppler shift scaler that is used to exaggerate Doppler shift effect. <strong>DopplerScaler</strong> is only used for Doppler calculations and does not affect any other calculations. The value must be within the range 0.0f to FLT_MAX. </dd>
</summary>
<!-- No matching elements were found for the following include tag --><includefile="..\..\Documentation\CodeComments.xml"path="/comments/comment[@id='X3DAUDIO_EMITTER::DopplerScaler']/*"/>
<p>The parameter type <strong><seecref="T:SharpDX.Vector3"/></strong> is typed to DirectX::XMFLOAT3, to provide x, y and z floating-point values.</p><p>A listener's front and top vectors must be orthonormal. To be considered orthonormal, a pair of vectors must have a magnitude of 1 +- 1x10-5 and a dot product of 0 +- 1x10-5.</p>
</remarks>
<!-- No matching elements were found for the following include tag --><includefile="..\..\Documentation\CodeComments.xml"path="/comments/comment[@id='X3DAUDIO_LISTENER']/*"/>
<!-- Failed to insert some or all of included XML --><includefile=".\..\Documentation\CodeComments.xml"path="/comments/comment[@id='X3DAUDIO_LISTENER']/*"/>
<dd> Orientation of front direction. When <strong>pCone</strong> is <c>null</c><strong>OrientFront</strong> is used only for matrix and delay calculations. When <strong>pCone</strong> is not <c>null</c><strong>OrientFront</strong> is used for matrix, LPF (both direct and reverb paths), and reverb calculations. This value must be orthonormal with <strong>OrientTop</strong> when used. </dd>
</summary>
<!-- No matching elements were found for the following include tag --><includefile="..\..\Documentation\CodeComments.xml"path="/comments/comment[@id='X3DAUDIO_LISTENER::OrientFront']/*"/>
<dd> Orientation of top direction, used only for matrix and delay calculations. This value must be orthonormal with <strong>OrientFront</strong> when used </dd>
</summary>
<!-- No matching elements were found for the following include tag --><includefile="..\..\Documentation\CodeComments.xml"path="/comments/comment[@id='X3DAUDIO_LISTENER::OrientTop']/*"/>
<dd> Position in user-defined world units. This value does not affect <strong>Velocity</strong>. </dd>
</summary>
<!-- No matching elements were found for the following include tag --><includefile="..\..\Documentation\CodeComments.xml"path="/comments/comment[@id='X3DAUDIO_LISTENER::Position']/*"/>
<dd> Velocity vector in user-defined world units per second, used only for doppler calculations. This value does not affect <strong>Position</strong>. </dd>
</summary>
<!-- No matching elements were found for the following include tag --><includefile="..\..\Documentation\CodeComments.xml"path="/comments/comment[@id='X3DAUDIO_LISTENER::Velocity']/*"/>
<dd> Pointer to an <seecref="T:SharpDX.X3DAudio.Cone"/> structure for this listener. Providing a listener cone will specify that additional calculations are performed when determining the volume and filter DSP parameters for individual sound sources. A <c>null</c><strong>pCone</strong> value specifies an omnidirectional sound and no cone processing is applied. <strong>pCone</strong> is only used for matrix, LPF (both direct and reverb paths), and reverb calculations. </dd>
</summary>
<!-- No matching elements were found for the following include tag --><includefile="..\..\Documentation\CodeComments.xml"path="/comments/comment[@id='X3DAUDIO_LISTENER::pCone']/*"/>
<p>This metadata can be used to implement optimizations that require knowledge of a stream buffer's contents.
For example, XAPOs that always produce silent output from silent input can check the flag on the input stream buffer
to determine if any signal processing is necessary. If silent, the XAPO can simply set the flag on the output
stream buffer to silent and return, thus averting the work of processing silent data.</p><p>Likewise, XAPOs that receive valid input data, but generate silence (for any reason), may set the
output stream buffer's flag accordingly, rather than writing silent samples to the buffer.</p><p>These flags represent what should be assumed is in the respective buffer.
The flags may not reflect what is actually stored in memory.
For example, the <seecref="F:SharpDX.XAPO.BufferFlags.Silent"/> indicates that silent data should be assumed, however the respective memory may be
uninitialized</p>
</remarks>
<!-- No matching elements were found for the following include tag --><includefile="..\..\Documentation\CodeComments.xml"path="/comments/comment[@id='XAPO_BUFFER_FLAGS']/*"/>
<!-- No matching elements were found for the following include tag --><includefile="..\..\Documentation\CodeComments.xml"path="/comments/comment[@id='XAPO_BUFFER_SILENT']/*"/>
<!-- No matching elements were found for the following include tag --><includefile="..\..\Documentation\CodeComments.xml"path="/comments/comment[@id='XAPO_BUFFER_VALID']/*"/>
<!-- No matching elements were found for the following include tag --><includefile="..\..\Documentation\CodeComments.xml"path="/comments/comment[@id='']/*"/>
<unmanaged>None</unmanaged>
<unmanaged-short>None</unmanaged-short>
</member>
<membername="T:SharpDX.XAPO.PropertyFlags">
<summary>
No documentation.
</summary>
<!-- No matching elements were found for the following include tag --><includefile="..\..\Documentation\CodeComments.xml"path="/comments/comment[@id='XAPO_PROPERTY_TYPE']/*"/>
<!-- No matching elements were found for the following include tag --><includefile="..\..\Documentation\CodeComments.xml"path="/comments/comment[@id='XAPO_FLAG_CHANNELS_MUST_MATCH']/*"/>
<!-- No matching elements were found for the following include tag --><includefile="..\..\Documentation\CodeComments.xml"path="/comments/comment[@id='XAPO_FLAG_FRAMERATE_MUST_MATCH']/*"/>
<!-- No matching elements were found for the following include tag --><includefile="..\..\Documentation\CodeComments.xml"path="/comments/comment[@id='XAPO_FLAG_BITSPERSAMPLE_MUST_MATCH']/*"/>
<!-- No matching elements were found for the following include tag --><includefile="..\..\Documentation\CodeComments.xml"path="/comments/comment[@id='XAPO_FLAG_BUFFERCOUNT_MUST_MATCH']/*"/>
<!-- No matching elements were found for the following include tag --><includefile="..\..\Documentation\CodeComments.xml"path="/comments/comment[@id='XAPO_FLAG_INPLACE_REQUIRED']/*"/>
<!-- No matching elements were found for the following include tag --><includefile="..\..\Documentation\CodeComments.xml"path="/comments/comment[@id='XAPO_FLAG_INPLACE_SUPPORTED']/*"/>
<!-- No matching elements were found for the following include tag --><includefile="..\..\Documentation\CodeComments.xml"path="/comments/comment[@id='XAPO_FLAG_DEFAULT']/*"/>
<!-- Failed to insert some or all of included XML --><includefile="..\..\Documentation\CodeComments.xml"path="/comments/comment[@id='SharpDX.XAPO.Fx.XAPOFx']/*"/>
Creates an instance of the requested XAPOFX effect.
</summary>
<paramname="clsid"><dd> ID of the effect to create. Use the <strong>__uuidof</strong> on the effect class name to get the CLSID for an effect. For example, <strong>__uuidof(FXReverb)</strong> would provide the CLSID for the FXReverb effect. For a list of effects provided by XAPOFX, see XAPOFX Overview. For an example of retrieving the CLSID for an effect, see How to: Use XAPOFX in XAudio2. </dd></param>
<paramname="effectRef"><dd> Receives a reference to the created XAPO instance. If <strong>CreateFX</strong> fails, <em>pEffect</em> is untouched. </dd></param>
<returns>Returns <seecref="F:SharpDX.Result.Ok"/> if successful; otherwise, an error code.</returns>
<remarks>
<p>The created XAPO will have a reference count of 1. Client code should call <strong>IUnknown::Release</strong> after passing the XAPO to XAudio2 to allow XAudio2 to dispose of the XAPO when it is no longer needed. Use <seecref="M:SharpDX.XAudio2.XAudio2.CreateSourceVoice_(SharpDX.XAudio2.SourceVoice,System.IntPtr,SharpDX.XAudio2.VoiceFlags,System.Single,System.IntPtr,System.Nullable{SharpDX.XAudio2.VoiceSendDescriptors},System.Nullable{SharpDX.XAudio2.EffectChain})"/> or <seecref="M:SharpDX.XAudio2.Voice.SetEffectChain(System.Nullable{SharpDX.XAudio2.EffectChain})"/> to pass an XAPO to XAudio2.</p>
</remarks>
<!-- Failed to insert some or all of included XML --><includefile="..\..\Documentation\CodeComments.xml"path="/comments/comment[@id='CreateFX']/*"/>
<!-- Failed to insert some or all of included XML --><includefile="..\..\Documentation\CodeComments.xml"path="/comments/comment[@id='FXECHO_PARAMETERS']/*"/>
<dd> Ratio of wet (processed) signal to dry (original) signal. </dd>
</summary>
<!-- Failed to insert some or all of included XML --><includefile="..\..\Documentation\CodeComments.xml"path="/comments/comment[@id='FXECHO_PARAMETERS::WetDryMix']/*"/>
<dd> Amount of output to feed back into input. </dd>
</summary>
<!-- Failed to insert some or all of included XML --><includefile="..\..\Documentation\CodeComments.xml"path="/comments/comment[@id='FXECHO_PARAMETERS::Feedback']/*"/>
<dd> Delay to all channels in milliseconds. This value must be between <strong>FXECHO_MIN_DELAY</strong> and <strong>FXECHO_INITDATA.MaxDelay</strong>. </dd>
<!-- Failed to insert some or all of included XML --><includefile="..\..\Documentation\CodeComments.xml"path="/comments/comment[@id='FXECHO_PARAMETERS::Delay']/*"/>
<p>Each band ranges from <strong>FrequencyCenterN</strong> - (<strong>BandwidthN</strong> / 2) to <strong>FrequencyCenterN</strong> + (<strong>BandwidthN</strong> / 2).</p>
</remarks>
<!-- Failed to insert some or all of included XML --><includefile="..\..\Documentation\CodeComments.xml"path="/comments/comment[@id='FXEQ_PARAMETERS']/*"/>
<dd> Center frequency in Hz for band 0. Must be between FXEQ_MIN_FREQUENCY_CENTER and FXEQ_MAX_FREQUENCY_CENTER. </dd>
</summary>
<!-- Failed to insert some or all of included XML --><includefile="..\..\Documentation\CodeComments.xml"path="/comments/comment[@id='FXEQ_PARAMETERS::FrequencyCenter0']/*"/>
<dd> The boost or decrease to frequencies in band 0. Must be between FXEQ_MIN_GAIN and FXEQ_MAX_GAIN </dd>
</summary>
<!-- Failed to insert some or all of included XML --><includefile="..\..\Documentation\CodeComments.xml"path="/comments/comment[@id='FXEQ_PARAMETERS::Gain0']/*"/>
<dd> Width of band 0. Must be between FXEQ_MIN_BANDWIDTH and FXEQ_MAX_BANDWIDTH. </dd>
</summary>
<!-- Failed to insert some or all of included XML --><includefile="..\..\Documentation\CodeComments.xml"path="/comments/comment[@id='FXEQ_PARAMETERS::Bandwidth0']/*"/>
<dd> Center frequency in Hz for band 1. Must be between FXEQ_MIN_FREQUENCY_CENTER and FXEQ_MAX_FREQUENCY_CENTER. </dd>
</summary>
<!-- Failed to insert some or all of included XML --><includefile="..\..\Documentation\CodeComments.xml"path="/comments/comment[@id='FXEQ_PARAMETERS::FrequencyCenter1']/*"/>
<dd> The boost or decrease to frequencies in band 1. Must be between FXEQ_MIN_GAIN and FXEQ_MAX_GAIN </dd>
</summary>
<!-- Failed to insert some or all of included XML --><includefile="..\..\Documentation\CodeComments.xml"path="/comments/comment[@id='FXEQ_PARAMETERS::Gain1']/*"/>
<dd> Width of band 1. Must be between FXEQ_MIN_BANDWIDTH and FXEQ_MAX_BANDWIDTH. </dd>
</summary>
<!-- Failed to insert some or all of included XML --><includefile="..\..\Documentation\CodeComments.xml"path="/comments/comment[@id='FXEQ_PARAMETERS::Bandwidth1']/*"/>
<dd> Center frequency in Hz for band 2. Must be between FXEQ_MIN_FREQUENCY_CENTER and FXEQ_MAX_FREQUENCY_CENTER. </dd>
</summary>
<!-- Failed to insert some or all of included XML --><includefile="..\..\Documentation\CodeComments.xml"path="/comments/comment[@id='FXEQ_PARAMETERS::FrequencyCenter2']/*"/>
<dd> The boost or decrease to frequencies in band 2. Must be between FXEQ_MIN_GAIN and FXEQ_MAX_GAIN </dd>
</summary>
<!-- Failed to insert some or all of included XML --><includefile="..\..\Documentation\CodeComments.xml"path="/comments/comment[@id='FXEQ_PARAMETERS::Gain2']/*"/>
<dd> Width of band 2. Must be between FXEQ_MIN_BANDWIDTH and FXEQ_MAX_BANDWIDTH. </dd>
</summary>
<!-- Failed to insert some or all of included XML --><includefile="..\..\Documentation\CodeComments.xml"path="/comments/comment[@id='FXEQ_PARAMETERS::Bandwidth2']/*"/>
<dd> Center frequency in Hz for band 3. Must be between FXEQ_MIN_FREQUENCY_CENTER and FXEQ_MAX_FREQUENCY_CENTER. </dd>
</summary>
<!-- Failed to insert some or all of included XML --><includefile="..\..\Documentation\CodeComments.xml"path="/comments/comment[@id='FXEQ_PARAMETERS::FrequencyCenter3']/*"/>
<dd> The boost or decrease to frequencies in band 3. Must be between FXEQ_MIN_GAIN and FXEQ_MAX_GAIN </dd>
</summary>
<!-- Failed to insert some or all of included XML --><includefile="..\..\Documentation\CodeComments.xml"path="/comments/comment[@id='FXEQ_PARAMETERS::Gain3']/*"/>
<dd> Width of band 3. Must be between FXEQ_MIN_BANDWIDTH and FXEQ_MAX_BANDWIDTH. </dd>
</summary>
<!-- Failed to insert some or all of included XML --><includefile="..\..\Documentation\CodeComments.xml"path="/comments/comment[@id='FXEQ_PARAMETERS::Bandwidth3']/*"/>
Parameters for use with the FXMasteringLimiter XAPO.
</summary>
<!-- Failed to insert some or all of included XML --><includefile="..\..\Documentation\CodeComments.xml"path="/comments/comment[@id='FXMASTERINGLIMITER_PARAMETERS']/*"/>
<dd> Speed at which the limiter stops affecting audio once it drops below the limiter's threshold. Value must be between <seecref="F:SharpDX.XAPO.Fx.MasteringLimiterParameters.MinimumRelease"/> and <seecref="F:SharpDX.XAPO.Fx.MasteringLimiterParameters.MaximumRelease"/>. </dd>
</summary>
<!-- Failed to insert some or all of included XML --><includefile="..\..\Documentation\CodeComments.xml"path="/comments/comment[@id='FXMASTERINGLIMITER_PARAMETERS::Release']/*"/>
<dd> Threshold of the limiter. Value must be between <seecref="F:SharpDX.XAPO.Fx.MasteringLimiterParameters.MinimumLoudness"/> and <seecref="F:SharpDX.XAPO.Fx.MasteringLimiterParameters.MaximumLoudness"/>. </dd>
</summary>
<!-- Failed to insert some or all of included XML --><includefile="..\..\Documentation\CodeComments.xml"path="/comments/comment[@id='FXMASTERINGLIMITER_PARAMETERS::Loudness']/*"/>
<unmanaged-short>unsigned int Loudness</unmanaged-short>
</member>
<membername="T:SharpDX.XAPO.Fx.ReverbParameters">
<summary>
Parameters for use with the FXReverb XAPO.
</summary>
<!-- Failed to insert some or all of included XML --><includefile="..\..\Documentation\CodeComments.xml"path="/comments/comment[@id='FXREVERB_PARAMETERS']/*"/>
<dd> Controls the character of the individual wall reflections. Set to minimum value to simulate a hard flat surface and to maximum value to simulate a diffuse surface.Value must be between FXREVERB_MIN_DIFFUSION and FXREVERB_MAX_DIFFUSION. </dd>
</summary>
<!-- Failed to insert some or all of included XML --><includefile="..\..\Documentation\CodeComments.xml"path="/comments/comment[@id='FXREVERB_PARAMETERS::Diffusion']/*"/>
<dd> Size of the room. Value must be between FXREVERB_MIN_ROOMSIZE and FXREVERB_MAX_ROOMSIZE. Note that physical meaning of <em>RoomSize</em> is subjective and not tied to any particular units. A smaller value will result in reflections reaching the listener more quickly while reflections will take longer with larger values for <em>RoomSize</em>. </dd>
</summary>
<!-- Failed to insert some or all of included XML --><includefile="..\..\Documentation\CodeComments.xml"path="/comments/comment[@id='FXREVERB_PARAMETERS::RoomSize']/*"/>
Called by XAudio2 to lock the input and output configurations of an XAPO allowing it to
do any final initialization beforeProcessis called on the realtime thread.
</summary>
<remarks>
<p>Once locked, the input and output configuration and any other locked parameters remain constant until
UnLockForProcess is called. After an XAPO is locked, further calls to <strong>LockForProcess</strong> have no effect until the UnLockForProcess function is called.</p><p>An XAPO indicates what specific formats it supports through its implementation of the
IsInputFormatSupported and
IsOutputFormatSupported methods. An XAPO should assert the input and
output configurations are supported and that any required effect-specific initialization is complete. The
IsInputFormatSupported,
IsOutputFormatSupported, and
Initialize methods should be used as necessary before calling this method.</p><p>Because Process is a nonblocking method, all internal memory buffers required for
Process should be allocated in <strong>LockForProcess</strong>.</p><p>Process is never called before <strong>LockForProcess</strong> returns successfully.</p><p><strong>LockForProcess</strong> is called directly by XAudio2 and should not be called by the client code.</p>
</remarks>
<!-- No matching elements were found for the following include tag --><includefile="..\..\Documentation\CodeComments.xml"path="/comments/comment[@id='IXAPO']/*"/>
Queries if a specific input format is supported for a given output format.
</summary>
<paramname="outputFormat">Output format.</param>
<paramname="requestedInputFormat">Input format to check for being supported.</param>
<paramname="supportedInputFormat"> If not NULL, and the input format is not supported for the given output format, ppSupportedInputFormat returns a pointer to the closest input format that is supported. Use {{XAPOFree}} to free the returned structure. </param>
<paramname="requestedOutputFormat">[in] Output format to check for being supported. </param>
<paramname="supportedOutputFormat">[out] If not NULL and the output format is not supported for the given input format, ppSupportedOutputFormat returns a pointer to the closest output format that is supported. Use {{XAPOFree}} to free the returned structure. </param>
Called by XAudio2 to lock the input and output configurations of an XAPO allowing it to
do any final initialization before {{Process}} is called on the realtime thread.
</summary>
<paramname="inputLockedParameters"> Array of input <seecref="T:SharpDX.XAPO.LockParameters"/> structures.pInputLockedParameters may be NULL if InputLockedParameterCount is 0, otherwise itmust have InputLockedParameterCount elements.</param>
<paramname="outputLockedParameters"> Array of output <seecref="T:SharpDX.XAPO.LockParameters"/> structures.pOutputLockedParameters may be NULL if OutputLockedParameterCount is 0, otherwise itmust have OutputLockedParameterCount elements.</param>
Runs the XAPO's digital signal processing (DSP) code on the given input and output buffers.
</summary>
<paramname="inputProcessParameters">[in] Input array of <seecref="T:SharpDX.XAPO.BufferParameters"/> structures. </param>
<paramname="outputProcessParameters">[in, out] Output array of <seecref="T:SharpDX.XAPO.BufferParameters"/> structures. On input, the value of <seecref="T:SharpDX.XAPO.BufferParameters"/>.ValidFrameCount indicates the number of frames that the XAPO should write to the output buffer. On output, the value of <seecref="T:SharpDX.XAPO.BufferParameters"/>.ValidFrameCount indicates the actual number of frames written. </param>
<paramname="isEnabled"> TRUE to process normally; FALSE to process thru. See Remarks for additional information. </param>
<returns> a <seecref="T:SharpDX.XAPO.RegistrationProperties"/> structure containing theregistration properties the XAPO was created with; use XAPOFree to free thestructure.</returns>
Called by XAudio2 to lock the input and output configurations of an XAPO allowing it to
do any final initialization beforeProcessis called on the realtime thread.
</summary>
<remarks>
<p>Once locked, the input and output configuration and any other locked parameters remain constant until
UnLockForProcess is called. After an XAPO is locked, further calls to <strong>LockForProcess</strong> have no effect until the UnLockForProcess function is called.</p><p>An XAPO indicates what specific formats it supports through its implementation of the
IsInputFormatSupported and
IsOutputFormatSupported methods. An XAPO should assert the input and
output configurations are supported and that any required effect-specific initialization is complete. The
IsInputFormatSupported,
IsOutputFormatSupported, and
Initialize methods should be used as necessary before calling this method.</p><p>Because Process is a nonblocking method, all internal memory buffers required for
Process should be allocated in <strong>LockForProcess</strong>.</p><p>Process is never called before <strong>LockForProcess</strong> returns successfully.</p><p><strong>LockForProcess</strong> is called directly by XAudio2 and should not be called by the client code.</p>
</remarks>
<!-- No matching elements were found for the following include tag --><includefile="..\..\Documentation\CodeComments.xml"path="/comments/comment[@id='IXAPO']/*"/>
<msdn-id>ee418455</msdn-id>
<unmanaged>IXAPO</unmanaged>
<unmanaged-short>IXAPO</unmanaged-short>
<summary>
Native Accessor to an existing AudioProcessor instance
Performs an explicit conversion from <seecref="T:System.IntPtr"/> to <seecref="T:SharpDX.XAPO.AudioProcessorNative"/>. (This method is a shortcut to <seecref="P:SharpDX.CppObject.NativePointer"/>)
<paramname="registrationPropertiesOut"><dd> Receives a reference to a <seecref="T:SharpDX.XAPO.RegistrationProperties"/> structure containing theregistration properties the XAPO was created with; use <strong>XAPOFree</strong> to free thestructure.</dd></param>
<returns><p>Returns <seecref="F:SharpDX.Result.Ok"/> if successful; returns an error code otherwise.</p></returns>
<!-- No matching elements were found for the following include tag --><includefile="..\..\Documentation\CodeComments.xml"path="/comments/comment[@id='IXAPO::GetRegistrationProperties']/*"/>
<paramname="requestedInputFormatRef"><dd>Input format to check for being supported.</dd></param>
<paramname="supportedInputFormatOut"><dd> If not <c>null</c>, and the input format is not supported for the given output format, <em>ppSupportedInputFormat</em> returns a reference to the closest input format that is supported. Use XAPOFree to free the returned structure. </dd></param>
<returns><p>Returns <seecref="F:SharpDX.Result.Ok"/> if the format pair is supported. Returns XAPO_E_FORMAT_UNSUPPORTED if the format pair is not supported.</p></returns>
<remarks>
<p>The <seecref="M:SharpDX.XAPO.AudioProcessor.IsOutputFormatSupported(SharpDX.Multimedia.WaveFormat,SharpDX.Multimedia.WaveFormat,SharpDX.Multimedia.WaveFormat@)"/> and <strong>IsInputFormatSupported</strong> methods allow an XAPO to indicate which audio formats it is capable of processing. If a requested format is not supported, the XAPO should return the closest format that it does support. The closest format should be determined based on frame rate, bit depth, and channel count, in that order of importance. The behavior of <strong>IsInputFormatSupported</strong> is allowed to change, based on the internal state of the XAPO, but its behavior should remain constant between calls to the <seecref="M:SharpDX.XAPO.AudioProcessor.LockForProcess(SharpDX.XAPO.LockParameters[],SharpDX.XAPO.LockParameters[])"/> and <seecref="M:SharpDX.XAPO.AudioProcessor.UnlockForProcess"/> methods.</p>
</remarks>
<!-- No matching elements were found for the following include tag --><includefile="..\..\Documentation\CodeComments.xml"path="/comments/comment[@id='IXAPO::IsInputFormatSupported']/*"/>
<paramname="requestedOutputFormatRef"><dd>[in] Output format to check for being supported. </dd></param>
<paramname="supportedOutputFormatOut"><dd>[out] If not <c>null</c> and the output format is not supported for the given input format, <em>ppSupportedOutputFormat</em> returns a reference to the closest output format that is supported. Use XAPOFree to free the returned structure. </dd></param>
<returns><p>Returns <seecref="F:SharpDX.Result.Ok"/> if the format pair is supported. Returns XAPO_E_FORMAT_UNSUPPORTED if the format pair is not supported.</p></returns>
<remarks>
<p>The <seecref="M:SharpDX.XAPO.AudioProcessor.IsInputFormatSupported(SharpDX.Multimedia.WaveFormat,SharpDX.Multimedia.WaveFormat,SharpDX.Multimedia.WaveFormat@)"/> and <strong>IsOutputFormatSupported</strong> methods allow an XAPO to indicate which audio formats it is capable of processing. If a requested format is not supported, the XAPO should return the closest format that it does support. The closest format should be determined based on frame rate, bit depth, and channel count, in that order of importance. The behavior of <strong>IsOutputFormatSupported</strong> is allowed to change, based on the internal state of the XAPO, but its behavior should remain constant between calls to the <seecref="M:SharpDX.XAPO.AudioProcessor.LockForProcess(SharpDX.XAPO.LockParameters[],SharpDX.XAPO.LockParameters[])"/> and <seecref="M:SharpDX.XAPO.AudioProcessor.UnlockForProcess"/> methods.</p>
</remarks>
<!-- No matching elements were found for the following include tag --><includefile="..\..\Documentation\CodeComments.xml"path="/comments/comment[@id='IXAPO::IsOutputFormatSupported']/*"/>
<paramname="dataRef"><dd> Effect-specific initialization parameters, may be <c>null</c> if <em>DataByteSize</em> is 0. </dd></param>
<paramname="dataByteSize"><dd> Size of <em>pData</em> in bytes, may be 0 if <em>pData</em> is <c>null</c>. </dd></param>
<returns><p>Returns <seecref="F:SharpDX.Result.Ok"/> if successful, an error code otherwise.</p></returns>
<remarks>
<p>The contents of <em>pData</em> are defined by a given XAPO. Immutable parameters (constant for the lifetime of the XAPO) should be set in this method. Once initialized, an XAPO cannot be initialized again. An XAPO should be initialized before passing it to XAudio2 as part of an effect chain.</p><table><tr><th>Note </th></tr><tr><td>XAudio2 does not call this method, it should be called by the client before passing the XAPO to XAudio2.</td></tr></table>
</remarks>
<!-- No matching elements were found for the following include tag --><includefile="..\..\Documentation\CodeComments.xml"path="/comments/comment[@id='IXAPO::Initialize']/*"/>
<p>Constant and locked parameters such as the input and output formats remain unchanged. Variables set by <seecref="M:SharpDX.XAPO.ParameterProvider.SetParameters(SharpDX.DataStream)"/> remain unchanged.</p><p>For example, an effect with delay should zero out its delay line during this method, but should not reallocate anything as the XAPO remains locked with a constant input and output configuration.</p><p>XAudio2 only calls this method if the XAPO is locked.</p><p>This method is called from the realtime thread and should not block.</p>
</remarks>
<!-- No matching elements were found for the following include tag --><includefile="..\..\Documentation\CodeComments.xml"path="/comments/comment[@id='IXAPO::Reset']/*"/>
<returns><p>Returns <seecref="F:SharpDX.Result.Ok"/> if successful, an error code otherwise.</p></returns>
<remarks>
<p>Once locked, the input and output configuration and any other locked parameters remain constant until
UnLockForProcess is called. After an XAPO is locked, further calls to <strong>LockForProcess</strong> have no effect until the UnLockForProcess function is called.</p><p>An XAPO indicates what specific formats it supports through its implementation of the
IsInputFormatSupported and
IsOutputFormatSupported methods. An XAPO should assert the input and
output configurations are supported and that any required effect-specific initialization is complete. The
IsInputFormatSupported,
IsOutputFormatSupported, and
Initialize methods should be used as necessary before calling this method.</p><p>Because Process is a nonblocking method, all internal memory buffers required for
Process should be allocated in <strong>LockForProcess</strong>.</p><p>Process is never called before <strong>LockForProcess</strong> returns successfully.</p><p><strong>LockForProcess</strong> is called directly by XAudio2 and should not be called by the client code.</p>
</remarks>
<!-- No matching elements were found for the following include tag --><includefile="..\..\Documentation\CodeComments.xml"path="/comments/comment[@id='IXAPO::LockForProcess']/*"/>
Deallocates variables that were allocated with theLockForProcessmethod.
</summary>
<remarks>
<p>Unlocking an XAPO instance allows it to be reused with
different input and output formats.
</p>
</remarks>
<!-- No matching elements were found for the following include tag --><includefile="..\..\Documentation\CodeComments.xml"path="/comments/comment[@id='IXAPO::UnlockForProcess']/*"/>
Runs the XAPO's digital signal processing (DSP) code on the given input and output buffers.
</summary>
<paramname="inputProcessParameterCount"><dd>[in] Number of elements in <em>pInputProcessParameters</em>. <table><tr><th>Note </th></tr><tr><td>XAudio2 currently supports only one input stream and one output stream.</td></tr></table></dd></param>
<paramname="inputProcessParametersRef"><dd>[in] Input array of <seecref="T:SharpDX.XAPO.BufferParameters"/> structures. </dd></param>
<paramname="outputProcessParameterCount"><dd>[in] Number of elements in <em>pOutputProcessParameters</em>. <table><tr><th>Note </th></tr><tr><td>XAudio2 currently supports only one input stream and one output stream.</td></tr></table></dd></param>
<paramname="outputProcessParametersRef"><dd>[in, out] Output array of <seecref="T:SharpDX.XAPO.BufferParameters"/> structures. On input, the value of <seecref="T:SharpDX.XAPO.BufferParameters"/>.<strong>ValidFrameCount</strong> indicates the number of frames that the XAPO should write to the output buffer. On output, the value of <seecref="T:SharpDX.XAPO.BufferParameters"/>.<strong>ValidFrameCount</strong> indicates the actual number of frames written. </dd></param>
<paramname="isEnabled"><dd> TRUE to process normally; <seecref="F:SharpDX.Result.False"/> to process thru. See Remarks for additional information. </dd></param>
<remarks>
<p>Implementations of this function should not block, as the function is called from the realtime audio processing thread.</p><p> All code that could cause a delay, such as format validation and memory allocation, should be put in the <seecref="M:SharpDX.XAPO.AudioProcessor.LockForProcess(SharpDX.XAPO.LockParameters[],SharpDX.XAPO.LockParameters[])"/> method, which is not called from the realtime audio processing thread. </p><p> For in-place processing, the <em>pInputProcessParameters</em> parameter will not necessarily be the same as <em>pOutputProcessParameters</em>. Rather, their <em>pBuffer</em> members will point to the same memory. </p><p> Multiple input and output buffers may be used with in-place XAPOs, though the input buffer count must equal the output buffer count. For in-place processing when multiple input and output buffers are used, the XAPO may assume the number of input buffers equals the number of output buffers. </p><p> In addition to writing to the output buffer, as appropriate, an XAPO is responsible for setting the output stream's buffer flags and valid frame count. </p><p> When <em>IsEnabled</em> is <seecref="F:SharpDX.Result.False"/>, the XAPO should not apply its normal processing to the given input/output buffers during. It should instead pass data from input to output with as little modification possible. Effects that perform format conversion should continue to do so. Effects must ensure transitions between normal and thru processing do not introduce discontinuities into the signal. </p><p> When writing a <strong>Process</strong> method, it is important to note XAudio2 audio data is interleaved, which means data from each channel is adjacent for a particular sample number. For example, if there was a 4-channel wave playing into an XAudio2 source voice, the audio data would be a sample of channel 0, a sample of channel 1, a sample of channel 2, a sample of channel 3, and then the next sample of channels 0, 1, 2, 3, and so on. </p>
</remarks>
<!-- No matching elements were found for the following include tag --><includefile="..\..\Documentation\CodeComments.xml"path="/comments/comment[@id='IXAPO::Process']/*"/>
Returns the number of input frames required to generate the given number of output frames.
</summary>
<paramname="outputFrameCount"><dd>The number of output frames desired.</dd></param>
<returns><p>Returns the number of input frames required.</p></returns>
<remarks>
<p>XAudio2 calls this method to determine what size input buffer an XAPO requires to generate
the given number of output frames. This method only needs to be called once while an XAPO is locked.
<strong>CalcInputFrames</strong> is only called by XAudio2 if the XAPO is locked.</p><p>This function should not block, because it may be called from the realtime audio processing thread.</p>
</remarks>
<!-- No matching elements were found for the following include tag --><includefile="..\..\Documentation\CodeComments.xml"path="/comments/comment[@id='IXAPO::CalcInputFrames']/*"/>
Returns the number of output frames that will be generated from a given number of input frames.
</summary>
<paramname="inputFrameCount"><dd>The number of input frames.</dd></param>
<returns><p>Returns the number of output frames that will be produced.</p></returns>
<remarks>
<p>XAudio2 calls this method to determine how large of an output buffer an XAPO will require for a
certain number of input frames. <strong>CalcOutputFrames</strong> is only called by XAudio2 if the XAPO is locked.</p><p>This function should not block, because it may be called from the realtime audio processing thread.</p>
</remarks>
<!-- No matching elements were found for the following include tag --><includefile="..\..\Documentation\CodeComments.xml"path="/comments/comment[@id='IXAPO::CalcOutputFrames']/*"/>
<msdn-id>ee418450</msdn-id>
<unmanaged>unsigned int IXAPO::CalcOutputFrames([In] unsigned int InputFrameCount)</unmanaged>
Queries if a specific input format is supported for a given output format.
</summary>
<paramname="outputFormat">Output format.</param>
<paramname="requestedInputFormat">Input format to check for being supported.</param>
<paramname="supportedInputFormat"> If not NULL, and the input format is not supported for the given output format, ppSupportedInputFormat returns a pointer to the closest input format that is supported. Use {{XAPOFree}} to free the returned structure. </param>
<paramname="requestedOutputFormat">[in] Output format to check for being supported. </param>
<paramname="supportedOutputFormat">[out] If not NULL and the output format is not supported for the given input format, ppSupportedOutputFormat returns a pointer to the closest output format that is supported. Use {{XAPOFree}} to free the returned structure. </param>
Called by XAudio2 to lock the input and output configurations of an XAPO allowing it to
do any final initialization before {{Process}} is called on the realtime thread.
</summary>
<paramname="inputLockedParameters"> Array of input <seecref="T:SharpDX.XAPO.LockParameters"/> structures.pInputLockedParameters may be NULL if InputLockedParameterCount is 0, otherwise itmust have InputLockedParameterCount elements.</param>
<paramname="outputLockedParameters"> Array of output <seecref="T:SharpDX.XAPO.LockParameters"/> structures.pOutputLockedParameters may be NULL if OutputLockedParameterCount is 0, otherwise itmust have OutputLockedParameterCount elements.</param>
Runs the XAPO's digital signal processing (DSP) code on the given input and output buffers.
</summary>
<paramname="inputProcessParameters">[in] Input array of <seecref="T:SharpDX.XAPO.BufferParameters"/> structures. </param>
<paramname="outputProcessParameters">[in, out] Output array of <seecref="T:SharpDX.XAPO.BufferParameters"/> structures. On input, the value of <seecref="T:SharpDX.XAPO.BufferParameters"/>.ValidFrameCount indicates the number of frames that the XAPO should write to the output buffer. On output, the value of <seecref="T:SharpDX.XAPO.BufferParameters"/>.ValidFrameCount indicates the actual number of frames written. </param>
<paramname="isEnabled"> TRUE to process normally; FALSE to process thru. See Remarks for additional information. </param>
<returns> a <seecref="T:SharpDX.XAPO.RegistrationProperties"/> structure containing theregistration properties the XAPO was created with; use XAPOFree to free thestructure.</returns>
Retrieves the requested interface reference if the XAPO supports it.
</summary>
<remarks>
<p> XAPO instances are passed to XAudio2 as <strong><seecref="T:SharpDX.ComObject"/></strong> interfaces and XAudio2 uses <strong>QueryInterface</strong> to acquire an <seecref="T:SharpDX.XAPO.AudioProcessor"/> interface and to detect whether the XAPO implements the <seecref="T:SharpDX.XAPO.ParameterProvider"/> interface. Implementations of <seecref="T:SharpDX.XAPO.AudioProcessor"/> must accept requests for <strong>__uuidof(<seecref="T:SharpDX.XAPO.AudioProcessor"/>)</strong> and if <seecref="T:SharpDX.XAPO.ParameterProvider"/> is implemented must also accept requests for <strong>__uuidof(<seecref="T:SharpDX.XAPO.ParameterProvider"/>)</strong>. </p>
</remarks>
<!-- No matching elements were found for the following include tag --><includefile="..\..\Documentation\CodeComments.xml"path="/comments/comment[@id='IXAPOParameters']/*"/>
Retrieves the requested interface reference if the XAPO supports it.
</summary>
<remarks>
<p> XAPO instances are passed to XAudio2 as <strong><seecref="T:SharpDX.ComObject"/></strong> interfaces and XAudio2 uses <strong>QueryInterface</strong> to acquire an <seecref="T:SharpDX.XAPO.AudioProcessor"/> interface and to detect whether the XAPO implements the <seecref="T:SharpDX.XAPO.ParameterProvider"/> interface. Implementations of <seecref="T:SharpDX.XAPO.AudioProcessor"/> must accept requests for <strong>__uuidof(<seecref="T:SharpDX.XAPO.AudioProcessor"/>)</strong> and if <seecref="T:SharpDX.XAPO.ParameterProvider"/> is implemented must also accept requests for <strong>__uuidof(<seecref="T:SharpDX.XAPO.ParameterProvider"/>)</strong>. </p>
</remarks>
<!-- No matching elements were found for the following include tag --><includefile="..\..\Documentation\CodeComments.xml"path="/comments/comment[@id='IXAPOParameters']/*"/>
Performs an explicit conversion from <seecref="T:System.IntPtr"/> to <seecref="T:SharpDX.XAPO.ParameterProviderNative"/>. (This method is a shortcut to <seecref="P:SharpDX.CppObject.NativePointer"/>)
<paramname="parameterByteSize"><dd> Size of <em>pParameters</em>, in bytes. </dd></param>
<remarks>
<p>The data in <em>pParameters</em> is completely effect-specific and determined by the implementation of the <seecref="M:SharpDX.XAPO.ParameterProvider.SetParameters(SharpDX.DataStream)"/> function. The data passed to <strong>SetParameters</strong> can be used to set the state of the XAPO and control the behavior of the <seecref="M:SharpDX.XAPO.AudioProcessor.Process(SharpDX.XAPO.BufferParameters[],SharpDX.XAPO.BufferParameters[],System.Boolean)"/> function.</p><p><strong>SetParameters</strong> can only be called on the real-time audio processing thread; no synchronization between <strong>SetParameters</strong> and the <seecref="M:SharpDX.XAPO.AudioProcessor.Process(SharpDX.XAPO.BufferParameters[],SharpDX.XAPO.BufferParameters[],System.Boolean)"/> method is necessary. However, the <seecref="M:SharpDX.XAudio2.Voice.SetEffectParameters(System.Int32,System.IntPtr,System.Int32,System.Int32)"/> method may be called from any thread as it adds in the required synchronization to deliver a copy (asynchronously) of the parameters to <strong>SetParameters</strong> on the real-time thread; no synchronization between <seecref="M:SharpDX.XAudio2.Voice.SetEffectParameters(System.Int32,System.IntPtr,System.Int32,System.Int32)"/> and the <seecref="M:SharpDX.XAPO.AudioProcessor.Process(SharpDX.XAPO.BufferParameters[],SharpDX.XAPO.BufferParameters[],System.Boolean)"/> method is necessary.</p>
</remarks>
<!-- No matching elements were found for the following include tag --><includefile="..\..\Documentation\CodeComments.xml"path="/comments/comment[@id='IXAPOParameters::SetParameters']/*"/>
<msdn-id>ee418447</msdn-id>
<unmanaged>void IXAPOParameters::SetParameters([In, Buffer] const void* pParameters,[In] unsigned int ParameterByteSize)</unmanaged>
Gets the current values for any effect-specific parameters.
</summary>
<paramname="parametersRef"><dd>[in, out] Receives an effect-specific parameter block. </dd></param>
<paramname="parameterByteSize"><dd>[in] Size of <em>pParameters</em>, in bytes. </dd></param>
<remarks>
<p>The data in <em>pParameters</em> is completely effect-specific and determined by the implementation of the <seecref="M:SharpDX.XAPO.ParameterProvider.GetParameters(SharpDX.DataStream)"/> function. The data returned in <em>pParameters</em> can be used to provide information about the current state of the XAPO.</p><p>Unlike SetParameters, XAudio2 does not call this method on the realtime audio processing thread. Thus, the XAPO must protect variables shared with <seecref="M:SharpDX.XAPO.ParameterProvider.SetParameters(SharpDX.DataStream)"/> or <seecref="M:SharpDX.XAPO.AudioProcessor.Process(SharpDX.XAPO.BufferParameters[],SharpDX.XAPO.BufferParameters[],System.Boolean)"/> using appropriate synchronization. The CXAPOParametersBase class is an implementation of <seecref="T:SharpDX.XAPO.ParameterProvider"/> and its implementation of <strong>GetParameters</strong> efficiently handles this synchronization for the user.</p><p>XAudio2 calls this method from the <seecref="M:SharpDX.XAudio2.Voice.GetEffectParameters(System.Int32,System.IntPtr,System.Int32)"/> method.</p><p>This method may block and should never be called from the realtime audio processing thread instead get the current parameters from CXAPOParametersBase::BeginProcess.</p>
</remarks>
<!-- No matching elements were found for the following include tag --><includefile="..\..\Documentation\CodeComments.xml"path="/comments/comment[@id='IXAPOParameters::GetParameters']/*"/>
<msdn-id>ee418443</msdn-id>
<unmanaged>void IXAPOParameters::GetParameters([Out, Buffer] void* pParameters,[In] unsigned int ParameterByteSize)</unmanaged>
Defines stream buffer parameters that may change from one call to the next. Used with theProcessmethod.
</summary>
<remarks>
<p>Although the format and maximum size values of a particular stream buffer are constant, as defined by the XAPO_LOCKFORPROCESS_PARAMETERS structure, the actual memory address of the stream buffer is permitted to change. For constant-bit-rate (CBR) XAPOs, <strong>ValidFrameCount</strong> is constant and is always equal to the corresponding XAPO_LOCKFORPROCESS_PARAMETERS.<strong>MaxFrameCount</strong> for this buffer.</p><table><tr><th>Note </th></tr><tr><td>Only constant-bit-rate XAPOs are currently supported.</td></tr></table>
</remarks>
<!-- No matching elements were found for the following include tag --><includefile="..\..\Documentation\CodeComments.xml"path="/comments/comment[@id='XAPO_PROCESS_BUFFER_PARAMETERS']/*"/>
<!-- No matching elements were found for the following include tag --><includefile="..\..\Documentation\CodeComments.xml"path="/comments/comment[@id='XAPO_PROCESS_BUFFER_PARAMETERS::pBuffer']/*"/>
<!-- No matching elements were found for the following include tag --><includefile="..\..\Documentation\CodeComments.xml"path="/comments/comment[@id='XAPO_PROCESS_BUFFER_PARAMETERS::BufferFlags']/*"/>
<!-- No matching elements were found for the following include tag --><includefile="..\..\Documentation\CodeComments.xml"path="/comments/comment[@id='XAPO_PROCESS_BUFFER_PARAMETERS::ValidFrameCount']/*"/>
<unmanaged>unsigned int ValidFrameCount</unmanaged>
<unmanaged-short>unsigned int ValidFrameCount</unmanaged-short>
</member>
<membername="T:SharpDX.XAPO.LockParameters">
<summary>
No documentation.
</summary>
<!-- No matching elements were found for the following include tag --><includefile="..\..\Documentation\CodeComments.xml"path="/comments/comment[@id='XAPO_LOCKFORPROCESS_BUFFER_PARAMETERS']/*"/>
<!-- No matching elements were found for the following include tag --><includefile="..\..\Documentation\CodeComments.xml"path="/comments/comment[@id='XAPO_LOCKFORPROCESS_BUFFER_PARAMETERS::pFormat']/*"/>
<!-- No matching elements were found for the following include tag --><includefile="..\..\Documentation\CodeComments.xml"path="/comments/comment[@id='XAPO_LOCKFORPROCESS_BUFFER_PARAMETERS::MaxFrameCount']/*"/>
<unmanaged>unsigned int MaxFrameCount</unmanaged>
<unmanaged-short>unsigned int MaxFrameCount</unmanaged-short>
Describes general characteristics of an XAPO. Used withIXAPO::GetRegistrationPropertiesandCXAPOBase::CXAPOBase.
</summary>
<!-- No matching elements were found for the following include tag --><includefile="..\..\Documentation\CodeComments.xml"path="/comments/comment[@id='XAPO_REGISTRATION_PROPERTIES']/*"/>
<!-- No matching elements were found for the following include tag --><includefile="..\..\Documentation\CodeComments.xml"path="/comments/comment[@id='XAPO_REGISTRATION_PROPERTIES::clsid']/*"/>
<!-- No matching elements were found for the following include tag --><includefile="..\..\Documentation\CodeComments.xml"path="/comments/comment[@id='XAPO_REGISTRATION_PROPERTIES::FriendlyName']/*"/>
<!-- No matching elements were found for the following include tag --><includefile="..\..\Documentation\CodeComments.xml"path="/comments/comment[@id='XAPO_REGISTRATION_PROPERTIES::CopyrightInfo']/*"/>
<!-- No matching elements were found for the following include tag --><includefile="..\..\Documentation\CodeComments.xml"path="/comments/comment[@id='XAPO_REGISTRATION_PROPERTIES::MajorVersion']/*"/>
<unmanaged>unsigned int MajorVersion</unmanaged>
<unmanaged-short>unsigned int MajorVersion</unmanaged-short>
<!-- No matching elements were found for the following include tag --><includefile="..\..\Documentation\CodeComments.xml"path="/comments/comment[@id='XAPO_REGISTRATION_PROPERTIES::MinorVersion']/*"/>
<unmanaged>unsigned int MinorVersion</unmanaged>
<unmanaged-short>unsigned int MinorVersion</unmanaged-short>
<!-- No matching elements were found for the following include tag --><includefile="..\..\Documentation\CodeComments.xml"path="/comments/comment[@id='XAPO_REGISTRATION_PROPERTIES::Flags']/*"/>
<!-- No matching elements were found for the following include tag --><includefile="..\..\Documentation\CodeComments.xml"path="/comments/comment[@id='XAPO_REGISTRATION_PROPERTIES::MinInputBufferCount']/*"/>
<unmanaged>unsigned int MinInputBufferCount</unmanaged>
<unmanaged-short>unsigned int MinInputBufferCount</unmanaged-short>
<!-- No matching elements were found for the following include tag --><includefile="..\..\Documentation\CodeComments.xml"path="/comments/comment[@id='XAPO_REGISTRATION_PROPERTIES::MaxInputBufferCount']/*"/>
<unmanaged>unsigned int MaxInputBufferCount</unmanaged>
<unmanaged-short>unsigned int MaxInputBufferCount</unmanaged-short>
<!-- No matching elements were found for the following include tag --><includefile="..\..\Documentation\CodeComments.xml"path="/comments/comment[@id='XAPO_REGISTRATION_PROPERTIES::MinOutputBufferCount']/*"/>
<unmanaged>unsigned int MinOutputBufferCount</unmanaged>
<unmanaged-short>unsigned int MinOutputBufferCount</unmanaged-short>
<!-- No matching elements were found for the following include tag --><includefile="..\..\Documentation\CodeComments.xml"path="/comments/comment[@id='XAPO_REGISTRATION_PROPERTIES::MaxOutputBufferCount']/*"/>
<unmanaged>unsigned int MaxOutputBufferCount</unmanaged>
<unmanaged-short>unsigned int MaxOutputBufferCount</unmanaged-short>
</member>
<membername="T:SharpDX.XAudio2.NamespaceDoc">
<summary>
The <seecref="N:SharpDX.XAudio2"/> namespace provides a managed XAudio2 API.
Queries if a specific input format is supported for a given output format.
</summary>
<paramname="outputFormat">Output format.</param>
<paramname="requestedInputFormat">Input format to check for being supported.</param>
<paramname="supportedInputFormat"> If not NULL, and the input format is not supported for the given output format, ppSupportedInputFormat returns a pointer to the closest input format that is supported. Use {{XAPOFree}} to free the returned structure. </param>
<paramname="requestedOutputFormat">[in] Output format to check for being supported. </param>
<paramname="supportedOutputFormat">[out] If not NULL and the output format is not supported for the given input format, ppSupportedOutputFormat returns a pointer to the closest output format that is supported. Use {{XAPOFree}} to free the returned structure. </param>
Called by XAudio2 to lock the input and output configurations of an XAPO allowing it to
do any final initialization before {{Process}} is called on the realtime thread.
</summary>
<paramname="inputLockedParameters"> Array of input <seecref="T:SharpDX.XAPO.LockParameters"/> structures.pInputLockedParameters may be NULL if InputLockedParameterCount is 0, otherwise itmust have InputLockedParameterCount elements.</param>
<paramname="outputLockedParameters"> Array of output <seecref="T:SharpDX.XAPO.LockParameters"/> structures.pOutputLockedParameters may be NULL if OutputLockedParameterCount is 0, otherwise itmust have OutputLockedParameterCount elements.</param>
Runs the XAPO's digital signal processing (DSP) code on the given input and output buffers.
</summary>
<paramname="inputProcessParameters">[in] Input array of <seecref="T:SharpDX.XAPO.BufferParameters"/> structures. </param>
<paramname="outputProcessParameters">[in, out] Output array of <seecref="T:SharpDX.XAPO.BufferParameters"/> structures. On input, the value of <seecref="T:SharpDX.XAPO.BufferParameters"/>.ValidFrameCount indicates the number of frames that the XAPO should write to the output buffer. On output, the value of <seecref="T:SharpDX.XAPO.BufferParameters"/>.ValidFrameCount indicates the actual number of frames written. </param>
<paramname="isEnabled"> TRUE to process normally; FALSE to process thru. See Remarks for additional information. </param>
<returns> a <seecref="T:SharpDX.XAPO.RegistrationProperties"/> structure containing theregistration properties the XAPO was created with; use XAPOFree to free thestructure.</returns>