2013-05-25 9 views
7

पर फ़िल्टर लागू करने के लिए कैसे करें मैं कराओके ऐप बनाने की कोशिश कर रहा हूं जो फ़ाइल और माइक्रोफ़ोन से पृष्ठभूमि संगीत रिकॉर्ड करता है। मैं माइक्रोफ़ोन इनपुट में फ़िल्टर प्रभाव भी जोड़ना चाहता हूं।अद्भुत ऑडियो इंजन माइक्रोफ़ोन इनपुट

मैं सब कुछ अद्भुत ऑडियो इंजन SDK का उपयोग लेकिन ऊपर कहा गया है मैं नहीं कर सकते एक चैनल के रूप में माइक्रोफोन इनपुट जोड़ने के बारे में तो मैं यह करने के लिए फिल्टर लागू कर सकते यह पता लगाने कर सकते हैं (पृष्ठभूमि संगीत के लिए और नहीं।)

किसी भी सहायता की सराहना की जाएगी।

मेरे वर्तमान रिकॉर्डिंग कोड:

- (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

क्या आपने कभी इस समस्या को हल किया था? मुझे अभी भी एक ही समस्या का सामना करना पड़ रहा है। – Colin

उत्तर

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

आप रिकॉर्ड किए गए ऑडियो खेलने के समय में फिल्टर लागू कर सकते।

3

आप अलग-अलग चैनलों का उपयोग करके अपना बैक ग्राउंड संगीत और अपने माइक को अलग कर सकते हैं और फिर आप फ़िल्टर को अपने माइक्रो चैनल पर ही लागू कर सकते हैं।

पहले हेडर फाइल में एक चैनल समूह की घोषणा

AEChannelGroupRef _group; 

तो बस खिलाड़ी है कि आप

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

इस समूह के लिए दर्ज की गई फ़ाइल के लिए उपयोग कर रहे हैं और उसके बाद इस समूह के लिए फिल्टर जोड़ने केवल

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

यह अच्छा है, लेकिन आपको यह भी वर्णन करना चाहिए कि इसे कैसे किया जाए। –

+0

अलेक्जेंडर, अगर आप इसे मददगार सोचते हैं तो कृपया मेरे उत्तर को ऊपर उठाएं। –

संबंधित मुद्दे