AKMIDICallbackInstrument - обратный вызов НЕ вызывается

Как размножаться

  • Я скопировал площадку "Инструмент обратного вызова" (которая работает) в новый проект. установлен AudioKit через pod (версия 4.8)
  • Я удалил реализацию обратного вызова и поместил туда только оператор print().
  • Откройте рабочее пространство и запустите проект.
import UIKit
import AudioKit

class ViewController: UIViewController {

    var sequencer = AKAppleSequencer()
    var tempo = 120.0
    var division = 1

    var callbacker = AKMIDICallbackInstrument { statusByte, note, _ in
        print("Callback called")
    }

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.

        let clickTrack = sequencer.newTrack()
        for i in 0 ..< division {
            clickTrack?.add(noteNumber: 80,
                            velocity: 100,
                            position: AKDuration(beats: Double(i) / Double(division)),
                            duration: AKDuration(beats: Double(0.1 / Double(division))))
            clickTrack?.add(noteNumber: 60,
                            velocity: 100,
                            position: AKDuration(beats: (Double(i) + 0.5) / Double(division)),
                            duration: AKDuration(beats: Double(0.1 / Double(division))))
        }

        clickTrack?.setMIDIOutput(callbacker.midiIn)
        clickTrack?.setLoopInfo(AKDuration(beats: 1.0), numberOfLoops: 10)
        sequencer.setTempo(tempo)

        sequencer.play()
    }
}

Что происходит

  • Обратный вызов не вызывается (журнал печати не печатается)
  • Я слышу звук добавленных нот.
  • Этот код работает на примере игровой площадки.

person Erez Makavy    schedule 16.09.2019    source источник


Ответы (1)


Если вы слышите звуки, но не подключили свои треки к аудиовыходу, то, вероятно, вы слышите сэмплер по умолчанию. Это произойдет, если у вас не включен звук в «Фоновых режимах». Если вы посмотрите на вывод консоли, вы должны увидеть сообщение о том, что вам нужно убедиться, что он включен - это необходимо с _1 _ / _ 2_.

person c_booth    schedule 16.09.2019
comment
Спасибо ! Я нашел, как включить фоновые режимы в этом сообщении: stackoverflow.com/questions/46900535/ - person Erez Makavy; 17.09.2019