11个版本 (破坏性)

0.8.0 2023年11月18日
0.7.0 2022年3月26日
0.6.0 2022年1月16日
0.5.0 2020年6月5日
0.0.1 2016年12月28日

#17 in macOS和iOS API

Download history 1185/week @ 2024-04-23 1346/week @ 2024-04-30 1064/week @ 2024-05-07 1056/week @ 2024-05-14 1082/week @ 2024-05-21 938/week @ 2024-05-28 979/week @ 2024-06-04 807/week @ 2024-06-11 944/week @ 2024-06-18 1463/week @ 2024-06-25 1861/week @ 2024-07-02 1060/week @ 2024-07-09 1213/week @ 2024-07-16 1166/week @ 2024-07-23 1604/week @ 2024-07-30 1202/week @ 2024-08-06

5,313 每月下载量
用于 51 个crate(3个直接使用)

MIT 协议

125KB
2.5K SLoC

coremidi

这是一个基于底层绑定 coremidi-sys 的 Rust 编写的 CoreMIDI 库。CoreMIDI 是 macOS 框架,提供了与 MIDI(音乐仪器数字接口)设备通信的 API,包括硬件键盘和合成器。

此库保留了 CoreMIDI 框架背后的基本概念,同时保持了 Rust 的风格。这意味着如果您已经了解 CoreMIDI,您会发现开始使用它非常容易。

主分支的 文档 可以在这里找到: https://chris-zen.github.io/coremidi/coremidi/

请参阅 示例 了解如何使用它,但如果您想看看一些代码,这将是如何发送一些音符的

use coremidi::{Client, Destination, EventBuffer, Protocol};
use std::time::Duration;
use std::thread;

fn main() {
  let client = Client::new("example-client").unwrap();
  let output_port = client.output_port("example-port").unwrap();
  let destination = Destination::from_index(0).unwrap();
  let chord_on = EventBuffer::new(Protocol::Midi10)
    .with_packet(0, &[0x2090407f])
    .with_packet(0, &[0x2090447f]);
  let chord_off = EventBuffer::new(Protocol::Midi10)
    .with_packet(0, &[0x2080407f])
    .with_packet(0, &[0x2080447f]);
  output_port.send(&destination, &chord_on).unwrap();
  thread::sleep(Duration::from_millis(1000));
  output_port.send(&destination, &chord_off).unwrap();
}

如果您正在寻找一个可移植的MIDI库,那么您可以看看

对于处理底层MIDI数据,您可以看看

Build Status Crates.io Crates.io Crates.io GitHub tag Minimum rustc version

安装

该库已发布到 crates.io,因此您可以通过将以下行添加到您的 Cargo.toml 文件中来使用它(但请记住根据需要更新版本号)

[dependencies]
coremidi = "^0.8.0"

如果您喜欢走在前沿,您可以使用主分支,方法是将此内容替换为以下内容

[dependencies]
coremidi = { git = "https://github.com/chris-zen/coremidi", branch="master" }

要自己玩耍源代码,您可以克隆仓库,并使用以下命令构建代码和文档

git clone https://github.com/chris-zen/coremidi.git
cd coremidi
cargo build
cargo test
cargo doc --open

示例

可以使用以下方式运行示例

cargo run --example send

这些是提供的示例

  • 端点:如何枚举源和目的地。
  • 发送:如何创建输出端口并发送 MIDI 消息。
  • 接收:如何创建输入端口并接收 MIDI 消息。
  • 虚拟源:如何创建虚拟源并生成 MIDI 消息。
  • 虚拟目的地:如何创建虚拟目的地并接收 MIDI 消息。
  • 属性:如何在 MIDI 对象上设置和获取属性。
  • 通知:如何接收 MIDI 客户端通知。

依赖项

~380KB