Я работаю над приложением арпеджиатора для iOS, которое может отправлять бесконечную последовательность нот на внешние MIDI-совместимые аппаратные синтезаторы. Я использую AudioKit для получения и отправки информации MIDI.
Моя студийная установка включает в себя устройство мульти-блокировки E-RM, которое отправляет основные MIDI-часы для пары синтезаторов и драм-машин, так что каждое устройство может играть синхронно c с другими.
Я хочу, чтобы мое приложение iOS генерировало и отправляло ноты MIDI на внешний синтезатор синхронно c с другими устройствами, которые также получают MIDI-часы от устройства Multiclock. Я использую iOS совместимый аудио / MIDI-интерфейс, чтобы мое приложение могло получать часы и отправлять заметки на аппаратный синтезатор.
Проблема заключается в том, что после пары секунд или минут работы заметки мое приложение отправляет начало дрейфовать вовремя. Задержка может быть либо постоянной (100-200 мс), либо случайной, что делает синтезированный арпеджио не синхронизированным c с другими машинами.
Может ли этот поток быть правильно реализован с использованием инфраструктуры AudioKit?
Моя текущая реализация использует функцию receivedQuantum(time:quarterNote:beat:quantum:)
AKMIDIBeatObserver для запуска арпеджиатора каждый раз, когда предполагается отправлять еще одну восьмерную ноту.
Заметки отправляются с AudioKit.midi.sendNoteOnMessage(noteNumber:velocity:channel:)
звонком.