【问题标题】:AudioKit 5.2.2 midi not working in ios project, works in macos projectAudioKit 5.2.2 midi 在 ios 项目中不工作,在 macos 项目中工作
【发布时间】:2021-12-21 17:50:38
【问题描述】:

我正在使用最新的 macOS、Xcode、Swift 和 AudioKit 版本...

我设置了 MIDIListener 来打印收到的任何消息。收到的唯一消息是“receivedMIDISetupChange”。 尝试打印收到的任何“noteOn”消息。 它适用于 macOS 项目,但不适用于 ios 项目。 请帮忙!

import AudioKit
import UIKit
import CoreAudioKit
 

class ViewController: UIViewController, MIDIListener {
    
    let midi = MIDI()
    
    override func viewDidLoad() {
        super.viewDidLoad()

        midi.openInput()
        midi.addListener(self)

        
    }
    
 
    func receivedMIDINoteOn(noteNumber: MIDINoteNumber, velocity: MIDIVelocity, channel: MIDIChannel, portID: MIDIUniqueID?, timeStamp: MIDITimeStamp?) {
                    print(noteNumber)
    }
    
    func receivedMIDINoteOff(noteNumber: MIDINoteNumber, velocity: MIDIVelocity, channel: MIDIChannel, portID: MIDIUniqueID?, timeStamp: MIDITimeStamp?) {
        
    }
    
    func receivedMIDIController(_ controller: MIDIByte, value: MIDIByte, channel: MIDIChannel, portID: MIDIUniqueID?, timeStamp: MIDITimeStamp?) {
        print("receivedMIDIController")
    }
    
    func receivedMIDIAftertouch(noteNumber: MIDINoteNumber, pressure: MIDIByte, channel: MIDIChannel, portID: MIDIUniqueID?, timeStamp: MIDITimeStamp?) {
        
    }
    
    func receivedMIDIAftertouch(_ pressure: MIDIByte, channel: MIDIChannel, portID: MIDIUniqueID?, timeStamp: MIDITimeStamp?) {
        
    }
    
    func receivedMIDIPitchWheel(_ pitchWheelValue: MIDIWord, channel: MIDIChannel, portID: MIDIUniqueID?, timeStamp: MIDITimeStamp?) {
        
    }
    
    func receivedMIDIProgramChange(_ program: MIDIByte, channel: MIDIChannel, portID: MIDIUniqueID?, timeStamp: MIDITimeStamp?) {
        print("receivedMIDIProgramChange")
    }
    
    func receivedMIDISystemCommand(_ data: [MIDIByte], portID: MIDIUniqueID?, timeStamp: MIDITimeStamp?) {
        print("receivedMIDISystemCommand")
    }
    
    func receivedMIDISetupChange() {
        print("receivedMIDISetupChange")
    }
    
    func receivedMIDIPropertyChange(propertyChangeInfo: MIDIObjectPropertyChangeNotification) {
        print("receivedMIDIPropertyChange")
    }
    
    func receivedMIDINotification(notification: MIDINotification) {
        print("receivedMIDINotification")
    }
    
}

【问题讨论】:

    标签: ios swift ios-simulator midi audiokit


    【解决方案1】:

    @Jonny123,

    尝试将import CoreMIDI 添加到 ViewController 的标题中。

    如果这对你有用,请告诉我。

    【讨论】:

    • 很遗憾,添加导入 CoreMIDI 不起作用...但感谢您的建议。
    • 您能否发布更多您的代码或示例 Xcode 项目?我不知道您是如何启动 AudioKit 引擎并应用其设置的?另外,我建议让音频引擎/MIDI 侦听器存在于它自己的类中,而不是单个 ViewController。您打算仅将 AudioKit 用于其 MIDI 功能,还是打算包含通过接收到的 MIDI 触发的声音?
    • 感谢您的回复!这实际上是我在旧版本的 AudioKit 上使用的整个代码。我还在一个 macOS 项目中测试了这个相同的代码,它可以工作(接收到 midi 消息)。我也尝试将 Listener 放在单独的类中,但结果完全相同。
    • 您是从外部 MIDI 控制器触发 MIDI 音符,还是使用另一个 iOS 应用将 MIDI 音符发送到您的 AudioKit 应用?您的设备上运行的是哪个版本的 iOS?
    • 音符由外部 MIDI 控制器触发。我试过运行 iOS 版本 11-15。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-16
    • 1970-01-01
    • 1970-01-01
    • 2017-12-30
    • 1970-01-01
    • 2012-11-29
    相关资源
    最近更新 更多