首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >发送带有程序号(补丁号)的程序更改

发送带有程序号(补丁号)的程序更改
EN

Stack Overflow用户
提问于 2018-11-13 10:45:18
回答 1查看 171关注 0票数 0

我有两个Roland midi设备,当我尝试发送银行和程序更改时,它们的行为是相同的。它总是将其设置为银行的第一个补丁。它不会改变我在银行中选择的补丁。然而,Pro Logic可以切换到不同的银行。

以下示例导致设备更改为存储体,但设备上的程序(补丁程序)默认为该存储体中的第一个,而不是编号9。

代码语言:javascript
复制
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消息的经验?

EN

回答 1

Stack Overflow用户

发布于 2019-02-08 06:08:49

我正在经历同样的问题,几乎要发疯了。事实证明,来自不同供应商的各种MIDI数据规范中的Program Change值都是以1为基础的。不是0。或者可能是AudioKit的实现是错误的?

因此,您应该使用值8而不是programChange值9。下面是我的代码,用于将通道0上的当前乐器更改为雅马哈·克拉维诺瓦键盘上的Bösendorfer三角钢琴,其中MIDI数据规范中的programChange值被指定为1。

代码语言:javascript
复制
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应该如何工作的理解,但如果你仍然不能用你的罗兰键盘工作,那么值得一试。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53273037

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档