I have done FFT of a audio file using OouraFFTl.How to check whether the Sampled output is right or wrong.Whats the better and easy way to check it.This is my code.
MyAudioFile *audioFile = [[MyAudioFile alloc]init]; OSStatus result = [audioFile open:var ofType:@"wav"]; int numFrequencies=16384; int kNumFFTWindows=10; OouraFFT *myFFT = [[OouraFFT alloc] initForSignalsOfLength:numFrequencies*2 andNumWindows:kNumFFTWindows]; for(long i=0; i<myFFT.dataLength; i++) { myFFT.inputData[i] = (double)audioFile.audioData[i]; } [myFFT calculateWelchPeriodogramWithNewSignalSegment]; NSLog(@"the spectrum data 1 is %f ",myFFT.spectrumData[1]); NSLog(@"the spectrum data 2 is %f",myFFT.spectrumData[2]); NSLog(@"the spectrum data 8192 is %f ",myFFT.spectrumData[8192]); I have created MyAudioFile class which contains
-(OSStatus)open:(NSString *)fileName ofType:(NSString *)fileType{ OSStatus result = -1; CFStringRef filePath=fileName; CFURLRef audioFileURL = CFURLCreateWithFileSystemPath(kCFAllocatorDefault, (CFStringRef)filePath, kCFURLPOSIXPathStyle, false); //open audio file result = AudioFileOpenURL (audioFileURL, kAudioFileReadPermission, 0, &mAudioFile); if (result == noErr) { //get format info UInt32 size = sizeof(mASBD); result = AudioFileGetProperty(mAudioFile, kAudioFilePropertyDataFormat, &size, &mASBD); UInt32 dataSize = sizeof packetCount; result = AudioFileGetProperty(mAudioFile, kAudioFilePropertyAudioDataPacketCount, &dataSize, &packetCount); NSLog([NSString stringWithFormat:@"File Opened, packet Count: %d", packetCount]); UInt32 packetsRead = packetCount; UInt32 numBytesRead = -1; if (packetCount > 0) { //allocate buffer audioData = (SInt16*)malloc( 2 *packetCount); //read the packets result = AudioFileReadPackets (mAudioFile, false, &numBytesRead, NULL, 0, &packetsRead, audioData); NSLog([NSString stringWithFormat:@"Read %d bytes, %d packets", numBytesRead, packetsRead]); } } else NSLog([NSString stringWithFormat:@"Could not open file: %@", filePath]); CFRelease (audioFileURL); return result; } 