/// <summary> /// Calculates DSP settings for the specified listener and emitter. See remarks. /// </summary> /// <param name="listener">The <see cref="Listener"/>.</param> /// <param name="emitter">The <see cref="Emitter"/>.</param> /// <param name="flags">The <see cref="CalculateFlags"/>.</param> /// <param name="settings">The <see cref="DspSettings"/>.</param> /// <remarks>The source and destination channel count must be set on <see cref="DspSettings" /> before calling this method.</remarks> public void Calculate(Listener listener, Emitter emitter, CalculateFlags flags, DspSettings settings) { if (settings == null) { throw new ArgumentNullException(nameof(settings)); } DspSettings.__Native settingsNative; settingsNative.SrcChannelCount = settings.SourceChannelCount; settingsNative.DstChannelCount = settings.DestinationChannelCount; unsafe { fixed(void *pMatrix = settings.MatrixCoefficients) { fixed(void *pDelays = settings.DelayTimes) { settingsNative.MatrixCoefficientsPointer = (IntPtr)pMatrix; settingsNative.DelayTimesPointer = (IntPtr)pDelays; XAudio2Native.X3DAudioCalculate(ref _handle, listener, emitter, flags, new IntPtr(&settingsNative)); } } } settings.__MarshalFrom(ref settingsNative); }
public static T CreateAudioReverb <T>() where T : ComObject { unsafe { IntPtr reverbPtr = default; XAudio2Native.CreateAudioReverb(0u, &reverbPtr).CheckError(); return(MarshallingHelpers.FromPointer <T>(reverbPtr)); } }
internal IXAudio2(ProcessorSpecifier processorSpecifier, bool registerCallback) : base(XAudio2Native.XAudio2Create(0u, processorSpecifier)) { // Register engine callback if (registerCallback) { _engineCallback = new EngineCallbackImpl(this); RegisterForCallbacks(_engineCallback); } }
internal IXAudio2(ProcessorSpecifier processorSpecifier, bool registerCallback) : base() { XAudio2Native.XAudio2Create(processorSpecifier, out IntPtr nativePtr).CheckError(); NativePointer = nativePtr; // Register engine callback if (registerCallback) { _engineCallback = new EngineCallbackImpl(this); RegisterForCallbacks(_engineCallback); } }
public static unsafe Result XAudio2Create(ProcessorSpecifier processor, bool registerCallback, out IXAudio2?XAudio2) { Result result = XAudio2Native.XAudio2Create(processor, out IntPtr nativePtr); if (result.Failure) { XAudio2 = default; return(result); } XAudio2 = new IXAudio2(nativePtr, registerCallback); return(result); }
public static Result CreateAudioVolumeMeter <T>(out T?volumeMeter) where T : ComObject { unsafe { IntPtr reverbPtr = default; Result result = XAudio2Native.CreateAudioVolumeMeter(0u, &reverbPtr); if (result.Failure) { volumeMeter = default; return(result); } volumeMeter = MarshallingHelpers.FromPointer <T>(reverbPtr); return(result); } }
/// <summary> /// Initializes a new instance of the <see cref="X3DAudio"/> class. /// </summary> /// <param name="speakerChannelMask"> /// Assignment of channels to speaker positions. /// This value must not be zero. /// </param> /// <param name="speedOfSound">The speed of sound.</param> public X3DAudio(int speakerChannelMask, float speedOfSound = SpeedOfSound) { XAudio2Native.X3DAudioInitialize(speakerChannelMask, speedOfSound, out _handle).CheckError(); }
/// <summary> /// Initializes a new instance of the <see cref="X3DAudio"/> class. /// </summary> /// <param name="speakers">The speakers config.</param> /// <param name="speedOfSound">The speed of sound.</param> public X3DAudio(Speakers speakers, float speedOfSound = SpeedOfSound) { XAudio2Native.X3DAudioInitialize((int)speakers, speedOfSound, out _handle).CheckError(); }
public static Result CreateAudioVolumeMeter(out ComObject volumeMeter) => XAudio2Native.CreateAudioVolumeMeter(out volumeMeter);
public static Result CreateAudioReverb(out ComObject reverb) => XAudio2Native.CreateAudioReverb(out reverb);