这是什么?
MIDI Monitor是一个Mac OS X应用程序,用于监控进出计算机的MIDI数据。
SysEx Librarian是一个Mac OS X应用程序,用于发送和接收MIDI系统专有(又称sysex)消息。
这是两个应用程序的源代码。如果您只想使用这些应用程序,则不需要任何这些内容。如果您想要修改代码、定制应用程序或在自己的项目中使用部分代码,则需要源代码。
源代码根据BSD许可证开源。有关法律细节,请参阅LICENSE文件。
该项目目前旨在与最新版本的Xcode(如Xcode 15.0,使用MacOS 14.0 SDK)一起使用。如果您需要在较早版本的Xcode上运行,请尝试检出较早的修订版。
如何构建
- 执行
git submodule update --init --recursive
- 用Xcode打开
MIDIApps.xcworkspace
。 - 打开
Configurations/Snoize-Signing.xcconfig
并将DEVELOPMENT_TEAM
更改为您的Apple开发者账户的Team ID。详情请参阅该文件。 - 在工具栏的"Scheme"弹出菜单中,选择MIDI Monitor或SysEx Librarian。
- 构建并运行!
内部结构
您的源代码树应该如下所示:
- Applications
- MIDIMonitor
- SysExLibrarian
- Configurations
- Frameworks
- SnoizeMIDI
- SnoizeMIDISpy
- Third Party
- HexFiend
- Updates
Applications/MIDIMonitor Applications/SysExLibrarian
这两个应用程序的源代码。项目文件分别是MIDIMonitor.xcodeproj和SysExLibrarian.xcodeproj;用Xcode打开它们。
两个应用程序都是基于Cocoa的,并使用Swift编写。
这些应用程序依赖于下面描述的其他框架。
Frameworks/SnoizeMIDI
这是一个包含在Cocoa应用程序中处理CoreMIDI的代码框架:
- 查找MIDI设备、源和目标
- 创建输入和输出数据的"流"
- 将它们连接到输入和输出
- 将传入的MIDI数据解析为单独的消息
这个框架被两个应用程序使用。您也可以在自己的应用程序中使用它。
Frameworks/SnoizeMIDISpy
这个项目构建了两个东西:一个CoreMIDI驱动程序和一个框架。
CoreMIDI驱动程序可以"监视"系统中任何应用程序发送到任何目标的MIDI数据。(有关更多详细信息,请参阅CoreMIDIServer/MIDIDriver.h中的MIDIDriverEnableMonitoring()函数。)然后,驱动程序可以将MIDI数据传递给另一个应用程序。
该框架供想要进行监视的应用程序使用。它管理应用程序和驱动程序之间的通信,并为应用程序提供一种在必要时安装CoreMIDI驱动程序的简便方法。
这些代码目前只被MIDI Monitor使用,但在其他情况下也可能有用。MIDI Monitor包含一些代码,用于将"监视"的MIDI数据导入SnoizeMIDI流系统的其余部分,使其表现得像任何其他MIDI源一样。
驱动程序用C++编写,框架用C和Objective-C编写。您应该可以轻松地在应用程序中使用这些代码。
Configurations
包含用于协调所有Xcode项目的构建设置的.xcconfig文件。
Third Party
包含HexFiend的git子模块,我们用它在各种视图中显示十六进制转储。
如果您看不到HexFiend子模块,请执行git submodule update --init --recursive
。
Updates
包含用于实现应用程序更新(通过Sparkle)的服务器端文件。您不需要修改这些文件。
请注意,应用程序目标通过Swift包管理器使用Sparkle作为包依赖项。Xcode应该会自动为您获取该包。
有问题?
如有任何问题,请联系Kurt Revis krevis@snoize.com。