- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这是一个非常简单的 CoreMIDI OS X 应用程序,用于发送 MIDI 数据。问题是它不起作用。它编译良好,并且运行。它不会报告任何错误,也不会崩溃。创建的源在 MIDI 监视器中可见。但是,没有 MIDI 数据输出。
有人可以让我知道我在这里做错了什么吗?
#include <CoreMIDI/CoreMIDI.h>
int main(int argc, char *args[])
{
MIDIClientRef theMidiClient;
MIDIEndpointRef midiOut;
MIDIPortRef outPort;
char pktBuffer[1024];
MIDIPacketList* pktList = (MIDIPacketList*) pktBuffer;
MIDIPacket *pkt;
Byte midiDataToSend[] = {0x91, 0x3c, 0x40};
int i;
MIDIClientCreate(CFSTR("Magical MIDI"), NULL, NULL,
&theMidiClient);
MIDISourceCreate(theMidiClient, CFSTR("Magical MIDI Source"),
&midiOut);
MIDIOutputPortCreate(theMidiClient, CFSTR("Magical MIDI Out Port"),
&outPort);
pkt = MIDIPacketListInit(pktList);
pkt = MIDIPacketListAdd(pktList, 1024, pkt, 0, 3, midiDataToSend);
for (i = 0; i < 100; i++) {
if (pkt == NULL || MIDISend(outPort, midiOut, pktList)) {
printf("failed to send the midi.\n");
} else {
printf("sent!\n");
}
sleep(1);
}
return 0;
}
最佳答案
您正在调用MIDISourceCreate
来创建虚拟MIDI源。
这意味着您的源将出现在其他应用程序的 MIDI 设置 UI 中,并且这些应用程序可以选择是否收听您的源。您的 MIDI 不会被发送到任何物理 MIDI 端口,除非其他应用程序碰巧将其传送到那里。这也意味着您的应用程序无法选择将 MIDI 发送到何处。我假设这就是您想要的。
The documentation for MIDISourceCreate说:
After creating a virtual source, use MIDIReceived to transmit MIDI messages from your virtual source to any clients connected to the virtual source.
所以,做两件事:
MIDISend(outPort, midiOut, pktList)
更改为:MIDIReceived(midiOut, pktlist)
。这应该可以解决你的问题。
那么输出端口有什么用呢?如果您想将 MIDI 数据定向到特定目的地(可能是物理 MIDI 端口),您就不会创建虚拟 MIDI 源。相反:
MIDIOutputPortCreate()
创建输出端口MIDIGetNumberOfDestinations()
和 MIDIGetDestination()
获取目的地列表并找到您感兴趣的目的地。MIDISend(outputPort, destination, packetList)
。关于macos - 为什么这个简单的 CoreMIDI 程序不产生 MIDI 输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10572747/
我正在尝试从我的 iOS 应用程序向 Logic Pro 发送下一首轨道消息。这是“播放”的十六进制值 {0xF0, 0x7F, 0x7F, 0x06, 0x02, 0xF7}。有谁知道“下一轨道”的
我已经开始开发一个基于 RtMidi 的命令行应用程序,它可以发送任意 MIDI 数据。我发现,当我从控制台运行该工具时,我可以与 MIDI 设备通信,但如果我从另一台机器 ssh 进入我的机器,我根
我在 OSX 上使用 Swift 中的 CoreMIDI 进行了一些尝试,并且大部分功能都可以正常工作。 我现在遇到的唯一问题是其他软件和应用程序看不到我的应用程序以及可用的输入/输出。 Garage
我使用 CoreMIDI 构建了一个虚拟 MIDI Controller ,并希望导入 ControlChange 的制造商预设(即 cc 值、带有 cc 编号的关联效果名称、预设名称等)。有没有一种
我在将 MIDI 实现到我的 iOS 应用程序时遇到问题,因为接收器回调似乎正在跳过 MIDI 消息和数据包。我正在使用 Midi Monitor检查我遗漏、跳过的 MIDI 消息等。 那么百万美元的
给定以下代码,如果我使用 if 分支中的第一个方法来获取 MIDIDestination,代码工作正常,并且 MIDI 数据被发送。如果我使用 else 分支中的第二种方法,则不会发送任何数据。 va
我正在开发一个使用 MIDI 的 MacOS 应用程序。我想做的是将 SysEx 消息发送到 MIDI 设备。现在,我在 Java 中做过一次,但从未在 Swift 中做过。 因为 coremidi
我正在研究 coremidi 并尝试一些实验我想知道如何在 midifile 的 miditrack 的半音中进行移调。有人可以告诉我该怎么做吗? 非常感谢 最佳答案 CoreMIDI 对 MIDI
我有一个可以通过 MIDI 控制的 Marshall CODE 放大器。我可以通过向放大器发送简单的 MIDI 消息来成功更改放大器上的某些控件: var midiClient: MIDIClient
我在使用 CoreMIDI 的 iPad 应用程序崩溃后收到以下错误(* 是为了清空应用程序名称): Dyld Error Message: Symbol not found: _MIDINetwo
我用的coremidi还行,但我还想支持外接USB功能。 我试过一个名为 Midi Monitor 的应用程序,它确实在连接时找到了我的 USB 接口(interface)。问题是如何通过我自己的应用
我可以使用 MusicPlayer 的 MusicTrackSetProperty(t, kSequenceTrackProperty_MuteStatus...) 方法轻松静音/取消静音 midi
我正在使用以下代码在 Swift Playground 中接收 MIDI 事件: import Cocoa import CoreMIDI import XCPlayground XCPSetExec
我无法找到关于 CoreMIDI for iOS 的很多信息。甚至可以通过向设备本身发送消息来播放 MIDI 声音。 iPhone 或 iPad 是否安装了 MIDI 设备,或者您是否必须连接设备才能
我正在创建一个钢琴应用程序(适用于 OSX),它有一个屏幕键盘,可以显示用户在合成器键盘上弹奏的内容。一切都使用 CoreMIDI 框架连接。我通过在名为 PianoKey 的类中子类化 NSButt
背景:我正在尝试编写一个程序,该程序将从我的合成器中获取 MIDI 信息,并用它来做各种音乐上的事情。我已经连接了键盘以便接收 MIDI 数据。在我的 midiInputCallback() 方法(生
这是一个非常简单的 CoreMIDI OS X 应用程序,用于发送 MIDI 数据。问题是它不起作用。它编译良好,并且运行。它不会报告任何错误,也不会崩溃。创建的源在 MIDI 监视器中可见。但是,没
我需要手工组装 14bit MIDI 弯音 iOS 中原始 UInt16 值的值。我想知道是否有人有机会提出一个优雅的解决方案?这就是我所在的位置 - 我可能会在今天晚些时候有机会对此进行测试,但如果
我在 iOS 上的 CoreMIDI 连接显然足够快,可以处理任何碰到它的东西……如果我只是做一些简单的对象创建和 NSLog。在 UI 中,我没有时间处理所有进来的东西。UI 会崩溃,或者完成处理太
我正在开发一个需要通过 wifi 发送 Midi 的应用程序。我查看了 CoreMIDI 和 MIDINetworkSession 类。我已将默认 session 的策略设置为 .anyone 并启用
我是一名优秀的程序员,十分优秀!