2011-11-04 8 views
6

Przepraszam z góry za noobiness tego pytania, to jest moja pierwsza eksploracja strony audio programowania iOS.Konwersja wejścia AVAudioRecorder na bufor pływaków

Używam klasy AVAudioRecorder do rejestrowania danych wejściowych za pośrednictwem mikrofonu, korzystając z poniższego słownika ustawień.

NSMutableDictionary *settings = [[NSMutableDictionary alloc] init]; 
[settings setValue:[NSNumber numberWithInt:kAudioFormatLinearPCM] forKey:AVFormatIDKey]; 
[settings setValue:[NSNumber numberWithFloat:11025.0] forKey:AVSampleRateKey]; 
[settings setValue:[NSNumber numberWithInt: 1] forKey:AVNumberOfChannelsKey]; 
[settings setValue:[NSNumber numberWithInt:16] forKey:AVLinearPCMBitDepthKey]; 
[settings setValue:[NSNumber numberWithBool:NO] forKey:AVLinearPCMIsBigEndianKey]; 
[settings setValue:[NSNumber numberWithBool:NO] forKey:AVLinearPCMIsFloatKey]; 

To działa całkowicie w porządku, problem jest jednak, gdy próbuję użyć biblioteki echonest-Codegen do generowania linii papilarnych w celu identyfikacji muzyki granej w.

Nie martw się, jeśli masz nigdy wcześniej go nie używałam, w zasadzie muszę uruchomić tę funkcję:

Codegen * pCodegen = new Codegen(const float* pcm[], int number_of_samples, int samples_offset); 

Gdzie const float * pcm [] jest buforem próbek. Muszę przekonwertować moje dane wejściowe na "bufor pływaków". Zostałem wskazany w dokumentacji ExtAudioFile, ale nie mają one zbytniego sensu. Czy ktokolwiek mógłby wskazać mi właściwy kierunek? Jestem kompletnie zagubiony!

Wielkie dzięki!

Odpowiedz

1

można łatwo dostać próbkę dźwięku z Audio Queue Services Największy problem widzę tutaj jest to, że bufory audio są (wierzę) typu char * (bajtów), nie wiem dlaczego trzeba unosić *