1 个不稳定版本
0.1.0 | 2022年12月18日 |
---|
#899 在 嵌入式开发
10KB
176 行
midi-stream-parser
此 no_std
Rust crate 包含一个解析器,它接受来自MIDI源(通常为嵌入式设备上的串行输入)的字节流,并将它们转换为适用于进一步处理的格式良好的消息。
目前,仅支持MIDI 1.0消息。
使用示例
按字节将流输入解析器并处理结果。这是必需的,因为 系统实时 消息可以出现在其他消息之间,并且必须优先处理。
// Maximum length of internal SysEx buffer in bytes
const SYSEX_MAX_LEN: usize = 256;
// Get an instance of the parser
let mut parser = midi_stream_parser::MidiStreamParser::<SYSEX_MAX_LEN>::new();
// Read the bytes from the stream, just some demo data here.
let bytes = [0x90, 60, 127, 61, 40];
// Feed each byte into the parser. For simplicity, errors are discarded here by using `ok()`.
// Whenever a message is ready, it will be returned, otherwise `None`.
for byte in bytes {
if let Ok(Some(message)) = parser.parse(byte) {
println!("Message: {:?}", message);
}
}
测试
运行 cargo test
以执行单元测试。
许可证
在MIT许可证下发布。对本项目的任何贡献都必须按照相同的许可证条件提供。
作者:Oliver Rockstedt [email protected]