2013-05-25 5 views
7

Sto cercando di creare un'app di karaoke che registri la musica di sottofondo da file e microfono. Voglio anche aggiungere effetti di filtro all'ingresso del microfono.il sorprendente motore audio come applicare i filtri all'ingresso del microfono

posso fare tutto indicato in precedenza con il sorprendente sdk motore audio ma io riesco a capire come aggiungere l'ingresso del microfono come un canale di modo che io possa applicare filtri ad esso (e non per la musica di sottofondo.)

Qualsiasi aiuto sarebbe apprezzato.

il mio codice di registrazione corrente:

- (void)beginRecording { 
// Init recorder 
self.recorder = [[AERecorder alloc] initWithAudioController:_audioController]; 
NSString *documentsFolder = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) 
           objectAtIndex:0]; 
    NSString *filePath = [documentsFolder stringByAppendingPathComponent:@"Recording.aiff"]; 
// Start the recording process 
NSError *error = NULL; 
if (![_recorder beginRecordingToFileAtPath:filePath 
            fileType:kAudioFileAIFFType 
            error:&error]) { 
    // Report error 
    return; 
} 
// Receive both audio input and audio output. Note that if you're using 
// AEPlaythroughChannel, mentioned above, you may not need to receive the input again. 
[_audioController addInputReceiver:_recorder]; 
[_audioController addOutputReceiver:_recorder]; 
} 
+1

Hai mai risolto questo problema? Sto ancora affrontando lo stesso problema. – Colin

risposta

0
self.reverb = [[[AEAudioUnitFilter alloc] initWithComponentDescription:AEAudioComponentDescriptionMake(kAudioUnitManufacturer_Apple, kAudioUnitType_Effect, kAudioUnitSubType_Reverb2) audioController:_audioController error:NULL] autorelease]; 

AudioUnitSetParameter(_reverb.audioUnit, kReverb2Param_DryWetMix, kAudioUnitScope_Global, 0, 100.f, 0); 

[_audioController addFilter:_reverb]; 

È possibile applicare filtri al momento di giocare l'audio registrato.

3

È possibile separare la musica di sottofondo e il microfono utilizzando diversi canali e quindi è possibile applicare il filtro solo al canale microfonico.

prima dichiarare un gruppo di canali nel file di intestazione

AEChannelGroupRef _group; 

poi semplicemente aggiungere il giocatore che si sta utilizzando per file registrato a questo gruppo

[_audioController addChannels:@[_player] toChannelGroup:_group ]; 

e quindi aggiungere il filtro a questo gruppo solo

[_audioController addFilter:_reverb toChannelGroup:_group]; 
+0

Questo è bello, ma dovresti anche descrivere come farlo. –

+0

Alexander, gentilmente risparmi la mia risposta se pensi che sia utile. –

Problemi correlati