#[non_exhaustive]pub struct MidiFile { /* private fields */ }Expand description
Represents a standard MIDI file.
Implementations§
Source§impl MidiFile
impl MidiFile
Sourcepub fn new_with_loop_type<R: Read>(
reader: &mut R,
loop_type: MidiFileLoopType,
) -> Result<Self, MidiFileError>
pub fn new_with_loop_type<R: Read>( reader: &mut R, loop_type: MidiFileLoopType, ) -> Result<Self, MidiFileError>
Loads a MIDI file from the stream with a specified loop type.
§Arguments
reader- The data stream used to load the MIDI file.loop_type- The type of the loop extension to be used.
§Remarks
MidiFileLoopType has the following variants:
LoopPoint(usize)- Specifies the loop start point by a tick value.RpgMaker- The RPG Maker style loop. CC #111 will be the loop start point.IncredibleMachine- The Incredible Machine style loop. CC #110 and #111 will be the start and end points of the loop.FinalFantasy- The Final Fantasy style loop. CC #116 and #117 will be the start and end points of the loop.
Sourcepub fn get_length(&self) -> f64
pub fn get_length(&self) -> f64
Get the length of the MIDI file in seconds.
Sourcepub fn get_messages(&self) -> &[MidiMessage]
pub fn get_messages(&self) -> &[MidiMessage]
Get the merged message list of the MIDI file.
Parallel to get_times: message i occurs at
get_times()[i]. Tempo changes are already folded into the times.
Sourcepub fn get_times(&self) -> &[f64]
pub fn get_times(&self) -> &[f64]
Get the time of every message in absolute seconds.
Parallel to get_messages.
Sourcepub fn new_with_events<I>(events: I) -> Result<Self, MidiFileError>
pub fn new_with_events<I>(events: I) -> Result<Self, MidiFileError>
Creates a MIDI file from an event list without parsing.
Times must be in non-decreasing order (same-time events allowed);
returns MidiFileError::InvalidEventList otherwise. Accepts any
iterator of (time, message) pairs.
Sourcepub fn extend_events<I>(&mut self, events: I) -> Result<(), MidiFileError>
pub fn extend_events<I>(&mut self, events: I) -> Result<(), MidiFileError>
Appends events to the end of the MIDI file.
Appended times must be non-decreasing and not earlier than the last
existing time; otherwise returns MidiFileError::InvalidEventList
and leaves the file unchanged. To replace all events, call
clear first.