Index: CLAM/plugins/spacialization/src/SampleAccurateStreamDelay.hxx =================================================================== --- CLAM/plugins/spacialization/src/SampleAccurateStreamDelay.hxx (revisión: 13985) +++ CLAM/plugins/spacialization/src/SampleAccurateStreamDelay.hxx (copia de trabajo) @@ -37,6 +37,13 @@ AudioOutPort _out; public: + SampleAccurateStreamDelay(const Config& config = Config()) + : _in("InputStream", this) + , _out("OutputStream", this) + { + Configure( config ); + } + bool ConcreteConfigure(const ProcessingConfig& c) { CopyAsConcreteConfig(_config, c); @@ -59,12 +66,6 @@ return true; } - SampleAccurateStreamDelay(const Config& config = Config()) - : _in("InputStream", this) - , _out("OutputStream", this) - { - Configure( config ); - } const char* GetClassName() const { return "SampleAccurateStreamDelay"; } Index: CLAM/plugins/spacialization/src/SampleAccurateDelay.hxx =================================================================== --- CLAM/plugins/spacialization/src/SampleAccurateDelay.hxx (revisión: 13985) +++ CLAM/plugins/spacialization/src/SampleAccurateDelay.hxx (copia de trabajo) @@ -72,6 +72,7 @@ void setDelay(float delaySamples) { + CLAM_ASSERT(_delayBufferSize, "setDelay: Zero delay delay is not allowed!"); Index delayInSamples = round(delaySamples); if (delayInSamples > _delayBufferSize) @@ -93,6 +94,7 @@ TData delayLine(TData x) { + CLAM_ASSERT(_delayBufferSize, "delayLine: Zero delay buffer is not allowed!"); Index writeindex = _writeIndex++ % _delayBufferSize; Index readindex = _readIndex++ % _delayBufferSize; @@ -106,7 +108,8 @@ public: SampleAccurateDelay(const Config& config = Config()) - : _crossFadeIndex(0) + : _delayBufferSize(1) + , _crossFadeIndex(0) , _delayControl("Delay in Samples", this) { Configure( config ); @@ -119,7 +122,6 @@ const ProcessingConfig & GetConfig() const { return _config; } - virtual bool Do() = 0; }; } // namespace CLAM Index: CLAM/plugins/spacialization/src/SampleAccurateBufferDelay.hxx =================================================================== --- CLAM/plugins/spacialization/src/SampleAccurateBufferDelay.hxx (revisión: 13985) +++ CLAM/plugins/spacialization/src/SampleAccurateBufferDelay.hxx (copia de trabajo) @@ -43,6 +43,30 @@ { Configure( config ); } + + bool ConcreteConfigure(const ProcessingConfig& c) + { + CopyAsConcreteConfig(_config, c); + _sampleRate = _config.GetSampleRate(); + + _crossFadeBuffer.resize(CROSSFADESIZE); + std::fill(_crossFadeBuffer.begin(), _crossFadeBuffer.end(), 0.); + + _delayBuffer.resize(_config.GetMaxDelayInSeconds() * _sampleRate); + _delayBufferSize = _delayBuffer.size(); + _readIndex = _writeIndex = (_delayBufferSize-1); + std::fill(_delayBuffer.begin(), _delayBuffer.end(), 0.); + _delayControl.DoControl(0.); +/* + const unsigned buffersize = BackendBufferSize(); + _in.SetSize(buffersize); + _in.SetHop(buffersize); + _out.SetSize(buffersize); + _out.SetHop(buffersize); +*/ + + return true; + } const char* GetClassName() const { return "SampleAccurateBufferDelay"; }