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
5,313 每月下载量
用于 51 个crate(3个直接使用)
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库,那么您可以看看
- midir(该库使用此库)
- portmidi-rs
对于处理底层MIDI数据,您可以看看
安装
该库已发布到 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
这些是提供的示例
依赖项
~380KB