发送节目的更改与程序号(补丁编号)

问题描述 投票:0回答:1

我有行为相同的两个罗兰MIDI设备,当我尝试发送一个库和程序的变化。它总是将它设置为银行的第一个补丁。它不会改变我在银行选择的补丁。定向逻辑可以,但是,切换到不同的存储体。

以下示例使设备改变到所述设备的默认值的银行,但该程序(补丁),以在该存储区中的第一和未编号9。

var event = AKMIDIEvent(controllerChange: 0, value: 89, channel: 0)
midiOut.sendEvent(event)
event = AKMIDIEvent(controllerChange: 32, value: 64, channel: 0)
midiOut.sendEvent(event)
event = AKMIDIEvent(programChange: 9, channel: 0)
midiOut.sendEvent(event)

任何人有这个发送MIDI信息的经验吗?

audiokit
1个回答
0
投票

我经历了同样的问题,是快要发疯了。事实证明,在不同的MIDI数据规范的程序变更值,来自不同供应商,是基于1。不为0。也许这是AudioKit实现,它是错的?

因此,而不是9 programChange值,你应该使用的值8。这里是我改变当前的仪器上通道0到雅马哈数码钢琴键盘,其中在MIDI数据规范programChange值在贝森多夫三角钢琴码指定为1。

midiOut.sendControllerMessage(0, value: 108) // MSB sound bank selection
midiOut.sendControllerMessage(32, value: 0) // LSB sound bank selection
midiOut.sendEvent(AKMIDIEvent(programChange: 0, channel: 0)) // Initiate program change based on MSB and LSB selections

一边念叨MIDI是如何工作的各种文档,我也看到了描述了所期望的MSB银行选择之前的LSB银行选择键盘一些论坛帖子。这不过是不是我的MIDI应该如何工作的理解,但值得一试,如果你仍然不能使它与您的罗兰键盘工作。

© www.soinside.com 2019 - 2024. All rights reserved.