Использование AVAudioSequencer для отправки MIDI на сторонние инструменты AUv3 - PullRequest
0 голосов
/ 18 февраля 2019

У меня проблемы с управлением сторонними инструментами AUv3 с помощью MIDI с использованием AVAudioSequencer (iOS 12.1.4, Swift 4.2, Xcode 10.1) и буду признателен за вашу помощь.

Чем я сейчас занимаюсь:

  • Получить все AU типа kAudioUnitType_MusicDevice.

  • Создайте экземпляр и подключите его к AVAudioEngine.

  • Создайте несколько заметок и положите их на MusicTrack.

  • Передать данные дорожки на AVAudioSequencer, подключенный к двигателю.

  • Установите destinationAudioUnit дорожки для моего выбранного аудиоустройства.

Пока все хорошо, но ...

При воспроизведении последовательности с использованием AVAudioSequencer она воспроизводится в первый раз нормально с использованием выбранного аудиоустройства.Во второй раз я получаю либо тишину, либо звук синусоидальной волны (и мне интересно, кто это делает).Я думаю, что аудиоустройство не должно выходить за рамки между воспроизведением последовательности, но я действительно останавливаю движок и перезапускаю его снова для нового раунда.(Но даже можно поменять местами AU при работающем двигателе, поэтому я думаю, что все в порядке.)

Есть ли какие-то шаги, которые я пропускаю?Я бы с удовольствием включил код, но действительно сложно сжать его до сути из стены текста.Но если вы хотите спросить конкретику, я могу ответить.Или, если вы можете указать мне на рабочий пример, который показывает, как надежно отправить MIDI на AUv3, используя AVAudioSequencer, это было бы здорово.

AVAudioSequencer вообще должен работать с другими аудиоустройствами, чем у Apple?Или я должен начать искать другие способы отправки MIDI в AUv3?

Я должен добавить, что я могу последовательно отправлять MIDI в AUv3, используя метод InstrumentPlayer из примера Apple AUv3Host, но это включает параллельный потоки приводит к всевозможным проблемам синхронизации и синхронизации пользовательского интерфейса.

...