У меня проблемы с управлением сторонними инструментами 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, но это включает параллельный потоки приводит к всевозможным проблемам синхронизации и синхронизации пользовательского интерфейса.