Я собрал библиотеки из исходных текстов для macOS Xcode 10.2, но я не могу заставить MIDI работать. MIDI-ввод кажется нормальным

#audiokit

#audiokit

Вопрос:

Я изучаю фреймворк AudioKit, и было необходимо создать фреймворк из исходных текстов, поскольку двоичные файлы 4.2 несовместимы с компилятором 5.0 в Xcode 10.2. Мне не удалось заставить MIDI-вывод работать ни на физическом устройстве, ни с использованием виртуального порта для другого приложения.

Я не могу заставить работать игровую площадку examples MIDI output playground. Я не получаю ошибок, но и MIDI-вывода тоже нет. Я использую следующее:

 import AudioKitPlaygrounds
import AudioKit

let midi = AudioKit.midi

midi.openOutput()

import AudioKitUI

class LiveView: AKLiveViewController, AKKeyboardDelegate {

var keyboard: AKKeyboardView!

override func viewDidLoad() {
    addTitle("MIDI Output")

    keyboard = AKKeyboardView(width: 440, height: 100)
    keyboard.delegate = self
    addView(keyboard)

    addView(AKButton(title: "Go Polyphonic") { button in
        self.keyboard.polyphonicMode = !self.keyboard.polyphonicMode
        if self.keyboard.polyphonicMode {
            button.title = "Go Monophonic"
        } else {
            button.title = "Go Polyphonic"
        }
    })
}

func noteOn(note: MIDINoteNumber) {
    midi.sendEvent(AKMIDIEvent(noteOn: note, velocity: 127, channel: 3))
    AKLog("sending note (note)")
}

func noteOff(note: MIDINoteNumber) {
    midi.sendEvent(AKMIDIEvent(noteOff: note, velocity: 0, channel: 3))
}
}

import PlaygroundSupport
PlaygroundPage.current.needsIndefiniteExecution = true
PlaygroundPage.current.liveView = LiveView()
  

Комментарии:

1. извините за плохое форматирование

Ответ №1:

Я понял это. Оказывается, что AudioKit фактически отправлял на канал 4 вместо канала 3. Похоже, что индекс канала уменьшен на 1.
Согласно разработчику, MIDI-каналы индексируются с 0, а не с 1, так что это ожидаемое поведение