Cog/Audio/Chain/HeadphoneFilter.h
Christopher Snowhill e7b78085ca New feature: Implemented headphone virtualization
This new virtualizer uses the Accelerate framework to process samples.
I've bundled a HeSuVi impulse for now, and will add an option to select
an impulse in the future. It will validate the selection before sending
it to the actual filter, which outright fails if it receives invalid
input. Impulses will be supported in any arbitrary format that Cog
supports, but let's not go too hog wild, it requires HeSuVi 14 channel
presets.
2022-01-25 16:50:42 -08:00

50 lines
1.2 KiB
Objective-C

//
// HeadphoneFilter.h
// CogAudio Framework
//
// Created by Christopher Snowhill on 1/24/22.
//
#ifndef HeadphoneFilter_h
#define HeadphoneFilter_h
#import <Cocoa/Cocoa.h>
#import <Accelerate/Accelerate.h>
@interface HeadphoneFilter : NSObject {
FFTSetup fftSetup;
size_t fftSize;
size_t fftSizeOver2;
size_t log2n;
size_t log2nhalf;
size_t bufferSize;
size_t paddedBufferSize;
size_t channelCount;
double sampleRate;
COMPLEX_SPLIT signal_fft;
COMPLEX_SPLIT input_filtered_signal_per_channel[2];
COMPLEX_SPLIT * impulse_responses;
float * left_result;
float * right_result;
float * left_mix_result;
float * right_mix_result;
float * paddedSignal;
float * prevOverlap[2];
int prevOverlapLength;
}
- (id)initWithImpulseFile:(NSURL *)url forSampleRate:(double)sampleRate withInputChannels:(size_t)channels;
- (void)process:(const float*)inBuffer sampleCount:(size_t)count toBuffer:(float *)outBuffer;
@end
#endif /* HeadphoneFilter_h */