- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我在类上使用 AudioKit 的 AKMIDIListener 协议(protocol)来监听 MIDI 消息。这适用于标准消息,例如 Note On
,但 SysEx
消息无法通过。
func receivedMIDINoteOn(noteNumber: MIDINoteNumber, velocity: MIDIVelocity, channel: MIDIChannel) {
NSLog("Note On \(noteNumber), \(velocity), \(channel)") // works perfectly
}
func receivedMIDISystemCommand(_ data: [MIDIByte]) {
NSLog("SysEx \(data)") // never triggers
// More code to handle the messages...
}
SysEx 消息是从外部硬件或测试软件发送的。我使用 MIDI 监控应用程序来确保消息被正确发送,但在我的应用程序中它们没有触发 receivedMIDISystemCommand
。
是否需要任何额外的步骤来接收我遗漏的 SysEx 消息?
提前感谢您提供任何线索。
最佳答案
编辑:感谢您提请我们注意此事。 SysEx 接收问题现已在 AudioKit 的开发分支中修复:https://github.com/AudioKit/AudioKit/pull/1017
--
代替
NSLog("SysEx \(data)")
你试过吗?
if let sysExCommand = AKMIDISystemCommand(rawValue: data[0]) {
print("MIDI System Command: \(sysExCommand)")
}
AKMIDISystemCommand 会将您的 SysEx 数据转换为更有用的数据,定义如下:
public enum AKMIDISystemCommand: MIDIByte {
/// Trivial Case of None
case none = 0
/// System Exclusive
case sysex = 240
/// Song Position
case songPosition = 242
/// Song Selection
case songSelect = 243
/// Request Tune
case tuneRequest = 246
/// End System Exclusive
case sysexEnd = 247
/// Clock
case clock = 248
/// Start
case start = 250
/// Continue
case `continue` = 251
/// Stop
case stop = 252
/// Active Sensing
case activeSensing = 254
/// System Reset
case sysReset = 255
}
-- 马修@audiokit
关于swift - AKMIDIListener 没有收到 SysEx,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45413400/
当我使用以下代码运行应用程序时,有时会出现错误代码: let letstryOtherThing: @convention(c) (UnsafeMutablePointer) -> Swift.Voi
好的,在用两种不同语言(Java 和 Cocoa)编写的两个不同程序(我自己的和 QLab)中,在两个不同的系统(Mac 和 PC)上尝试这个会产生相同的结果。所以我很难过。 本质上,我正在尝试发送以
我在类上使用 AudioKit 的 AKMIDIListener 协议(protocol)来监听 MIDI 消息。这适用于标准消息,例如 Note On,但 SysEx 消息无法通过。 func re
我的目标是将从 Alesis 合成器发送的字节码流转换为人类可读的格式。我需要能够进行“程序转储”并读取组成补丁名称的 10 个字符的字符串。 为了从合成器接收“程序转储”,我通过 MIDI-OX 向
当我用不同的字节长度实时发送 sysex 消息时,MIDI 流会卡住。如果我只坚持一个字节长度,它会完美地工作,但我有 2 种不同的 sysex 消息要传递:一种用于实时参数更改,另一种用于完整补丁(
我正在尝试用二十一点等编写我的小型 MIDI 音序器,但仍坚持将 sysex 数据写入 MusicTrack。我使用以下代码插入 sysex 事件 // ---- Some code here ---
将 win32 MIDI SysEx 应用程序(配置程序)移植到 MacOSX 的最简单方法是什么? 应用程序本身是用 Qt 编写的,但我没有使用 OSX MIDI API 的经验。是否有足够好的替代
如果音量级别表示为 0 到 1 之间的浮点值,如何创建 Universal SysEx Master Volume 消息的数据字节? 这是 Sysex 消息构造函数,具有给定的 Sysex 消息状态字
有谁知道在 Linux 上获取 MIDI SysEx 数据双向转储的好方法? (在 Yamaha PSR-E413 MIDI 键盘和 Yamaha MusicSoft Downloader 在 Win
我正在尝试使用 Cordova 将 Web 应用程序移植到原生 Android 应用程序。它相当简单,主要只是将 Midi 消息发送到连接的设备。我知道 WebMidi API 仅在 Android
我试图通过从 Java 程序发送一些 MIDI 消息来控制我的 GarageBand 音序器。它适用于 ShortMessage。比如我可以这样在GarageBand中录制一个C3: ShortMes
我是一名优秀的程序员,十分优秀!