Skip to content

Instantly share code, notes, and snippets.

@mwise
Last active August 29, 2015 14:12
Show Gist options
  • Save mwise/0e5cf73774310fde7dcf to your computer and use it in GitHub Desktop.
Save mwise/0e5cf73774310fde7dcf to your computer and use it in GitHub Desktop.
Window a buffer for sampling
@implementation SamplerKit
+ (void) windowBuffer: (AVAudioPCMBuffer*)buffer rampFrames:(AVAudioFrameCount)_rampFrames{
int frames = [buffer frameLength];
float* _windowBuffer = (float*) malloc(sizeof(float) * frames);
float min = 0.0f;
float max = 1.0f;
vDSP_vfill (&max, _windowBuffer, 1, frames);
vDSP_vgen (&min, &max, _windowBuffer, 1, _rampFrames);
vDSP_vsq (_windowBuffer, 1, _windowBuffer, 1, _rampFrames);
vDSP_vrvrs (_windowBuffer, 1, frames );
vDSP_vgen (&min, &max, _windowBuffer, 1, _rampFrames);
vDSP_vsq (_windowBuffer, 1, _windowBuffer, 1, _rampFrames);
for (int i=0; i < buffer.audioBufferList->mNumberBuffers; i++) {
AudioBuffer buf = buffer.audioBufferList->mBuffers[i];
for (int currentChannel=0; currentChannel < buf.mNumberChannels; currentChannel++) {
vDSP_vmul( _windowBuffer, 1, buf.mData, 1, buf.mData, 1, frames );
}
}
}
@end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment