Как подключить AVAudioEngine к аудиовходу Lightning Port?

Я бы хотел подключить свою электрогитару к моему приложению. У меня есть аппаратное обеспечение (Line6 Sonic Port), который передает аудио с моей гитары в мой iPhone. Я выяснил, как прослушивать звук в наушниках, но это звук, поступающий с микрофона для наушников, а не на порт Lightning Port. Как программно найти входной сигнал Lightning Port вместо того, чтобы получать звук через микрофон для наушников?

Вот что я пробовал до сих пор:

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) 

Когда я запускаю это, я слышу звук, но он исходит из моего микрофона для наушников, а не гитары. Как подключить аудиосигнал от порта молнии?

Для быстрой иллюстрации здесь используется аппаратное обеспечение, которое я использую: Line6 Sonic Port

Чтобы подключиться к определенному аудиовходу, вам необходимо настроить sharedInstance из AVAudioSession , используя метод setPreferredInput:error: .

Вот как это делается в 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]; } }]; 

Чтобы узнать больше, ознакомьтесь с:

  • Документация AVAudioSession
  • Технические вопросы QA1799: AVAudioSession – выбор микрофона

iOS обычно направляет как аудиовход, так и выход из последнего подключенного порта. Поскольку вы подключили наушники, это порт, который он использует для записи. Отключите наушники, включите молнию, и он будет использовать этот маршрут для записи звука и воспроизведения.

  • iOS AudioUnit ошибка ввода-вывода мусора и выходная ошибка обратного вызова при записи на правый канал
  • Уровень звукового сигнала от встроенного видео YouTube, который воспроизводится в iOS
  • Почему мое приложение делает запись состояния (пульсирующая красная) статусной полосой, когда она не записывается?
  • AVPlayer не синхронизирован
  • реализация Queue Services в AV Audio Recorder с использованием Swift
  • Как увеличить громкость / усиление MIDI-синтезатора без искажений в iOS?
  • Могу ли я сделать заявление на iphone?
  • iOS AudioUnits проходят через
  • AudioConverter # FillComplexBuffer возвращает -50 и ничего не конвертирует
  • CoreAudio: полифония подразделения Ausampler
  • Как воспроизвести звук назад?
  • Interesting Posts

    Использование API Диска Google для приложения iOS

    Иконки приложений iOS обновлены, а не отображаются на чистом Build / Run

    UICollectionView изменение макета выбранного элемента и рамки / ограничений

    API REST API в Swift Использование запроса на анализ

    + производительность

    Можно ли добавить второй тег в UIbutton?

    Ошибка разрешений в Jenkins при создании рабочего пространства Xcode на базе CocoaPods

    Приложение с Apple Watch отклонено, поскольку приложение не установлено на Apple Watch

    pushControllerWithName не работает

    Приложение разбилось из-за InterfaceOrientation

    Изображение на TabBar Не отображается правильно .. показывает дополнительную строку сверху – ОБНОВЛЕНО

    UITableView Auto-Layout Гибкая высота

    Как разработать приложение для iOS с помощью Xamarin Studio в Windows?

    Ввод в один UITextField приводит к невозможности ввода любого другого UITextField с помощью UIViewController, UIScrollView и AutoLayouts

    Проблема с iOS JUCE-библиотекой с 64-битной архитектурой

    Давайте будем гением компьютера.