mirror of
https://github.com/thestk/stk
synced 2026-01-15 05:51:52 +00:00
Version 4.4.3
This commit is contained in:
committed by
Stephen Sinclair
parent
baca57040b
commit
0aec39260a
@@ -10,7 +10,7 @@
|
||||
A non-interpolating delay line is typically used in fixed
|
||||
delay-length applications, such as for reverberation.
|
||||
|
||||
by Perry R. Cook and Gary P. Scavone, 1995 - 2010.
|
||||
by Perry R. Cook and Gary P. Scavone, 1995-2011.
|
||||
*/
|
||||
/***************************************************/
|
||||
|
||||
@@ -23,13 +23,8 @@ Delay :: Delay( unsigned long delay, unsigned long maxDelay )
|
||||
// Writing before reading allows delays from 0 to length-1.
|
||||
// If we want to allow a delay of maxDelay, we need a
|
||||
// delay-line of length = maxDelay+1.
|
||||
if ( maxDelay < 1 ) {
|
||||
errorString_ << "Delay::Delay: maxDelay must be > 0!\n";
|
||||
handleError( StkError::FUNCTION_ARGUMENT );
|
||||
}
|
||||
|
||||
if ( delay > maxDelay ) {
|
||||
errorString_ << "Delay::Delay: maxDelay must be > than delay argument!\n";
|
||||
oStream_ << "Delay::Delay: maxDelay must be > than delay argument!\n";
|
||||
handleError( StkError::FUNCTION_ARGUMENT );
|
||||
}
|
||||
|
||||
@@ -47,44 +42,25 @@ Delay :: ~Delay()
|
||||
void Delay :: setMaximumDelay( unsigned long delay )
|
||||
{
|
||||
if ( delay < inputs_.size() ) return;
|
||||
|
||||
if ( delay < 0 ) {
|
||||
errorString_ << "Delay::setMaximumDelay: argument (" << delay << ") less than zero!\n";
|
||||
handleError( StkError::WARNING );
|
||||
return;
|
||||
}
|
||||
else if ( delay < delay_ ) {
|
||||
errorString_ << "Delay::setMaximumDelay: argument (" << delay << ") less than current delay setting (" << delay_ << ")!\n";
|
||||
handleError( StkError::WARNING );
|
||||
return;
|
||||
}
|
||||
|
||||
inputs_.resize( delay + 1 );
|
||||
}
|
||||
|
||||
void Delay :: setDelay( unsigned long delay )
|
||||
{
|
||||
if ( delay > inputs_.size() - 1 ) { // The value is too big.
|
||||
errorString_ << "Delay::setDelay: argument (" << delay << ") too big ... setting to maximum!\n";
|
||||
handleError( StkError::WARNING );
|
||||
oStream_ << "Delay::setDelay: argument (" << delay << ") greater than maximum!\n";
|
||||
handleError( StkError::WARNING ); return;
|
||||
}
|
||||
|
||||
// Force delay to maximum length.
|
||||
outPoint_ = inPoint_ + 1;
|
||||
if ( outPoint_ == inputs_.size() ) outPoint_ = 0;
|
||||
delay_ = inputs_.size() - 1;
|
||||
if ( delay < 0 ) {
|
||||
oStream_ << "Delay::setDelay: argument (" << delay << ") less than zero!\n";
|
||||
handleError( StkError::WARNING ); return;
|
||||
}
|
||||
else if ( delay < 0 ) {
|
||||
errorString_ << "Delay::setDelay: argument (" << delay << ") less than zero ... setting to zero!\n";
|
||||
handleError( StkError::WARNING );
|
||||
|
||||
outPoint_ = inPoint_;
|
||||
delay_ = 0;
|
||||
}
|
||||
else { // read chases write
|
||||
if ( inPoint_ >= delay ) outPoint_ = inPoint_ - delay;
|
||||
else outPoint_ = inputs_.size() + inPoint_ - delay;
|
||||
delay_ = delay;
|
||||
}
|
||||
// read chases write
|
||||
if ( inPoint_ >= delay ) outPoint_ = inPoint_ - delay;
|
||||
else outPoint_ = inputs_.size() + inPoint_ - delay;
|
||||
delay_ = delay;
|
||||
}
|
||||
|
||||
StkFloat Delay :: energy( void ) const
|
||||
@@ -109,7 +85,7 @@ StkFloat Delay :: energy( void ) const
|
||||
return e;
|
||||
}
|
||||
|
||||
StkFloat Delay :: contentsAt( unsigned long tapDelay )
|
||||
StkFloat Delay :: tapOut( unsigned long tapDelay )
|
||||
{
|
||||
long tap = inPoint_ - tapDelay - 1;
|
||||
while ( tap < 0 ) // Check for wraparound.
|
||||
@@ -118,7 +94,16 @@ StkFloat Delay :: contentsAt( unsigned long tapDelay )
|
||||
return inputs_[tap];
|
||||
}
|
||||
|
||||
StkFloat Delay :: addTo( unsigned long tapDelay, StkFloat value )
|
||||
void Delay :: tapIn( StkFloat value, unsigned long tapDelay )
|
||||
{
|
||||
long tap = inPoint_ - tapDelay - 1;
|
||||
while ( tap < 0 ) // Check for wraparound.
|
||||
tap += inputs_.size();
|
||||
|
||||
inputs_[tap] = value;
|
||||
}
|
||||
|
||||
StkFloat Delay :: addTo( StkFloat value, unsigned long tapDelay )
|
||||
{
|
||||
long tap = inPoint_ - tapDelay - 1;
|
||||
while ( tap < 0 ) // Check for wraparound.
|
||||
|
||||
Reference in New Issue
Block a user