【问题标题】:How to find all the available MIDI ports over network using CoreMIDI?如何使用 CoreMIDI 通过网络查找所有可用的 MIDI 端口?
【发布时间】:2017-03-04 05:24:30
【问题描述】:
我正在开发一个需要通过 wifi 发送 Midi 的应用程序。我查看了 CoreMIDI 和 MIDINetworkSession 类。我已将默认会话的策略设置为 .anyone 并启用了它。但我不清楚下一步该做什么。我查看了 PGMidi,但在对会话进行更改后,它没有列出远程主机的 MIDI 端口。
我想要的是我可以连接到运行 MacOSX 的远程机器上的所有 MIDI 端口的列表。
有可能吗?有人可以给我一些提示吗?
【问题讨论】:
标签:
swift
xcode
swift3
coremidi
【解决方案1】:
我能够弄清楚。这是我所做的:
扫描远程服务
假设我的 Mac 正在运行一个通过 Bonjour 发布的 MIDI 会话。我使用 NetServiceBrowser 扫描本地网络并找出哪个服务器支持“_apple-midi._udp”服务。 Look at the documentation.。 NetServiceBrowserDelegate 在委托回调中接收服务。请注意,服务对象尚未针对 DNS 进行解析,因此不包含主机的 IP 地址。
下一步是使用 NetServiceDelegate 解析服务。在成功委托回调中传递的服务对象包含有关该服务的所有信息。所以现在,您有一个 IP 地址/主机名和相应端口号的列表。
发送 MIDI
使用 ip 地址/主机名和端口号创建一个 MIDINetworkConnection 实例。它看起来像一个同步调用,所以它可能不联系服务器本身。接下来,获取所有 midi 设备并遍历 Entities 和 Destinations。 Its given in this document