Как отправить MIDI-сообщение с MIDITimestamp в AKMIDISampler? - PullRequest
1 голос
/ 11 декабря 2019

Я пытаюсь интегрировать AudioKit в мое приложение секвенсора.

В настоящее время пытается выяснить, как отправить MIDI-сообщение со значением MIDITimestamp в экземпляр AKMIDISampler. В интерфейсе этого класса нет методов, позволяющих указать значение метки времени для команд заметки.

Я не использую AKSequencer. Я хочу составить расписание команд из моего собственного секвенсора.

Есть ли какая-либо помощь для моего случая из AudioKit или я сам должен написать код планирования?

1 Ответ

0 голосов
/ 13 декабря 2019

@ dimitry,

Если вы пытаетесь воспроизвести AKMIDISampler переменные экземпляра из вашего не-AKSequencer, я считаю, что вам просто нужно вызвать их;это ваш секвенсор, который отправляет событие MIDI в заданную временную метку и просто информирует AKMIDISampler, чтобы он проигрывал в этот момент в последовательности.

Например:

 func playKick() {
    try! kick1Sampler.play(noteNumber: 60, velocity: 127, channel: 0)
 }

Не видя ваш секвенсорреализация или проект, вы можете отправлять MIDI-события с вашего секвенсора? Если это так, вы можете добавить делегат AKMIDIListener и записать полученные события MIDI-нот от вашего секвенсора следующим образом:

func receivedMIDINoteOn(noteNumber: MIDINoteNumber, velocity: MIDIVelocity, channel: MIDIChannel, portID: MIDIUniqueID? = nil, offset: MIDITimeStamp = 0) {
    outputMIDIMessage = "Channel: \(channel+1) noteOn: \(noteNumber) velocity: \(noteVelocity))"
    print(outputMIDIMessage)
}

func receivedMIDINoteOff(noteNumber: MIDINoteNumber, velocity: MIDIVelocity, channel: MIDIChannel, portID: MIDIUniqueID? = nil, offset: MIDITimeStamp = 0) {
    outputMIDIMessage = "Channel: \(channel+1) noteOff: \(noteNumber) velocity: \(noteVelocity))"
    print(outputMIDIMessage)
}

Обратите внимание, что я использую AudioKit версии 4.9.2 и Xcode 11.2.1.

...