pub struct RawMidi {
pub chunks: Vec<ParsedChunk>,
}Expand description
An entire MIDI file as a raw sequence of parsed chunks
Fields§
§chunks: Vec<ParsedChunk>All raw chunks as ParsedChunks
Implementations§
Source§impl RawMidi
impl RawMidi
Sourcepub fn try_from_midi_stream<STREAM>(
stream: STREAM,
) -> Result<Self, ChunkParseError>where
STREAM: MidiStream,
pub fn try_from_midi_stream<STREAM>(
stream: STREAM,
) -> Result<Self, ChunkParseError>where
STREAM: MidiStream,
Constructs a new MIDI instance from a stream of MIDI bytes
Examples found in repository?
examples/chunk_read.rs (line 10)
5fn main() {
6 let data = "test/test.mid"
7 .get_midi_bytes()
8 .expect("Get `run.midi` file and stream bytes");
9
10 let midi = RawMidi::try_from_midi_stream(data).expect("Parse data as a MIDI stream");
11 let sanitized_midi: Midi = midi
12 .check_into_midi()
13 .expect("Upgrade into sanitized format");
14
15 println!("Header: {:?}", sanitized_midi.header);
16 for chunk in sanitized_midi.tracks.iter() {
17 println!("Track: {chunk:?}");
18 }
19}More examples
examples/copy.rs (line 15)
9fn main() {
10 let mut output = File::create("test/test_run.mid").expect("Create new output file");
11 let data = "test/run.mid"
12 .get_midi_bytes()
13 .expect("Get `run.midi` file and stream bytes");
14
15 let midi: Midi = RawMidi::try_from_midi_stream(data)
16 .expect("Parse data as a MIDI stream")
17 .check_into_midi()
18 .expect("Sanitize MIDI into formatted MIDI");
19
20 output
21 .write_all(&midi.to_midi_bytes())
22 .expect("Failed to write bytes");
23}Sourcepub fn check_into_midi(self) -> Result<Midi, MidiSanitizerError>
pub fn check_into_midi(self) -> Result<Midi, MidiSanitizerError>
Attempts to upgrade a RawMidi stream into a sanitized Midi struct. This means there
must be a single starting header and only track chunks afterwards
Examples found in repository?
examples/chunk_read.rs (line 12)
5fn main() {
6 let data = "test/test.mid"
7 .get_midi_bytes()
8 .expect("Get `run.midi` file and stream bytes");
9
10 let midi = RawMidi::try_from_midi_stream(data).expect("Parse data as a MIDI stream");
11 let sanitized_midi: Midi = midi
12 .check_into_midi()
13 .expect("Upgrade into sanitized format");
14
15 println!("Header: {:?}", sanitized_midi.header);
16 for chunk in sanitized_midi.tracks.iter() {
17 println!("Track: {chunk:?}");
18 }
19}More examples
examples/copy.rs (line 17)
9fn main() {
10 let mut output = File::create("test/test_run.mid").expect("Create new output file");
11 let data = "test/run.mid"
12 .get_midi_bytes()
13 .expect("Get `run.midi` file and stream bytes");
14
15 let midi: Midi = RawMidi::try_from_midi_stream(data)
16 .expect("Parse data as a MIDI stream")
17 .check_into_midi()
18 .expect("Sanitize MIDI into formatted MIDI");
19
20 output
21 .write_all(&midi.to_midi_bytes())
22 .expect("Failed to write bytes");
23}Trait Implementations§
Source§impl MidiWriteable for RawMidi
impl MidiWriteable for RawMidi
Source§impl<STREAM> TryFrom<StreamWrapper<STREAM>> for RawMidiwhere
STREAM: MidiStream,
impl<STREAM> TryFrom<StreamWrapper<STREAM>> for RawMidiwhere
STREAM: MidiStream,
Source§type Error = ChunkParseError
type Error = ChunkParseError
The type returned in the event of a conversion error.
impl StructuralPartialEq for RawMidi
Auto Trait Implementations§
impl Freeze for RawMidi
impl RefUnwindSafe for RawMidi
impl Send for RawMidi
impl Sync for RawMidi
impl Unpin for RawMidi
impl UnwindSafe for RawMidi
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more