2015-01-22 15 views
5

Tôi muốn kết nối guitar điện với ứng dụng của mình. Tôi có phần cứng (cổng âm thanh Line6) truyền âm thanh từ đàn ghi-ta vào iPhone của tôi. Tôi đã tìm ra cách để có được âm thanh phát ra tai nghe của tôi, nhưng đó là âm thanh đến từ mic headphone của tôi, không phải đầu vào của Cổng Lightning. Làm cách nào để tìm kiếm đầu vào âm thanh Cổng Lightning, thay vì nhận âm thanh qua micrô tai nghe?Làm cách nào để kết nối AVAudioEngine với đầu vào âm thanh Cổng Lightning?

Đây là những gì tôi đã cố gắng cho đến nay:

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) 

Khi tôi chạy này, tôi nghe thấy âm thanh - nhưng nó đến từ mic tai nghe của tôi, không phải là guitar. Làm thế nào tôi có thể kết nối với âm thanh đến từ cổng sét?

Để có minh họa nhanh chóng, đây là phần cứng mà tôi đang sử dụng:. Line6 Sonic Port

+0

tôi đã không sử dụng AVAudioEngine trước. Tôi đã không sử dụng Cổng âm thanh Line6 - vì vậy có thể là một trong số đó. Tôi đã sử dụng các khung công tác Core Audio trước đó với Jam Apogee của tôi và nó "chỉ hoạt động" khi được kết nối. Là tai nghe kết nối với cổng âm thanh (tôi thấy một jack trên mặt)? Bạn có thể thay đổi nút/cài đặt đầu vào trên nút đầu vào hay không. – e7mac

+1

Thiết bị đầu vào của bạn có hiển thị trong 'AVAudioSession.availableInputs' không? – sbooth

Trả lời

3

Để kết nối với đầu vào âm thanh cụ thể, bạn cần định cấu hình sharedInstance của AVAudioSession, bằng cách sử dụng phương pháp setPreferredInput:error:.

Sau đây là cách này được thực hiện trong Objective-C:

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

Để tìm hiểu thêm, hãy kiểm tra:

2

iOS thường các tuyến đường cả hai đầu vào âm thanh và đầu ra từ cổng cuối cùng đã được cắm vào Vì bạn cắm vào tai nghe, đó là cổng mà nó sử dụng để ghi. Rút phích cắm tai nghe, cắm sét và nó sẽ sử dụng tuyến đường đó cho cả bản ghi và phát âm thanh.

Các vấn đề liên quan