#midi #converting #api-bindings #convert #type #byte #midi-message

无std midi-convert

转换到/从midi_types::MidiMessage的实用工具

5个版本

0.2.0 2023年5月17日
0.1.3 2023年4月9日
0.1.2 2023年2月26日
0.1.1 2022年10月16日
0.1.0 2022年6月9日

#286 in 音频


3个Crates中使用 (2个直接使用)

MIT/Apache

48KB
1K SLoC

midi-convert

转换到/从midi_types::MidiMessage的实用工具


lib.rs:

midi_convert

转换到/从midi_types::MidiMessage的实用工具

示例

MidiMessage渲染为字节数组。

use midi_convert::render_slice::MidiRenderSlice;
use midi_types::MidiMessage;

let mut s = [0u8; 3];
let m = MidiMessage::NoteOn(2.into(), 0x76.into(), 0x34.into());
assert_eq!(m.render_slice(&mut s), 3);
assert_eq!(s, [0x92, 0x76, 0x34]);

尝试从字节数组中提取MidiMessage

use midi_convert::parse::{MidiTryParseSlice, MidiParseError};
use midi_types::MidiMessage;

assert_eq!(MidiMessage::try_parse_slice(&[0x92, 0x76, 0x34]), Ok(MidiMessage::NoteOn(2.into(), 0x76.into(), 0x34.into())));
assert_eq!(MidiMessage::try_parse_slice(&[0x92]), Err(MidiParseError::BufferTooShort));

解析字节流,返回途中找到的MidiMessage

use midi_convert::parse::{MidiParser};
use midi_types::MidiMessage;

let mut parser = MidiParser::new();
assert_eq!(parser.parse(0x92), None);
assert_eq!(parser.parse(0x76), None);
assert_eq!(parser.parse(0x34), Some(MidiMessage::NoteOn(2.into(), 0x76.into(), 0x34.into())));

依赖关系

~185KB