示例#1
0
        protected virtual new void Dispose(bool isDisposing)
        {
            base.Dispose(isDisposing);

            if (_isDisposed)
            {
                return;
            }

            if (isDisposing)
            {
                if (_sampleSource != null)
                {
                    _sampleSource.Dispose();
                    _sampleSource = null;
                }

                if (_soundTouch != null)
                {
                    _soundTouch.Dispose();
                    _soundTouch = null;
                }
            }

            _isDisposed = true;
        }
示例#2
0
        public SoundTouchSource(IWaveSource waveSource, ISoundTouch soundTouch)
            : base(waveSource)
        {
            _waveSource = waveSource;

            _soundTouch = soundTouch;
            _soundTouch.SetChannels((uint)_waveSource.WaveFormat.Channels);
            _soundTouch.SetSampleRate((uint)_waveSource.WaveFormat.SampleRate);

            lockObject = new object();
        }
示例#3
0
        public SoundTouchSource(ISampleSource sampleSource, int latency, ISoundTouch soundTouch)
            : base(sampleSource)
        {
            _sampleSource = sampleSource;
            _latency      = latency;
            _soundTouch   = soundTouch;

            _soundTouch.SetChannels(_sampleSource.WaveFormat.Channels);
            _soundTouch.SetSampleRate(_sampleSource.WaveFormat.SampleRate);

            _sourceReadBuffer     = new float[(_sampleSource.WaveFormat.SampleRate * _sampleSource.WaveFormat.Channels * (long)_latency) / 1000];
            _soundTouchReadBuffer = new float[_sourceReadBuffer.Length * 10];

            lockObject = new object();
        }