public ClientAudioProvider() { _filters = new OnlineFilter[2]; _filters[0] = OnlineFilter.CreateBandpass(ImpulseResponse.Finite, AudioManager.INPUT_SAMPLE_RATE, 560, 3900); _filters[1] = OnlineFilter.CreateBandpass(ImpulseResponse.Finite, AudioManager.INPUT_SAMPLE_RATE, 100, 4500); JitterBufferProviderInterface = new JitterBufferProviderInterface(new WaveFormat(AudioManager.INPUT_SAMPLE_RATE, 2)); SampleProvider = new Pcm16BitToSampleProvider(JitterBufferProviderInterface); _decoder = OpusDecoder.Create(AudioManager.INPUT_SAMPLE_RATE, 1); _decoder.ForwardErrorCorrection = false; _highPassFilter = BiQuadFilter.HighPassFilter(AudioManager.INPUT_SAMPLE_RATE, 520, 0.97f); _lowPassFilter = BiQuadFilter.LowPassFilter(AudioManager.INPUT_SAMPLE_RATE, 4130, 2.0f); var effect = new CachedAudioEffect(CachedAudioEffect.AudioEffectTypes.NATO_TONE); if (effect.AudioEffectBytes.Length > 0) { natoTone = ConversionHelpers.ByteArrayToShortArray(effect.AudioEffectBytes); var vol = Settings.GlobalSettingsStore.Instance.GetClientSetting(GlobalSettingsKeys.NATOToneVolume) .FloatValue; for (int i = 0; i < natoTone.Length; i++) { natoTone[i] = (short)(natoTone[i] * vol); } } }
public AudioManager(ConcurrentDictionary <string, SRClient> clientsList) { _clientsList = clientsList; _cachedAudioEffects = new CachedAudioEffect[Enum.GetNames(typeof(CachedAudioEffect.AudioEffectTypes)).Length]; for (var i = 0; i < _cachedAudioEffects.Length; i++) { _cachedAudioEffects[i] = new CachedAudioEffect((CachedAudioEffect.AudioEffectTypes)i); } }