如何在iOS中发送和接收网络MIDI数据?

时间:2021-07-23 07:12:07

How do I send and receive network MIDI data in iOS? I am able to resolve the server using bonjour and apply the service to a MIDI connection, but I don't know where to go from there. The documentation seems to be lacking, and there's not much information online.

如何在iOS中发送和接收网络MIDI数据?我能够使用bonjour解析服务器,并将服务应用到MIDI连接,但我不知道从哪里开始。文档似乎缺乏,网上也没有多少信息。

1 个解决方案

#1


8  

Essentially, you need to connect to the session via Bonjour as you have done, and within your iOS app:

本质上,你需要像以前一样通过Bonjour连接到会话,并且在你的iOS应用程序中:

  • Create a client using MIDIClientCreate
  • 使用MIDIClientCreate创建客户端
  • Create an input port using MIDIInputPortCreate
    • This takes a pointer to a C function that will be called when MIDI data is received
    • 当接收MIDI数据时,将调用一个指向C函数的指针。
    • You need to connect it to the MIDINetworkSession's defaultSession using MIDIPortConnectSource - connect it to the sourceEndpoint
    • 您需要使用MIDIPortConnectSource将它连接到MIDINetworkSession的defaultSession——将它连接到sourceEndpoint
  • 使用MIDIInputPortCreate创建一个输入端口,它将指针指向一个C函数,当接收MIDI数据时,需要将其连接到MIDINetworkSession的defaultSession,使用MIDIPortConnectSource—将它连接到sourceEndpoint。
  • Create an output port using MIDIOutputPortCreate
    • You can send data to the network session using MIDISend - send the packets to to the MIDINetworkSession defaultSession's destinationEndpoint
    • 您可以使用MIDISend将数据发送到网络会话——将数据包发送到MIDINetworkSession defaultSession的destinationEndpoint
  • 使用MIDIOutputPortCreate创建一个输出端口,您可以使用MIDISend将数据发送到网络会话——将数据包发送到MIDINetworkSession defaultSession的destinationEndpoint

I wrote a few blog posts about this a while back, see here for source code etc.

我以前写过一些关于这方面的博客文章,源代码见这里。

Part 1

第1部分

Part 2

第2部分

Part 3

第3部分

#1


8  

Essentially, you need to connect to the session via Bonjour as you have done, and within your iOS app:

本质上,你需要像以前一样通过Bonjour连接到会话,并且在你的iOS应用程序中:

  • Create a client using MIDIClientCreate
  • 使用MIDIClientCreate创建客户端
  • Create an input port using MIDIInputPortCreate
    • This takes a pointer to a C function that will be called when MIDI data is received
    • 当接收MIDI数据时,将调用一个指向C函数的指针。
    • You need to connect it to the MIDINetworkSession's defaultSession using MIDIPortConnectSource - connect it to the sourceEndpoint
    • 您需要使用MIDIPortConnectSource将它连接到MIDINetworkSession的defaultSession——将它连接到sourceEndpoint
  • 使用MIDIInputPortCreate创建一个输入端口,它将指针指向一个C函数,当接收MIDI数据时,需要将其连接到MIDINetworkSession的defaultSession,使用MIDIPortConnectSource—将它连接到sourceEndpoint。
  • Create an output port using MIDIOutputPortCreate
    • You can send data to the network session using MIDISend - send the packets to to the MIDINetworkSession defaultSession's destinationEndpoint
    • 您可以使用MIDISend将数据发送到网络会话——将数据包发送到MIDINetworkSession defaultSession的destinationEndpoint
  • 使用MIDIOutputPortCreate创建一个输出端口,您可以使用MIDISend将数据发送到网络会话——将数据包发送到MIDINetworkSession defaultSession的destinationEndpoint

I wrote a few blog posts about this a while back, see here for source code etc.

我以前写过一些关于这方面的博客文章,源代码见这里。

Part 1

第1部分

Part 2

第2部分

Part 3

第3部分