MIDIFish 0.1.0

MIDIFish 0.1.0

测试测试
Lang语言 Obj-CObjective C
许可证 MIT
发布最新发布2015年10月

Hari Karam Singh 维护。



MIDIFish 0.1.0

将 CoreMIDI 的晦涩语言转换为 iOS 自然语言。

特性

  • MIDI 操作的高级语义,例如 sendPitchbend
  • 标准化了网络、硬件/App 和虚拟连接的 API
  • 简化了网络 MIDI 扫描
  • 使用 UserDefaults 存储和恢复手动网络连接
  • 任意数量的虚拟源/目的端
  • 带有可选粒度的 API 简化
  • 公开 CoreMIDI 对象以便深入探究

用法

基本用法

_midiSession = [MFMIDISession sessionWithName:@"Your App Name"];
_midiSession.networkEnabled = YES;
_midiSession.restorePreviousConnectionStates = YES;
_midiSession.autoEnableDestinations = YES;
_midiSession.channel = 0;

// Create the Virtual Source to expose to other apps
[_midiSession createVirtualSourceWithName:_midiSession.name]; // disabled by default

// ...some time later...
[_midiSession sendNoteOn:64 velocity:127];
[_midiSession sendPitchbend:0x3FFF];
// etc

更多内容,请参阅 MFMIDISession.h

术语

连接: MIDI 消息的源或目的 消息: NoteOn, NoteOff, CC, Pitchbend, Program Change, Channel Aftertouch, Poly Aftertouch, Sysex

虚拟源/目的端: 我们在应用中创建的命名连接,会在其他应用中显示。请注意,当应用是虚拟源时,它意味着它是其他应用的 MIDI 源。本地上,它作为 MIDI 目的端出现,因为我们将其输出到其中

与 enabling的区别:“connect” 指的是发现物理/虚拟/wifi 连接的存在。所有设备都是自动连接的,即在系统扫描中被发现。 “enable” 表示当您通过 MIDISession 发送消息时,它们是否会发送/接收 MIDI 消息。这在代码中有点混乱,因为在代码中将网络连接 en/disabling 确实会从 MIDINetworkSession 中 “connect/disconnect” 主机(见上面的说明)。这是 CoreMIDI 中 MIDIFish 寻求标准化的异常术语的一个例子。

连接持久性

设置 restorePreviousConnectionStates 会导致当重新发现之前设置的连接时,基于它们上一次运行时的值启用/禁用它们。目前,它不会恢复虚拟连接或基于 IP 的网络连接

特别说明

  • 网络连接具有其源和目的端耦合并行控制,即启用/禁用其中一个会使另一个启用/禁用。

  • MIDINetworkHost通过Bonjour发现的NSNetService创建目前不可靠。我认为这是由于将IPv6地址解释为IPv4(0.0.0.0:5004),而实际的IPv4地址(NSNetService::resolve结果为2个地址)被忽略。在客户端中,我们手动解析NSNetService,然后用带有IP/端口的MIDINetworkHost实例进行连接。(请参阅https://developer.apple.com/library/mac/qa/qa1298/_index.html