Я только что успешно интегрировал ссылку с помощью33, как описано в ABLLinkManager.swift. https://gist.github.com/cemolcay/3c9badfa263888d686e3aa454a5adfb7. Ниже приведен пример использования:
override func viewDidLoad() {
super.viewDidLoad()
// Setup Link
ABLLinkManager.shared.setup(bpm: 120, quantum: ABLLinkManager.QUANTUM_DEFAULT)
// Subscribe tempo change events
ABLLinkManager.shared.add(listener: .tempo({ bpm, quantum in
self.tempo.bpm = bpm
}))
// Subscribe activation events
ABLLinkManager.shared.add(listener: .activation({ isActivated in
self.updateUI()
}))
// Subscribe connection events.
ABLLinkManager.shared.add(listener: .connection({ isConnected in
if isConnected {
ABLLinkManager.shared.start()
} else {
ABLLinkManager.shared.stop()
}
с возможностью запуска / остановись и поменяй темп. но я еще не разобрался, как правильно синхронизировать c приложение и возможность ссылки. когда я читаю из beatTime, число становится все выше и выше (из-за позиции песни в '' '' '')
, чтобы поместить все это в 16-ступенчатый формат, я сделал это вычисление:
let position:Double = ABLLinkManager.shared.beatTime
let bars = Int(floor(position / 4))
let beats = Int(floor(position.truncatingRemainder(dividingBy: 16)))
return beats
но тогда у меня есть, конечно, округленные числа, такие как 0, 1, 2, 3 ... и т. д.
я подумал, может быть, это хорошая идея остановить мой секвенсор и просто используйте секвенсор ссылок для запуска всех функций. есть ли какой-то обратный вызов внутри ссылки, где я могу
двигаться шаг за шагом в моем массиве заметок? разве это не будет более эффективным? как мне все это синхронизировать.