pub struct Smf<'a> {
pub header: Header,
pub tracks: Vec<Track<'a>>,
}Expand description
Represents a single .mid Standard Midi File.
If you’re casually looking to parse a .mid file, this is the type you’re looking for.
This type is only available with the alloc feature enabled.
If you’re looking for a fully no_std alternative, see the parse function.
Fields§
§header: HeaderThe header of this MIDI file, indicating tempo information and track format.
tracks: Vec<Track<'a>>A list of tracks within this MIDI file.
Each track consists simply of a list of events (ie. there is no track metadata).
Implementations§
Source§impl<'a> Smf<'a>
impl<'a> Smf<'a>
Sourcepub fn new(header: Header) -> Smf<'a>
pub fn new(header: Header) -> Smf<'a>
Create a new empty Smf with zero tracks, using the given header.
Sourcepub fn parse(raw: &[u8]) -> Result<Smf<'_>>
pub fn parse(raw: &[u8]) -> Result<Smf<'_>>
Parse a .mid Standard Midi File from its raw bytes.
If you casually want to parse .mid files, this is the function you’re looking for.
Sourcepub fn write<W: Write>(&self, out: &mut W) -> WriteResult<W>
pub fn write<W: Write>(&self, out: &mut W) -> WriteResult<W>
Encodes and writes the file to the given generic writer.
Note that this function requires a midly::io::Write writer, not a std::io::Write writer.
This makes it possible to support no_std environments, as well as custom writer errors.
If you’re looking to write to a File, see the save method.
If you’re looking to write to a std::io::Write writer, see the
write_std method.
This function is always available, even in no_std environments.
Sourcepub fn write_std<W: Write>(&self, out: W) -> Result<()>
pub fn write_std<W: Write>(&self, out: W) -> Result<()>
Encodes and writes the file to the given std::io::Write writer.
This function is similar to the write method, but writes to a
std::io::Write writer instead of a midly::io::Write writer.
This function is only available with the std feature enabled.
Sourcepub fn save<P: AsRef<Path>>(&self, path: P) -> Result<()>
pub fn save<P: AsRef<Path>>(&self, path: P) -> Result<()>
Encodes and writes the file to the given path.
This function is only available with the std feature enabled.
Sourcepub fn to_static(&self) -> Smf<'static>
pub fn to_static(&self) -> Smf<'static>
Remove any lifetimed data from this event to create an Smf with 'static
lifetime that can be stored and moved everywhere, solving borrow checker issues.
This method creates a copy of the Smf structure. See the make_static method for an
in-place solution.
WARNING: Any bytestrings, including meta messages, SysEx dumps and escape sequences will be replaced by empty bytestrings.
Sourcepub fn make_static(self) -> Smf<'static>
pub fn make_static(self) -> Smf<'static>
Remove any lifetimed data from this event to create an Smf with 'static
lifetime that can be stored and moved everywhere, solving borrow checker issues.
This method consumes the Smf structure, reusing the backing memory.
WARNING: Any bytestrings, including meta messages, SysEx dumps and escape sequences will be replaced by empty bytestrings.
Trait Implementations§
impl<'a> Eq for Smf<'a>
impl<'a> StructuralPartialEq for Smf<'a>
Auto Trait Implementations§
impl<'a> Freeze for Smf<'a>
impl<'a> RefUnwindSafe for Smf<'a>
impl<'a> Send for Smf<'a>
impl<'a> Sync for Smf<'a>
impl<'a> Unpin for Smf<'a>
impl<'a> UnwindSafe for Smf<'a>
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more