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: Header
The 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