void QSensor::setBufferSize(int bufferSize) { Q_D(QSensor); if (d->bufferSize != bufferSize) { d->bufferSize = bufferSize; emit bufferSizeChanged(bufferSize); } }
void Minim::Delay::channelCountChanged() { if ( delayBuffer ) { delete[] delayBuffer; delayBuffer = NULL; } if ( sampleRate() > 0 ) { maxBufferSize = (int)( maxDelayTime*sampleRate()*getAudioChannelCount() ); delayBuffer = new float[maxBufferSize]; memset(delayBuffer, 0, sizeof(float)*maxBufferSize); bufferSizeChanged(); } }
void Minim::Delay::uGenerate( float * out, const int numChannels ) { // update the buffer indexes delayTime = delTime.getLastValue(); bufferSizeChanged(); // update the feedbackFactor amplitudeFactor = delAmp.getLastValue(); // apply to each channel for (int c = 0; c < numChannels; ++c ) { float tmpIn = audio.getLastValues()[c]; // pull sound out of the buffer float tmpOut = amplitudeFactor*delayBuffer[ iBufferOut ]; // put sound into the buffer delayBuffer[ iBufferIn ] = tmpIn; if ( feedBackOn ) { delayBuffer[ iBufferIn ] += tmpOut; } tmpOut *= wetMix.getLastValue(); iBufferIn = ( iBufferIn + 1 )%bufferSize; iBufferOut = ( iBufferOut + 1 )%bufferSize; // pass the audio if necessary if ( passAudioOn ) { tmpOut += tmpIn * dryMix.getLastValue(); } out[c] = tmpOut; } }