2011-11-04 14 views
6

Scuse in anticipo per la noia di questa domanda, questa è la mia prima esplorazione del lato audio della programmazione iOS.Conversione di ingresso AVAudioRecorder nel buffer di float

Sto utilizzando la classe AVAudioRecorder per registrare l'input tramite il microfono, utilizzando il seguente dizionario delle impostazioni.

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]; 

Funziona assolutamente bene, il problema nasce però quando si tenta di utilizzare la libreria echonest-codegen per generare un'impronta digitale per identificare la musica suonata in.

Non preoccuparti, se hai mai usato prima, fondamentalmente devo eseguire questa funzione:

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

Dove const float * PCM [] è un buffer di campioni. Devo convertire il mio input in un "buffer di float". Sono stato indirizzato verso i documenti ExtAudioFile, ma non hanno molto senso. Qualcuno potrebbe indicarmi la giusta direzione? Sono completamente perso!

Grazie mille!

risposta

1

Si può facilmente ottenere campioni audio con Audio Queue Services Il più grande problema che vedo è che i buffer audio sono (credo) di tipo char * (byte), non so il motivo per cui avete bisogno di galleggiare *