2022-01-26 00:50:42 +00:00
|
|
|
//
|
|
|
|
// 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;
|
|
|
|
|
|
|
|
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;
|
|
|
|
|
2022-01-26 06:06:53 +00:00
|
|
|
float * prevOverlapLeft;
|
|
|
|
float * prevOverlapRight;
|
2022-01-26 00:50:42 +00:00
|
|
|
|
|
|
|
int prevOverlapLength;
|
|
|
|
}
|
|
|
|
|
2022-01-26 05:30:33 +00:00
|
|
|
+ (BOOL)validateImpulseFile:(NSURL *)url;
|
|
|
|
|
2022-01-26 00:50:42 +00:00
|
|
|
- (id)initWithImpulseFile:(NSURL *)url forSampleRate:(double)sampleRate withInputChannels:(size_t)channels;
|
|
|
|
|
|
|
|
- (void)process:(const float*)inBuffer sampleCount:(size_t)count toBuffer:(float *)outBuffer;
|
|
|
|
|
2022-02-01 23:28:24 +00:00
|
|
|
- (void)reset;
|
|
|
|
|
2022-01-26 00:50:42 +00:00
|
|
|
@end
|
|
|
|
|
|
|
|
#endif /* HeadphoneFilter_h */
|