2015-01-22 30 views
5

Elektro gitarımı uygulamamıza bağlamak istiyorum. Gitarımdaki sesi iPhone'uma aktaran donanım (Line6 Sonic Port) var. Kulaklığımdaki sesin nasıl çalınacağını anladım, ancak kulaklık mikrofonumdan gelen ses, Lightning Port girişi değil. Kulaklık mikrofonundan ses almak yerine, Lightning Port ses girişini nasıl programlayabilirim?AVAudioEngine'i Lightning Port ses girişine nasıl bağlarım?

İşte ben bugüne kadar çalıştığım buydu: Bunu çalıştırdığınızda

self.audioEngine = AVAudioEngine() 

let input = self.audioEngine.inputNode 
let mixer = self.audioEngine.mainMixerNode 
let output = self.audioEngine.outputNode 

self.audioEngine.inputNode.installTapOnBus(0, bufferSize: 128, format: input.inputFormatForBus(0)) { (buffer, time) -> Void in 
    // 
} 

self.audioEngine.connect(input, to: mixer, format: input.inputFormatForBus(0)) 
self.audioEngine.connect(mixer, to: output, format: mixer.inputFormatForBus(0)) 

self.audioEngine.prepare() 
self.audioEngine.startAndReturnError(nil) 

, Ses geliyor - ama benim kulaklık mikrofon değil, gitar geliyor. Yıldırım limanından gelen seslere nasıl bağlanabilirim? Hızlı bir açıklama için

, burada kullanıyorum donanımdır. Line6 Sonic Port

+0

ben AVAudioEngine kullanmadıysanız önce. Ben de Line6 Sonic Port'u kullandım - bu da bunlardan biri olabilir. Apogee Jam ile daha önceki Core Audio çerçevelerini kullandım ve bağlandığında "sadece çalıştı". Kulaklık Sonic Port'una bağlı mı (yan tarafta bir jak görüyorum)? Giriş düğümündeki giriş düğümünü/ayarlarını değiştirebilir misiniz? – e7mac

+1

Giriş cihazınız 'AVAudioSession.availableInputs' içinde mi görünüyor? – sbooth

cevap

3

Belirli bir ses girişine bağlanmak için, setPreferredInput:error: yöntemini kullanarak AVAudioSessionsharedInstance yapılandırmanız gerekir. İşte

bu Objective-C yapılır nasıl:

AVAudioSession *sharedSession = [AVAudioSession sharedInstance]; 
NSArray *availableInputs = [sharedSession availableInputs]; 
[availableInputs enumerateObjectsUsingBlock:^(AVAudioSessionPortDescription *portDescription, NSUInteger idx, BOOL *stop) { 
    if (portDescription.portType == AVAudioSessionPortUSBAudio) { 
     [sharedSession setPreferredInput:portDescription error:nil]; 
    } 
}]; 

daha fazla bilgi edinmek için check out:

2

iOS normalde yolları takılı son limanından ses giriş ve çıkış hem kulaklıklar takılı olduğundan, işte kayıt için kullandığı port. Kulaklıkların fişini çekin, yıldırım takın ve hem ses kaydı hem de oynatma için bu rotayı kullanır.