public void FrameUpdate(IntPtr envRenderer, Vector3 sourcePosition, Vector3 listenerPosition, Vector3 listenerAhead, Vector3 listenerUp, float partialOcclusionRadius, OcclusionMode directOcclusionMode, OcclusionMethod directOcclusionMethod) { directSoundPath = PhononCore.iplGetDirectSoundPath(envRenderer, listenerPosition, listenerAhead, listenerUp, sourcePosition, partialOcclusionRadius, directOcclusionMode, directOcclusionMethod); }
public static extern DirectSoundPath iplGetDirectSoundPath(IntPtr environment, Vector3 listenerPosition, Vector3 listenerAhead, Vector3 listenerUp, Source source, float sourceRadius, OcclusionMode occlusionMode, OcclusionMethod occlusionMethod);
public void AudioFrameUpdate(float[] data, int channels, bool physicsBasedAttenuation, float directMixFraction, bool directBinauralEnabled, bool applyAirAbsorption, HRTFInterpolation hrtfInterpolation, OcclusionMode directOcclusionMode, OcclusionMethod directOcclusionMethod) { DirectSoundEffectOptions directSoundEffectOptions; directSoundEffectOptions.applyDistanceAttenuation = physicsBasedAttenuation ? Bool.True : Bool.False; directSoundEffectOptions.applyAirAbsorption = applyAirAbsorption ? Bool.True : Bool.False; directSoundEffectOptions.occlusionMode = directOcclusionMode; AudioBuffer inputBuffer; inputBuffer.audioFormat = inputFormat; inputBuffer.numSamples = data.Length / channels; inputBuffer.deInterleavedBuffer = null; inputBuffer.interleavedBuffer = data; AudioBuffer outputBuffer; outputBuffer.audioFormat = outputFormat; outputBuffer.numSamples = data.Length / channels; outputBuffer.deInterleavedBuffer = null; outputBuffer.interleavedBuffer = data; for (int i = 0; i < data.Length; i++) { data[i] *= directMixFraction; } PhononCore.iplApplyDirectSoundEffect(directSoundEffect, inputBuffer, directSoundPath, directSoundEffectOptions, outputBuffer); Vector3 directDirection = directSoundPath.direction; if ((outputFormat.channelLayout == ChannelLayout.Stereo) && directBinauralEnabled) { // Apply binaural audio to direct sound. PhononCore.iplApplyBinauralEffect(directBinauralEffect, outputBuffer, directDirection, hrtfInterpolation, outputBuffer); } else if (outputFormat.channelLayout == ChannelLayout.Custom) { // Apply panning fo custom speaker layout. PhononCore.iplApplyPanningEffect(directCustomPanningEffect, outputBuffer, directDirection, outputBuffer); } }
public static extern DirectSoundPath iplGetDirectSoundPath(IntPtr renderer, Vector3 listenerPosition, Vector3 listenerAhead, Vector3 listenerUp, Vector3 sourcePosition, float sourceRadius, OcclusionMode occlusionMode, OcclusionMethod occlusionMethod);