#midi #real-time #byte-stream #convert-bytes #encoding

no-std midi-stream-parser

将MIDI流中的字节转换为消息的解析器

1 个不稳定版本

0.1.0 2022年12月18日

#899嵌入式开发

MIT 许可证

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]

无运行时依赖