Как отправить миди-заметки по внешним миди-часам? - PullRequest
1 голос
/ 27 января 2020

Я работаю над приложением арпеджиатора для 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:) звонком.

1 Ответ

1 голос
/ 28 января 2020

Вы первый, кто решился на это. Я могу сказать, что AKMIDIBeatObserver и AudioKit.midi.sendNoteOnMessage будут именно тем, что я буду использовать. Я также постараюсь не использовать вход в систему, так как это может повлиять на ваше опытное отставание. Похоже, вы делаете все, что я бы сделал. Если бы вы могли поделиться своим примером проекта по этому вопросу, я бы посмотрел с вами. Я не знаю ничего, что могло бы способствовать отставанию.

...