11 max_delay_time(max_delay),
12 delay_time(0.5 * max_delay),
13 max_delay_in_frames( (unsigned) (_sampleRate * max_delay +
CGestalt::block_size() ) ),
18 ring_buffer(FrameStream::channels(), max_delay_in_frames)
54 sample * outPtr = outputBuffer._monoBuffers[outBufNum];
65 outPtr = outputBuffer._monoBuffers[outBufNum];
66 float ramp_factor = 0.0001;
68 for (
unsigned i = 0; i < outputBuffer._numFrames; i++) {
70 float r_index_and_mant = (
delay_time * _sampleRate);
71 unsigned index = (unsigned) floor(r_index_and_mant);
72 float mantissa = r_index_and_mant - index;
73 int read_frame = temp_write_frame - index;
74 while (read_frame < 0)
76 sample lower_read_value = *(rbPtr + read_frame);
77 tempSamplePtr = ((unsigned)(rbPtr + read_frame + 1)) %
ring_buffer._numFrames;
78 sample upper_read_value = *tempSamplePtr;
81 *outPtr++ = ((1.0 - mantissa) * lower_read_value) + (mantissa * upper_read_value);
89 Processor :: pull_input( inputBuffer, outputBuffer );