- Rename
number
module tonum
. - Simplify generic
Smf<T>
toSmf
,SmfBytemap
and genericparse
/write
functions. - Add the
alloc
feature, which can be disabled to make the crate fullyno_std
and make no allocations. - Add the
parallel
feature to disable multithreading and therayon
dependency without dropping integration withstd
. - Move error framework from
failure
tostd::error::Error
whenstd
is enabled, and no error trait when disabled. - Errors are always a thin pointer.
- Writing now supports
no_std
with an auxiliaryWrite
trait. - Event bytes no longer include delta-time.
- Optimized allocations by guessing the amount of bytes per event.
- Files without a correct header now fail early.
- Added a
PitchBend
newtype to manipulate pitch bend values. - Added a
live
module that allows parsing standalone MIDI events. - Added a
stream
module to support raw MIDI stream decoding. - All types now implement
Debug
, and all data types implementHash
. Smf::new
no longer returns an error, and creates an emptySmf
with no tracks. To create anSmf
with prebuilt tracks useSmf { header, tracks }
construction.- Added
Arena
to make track construction more ergonomic.
- Add support for the
.rmi
RIFF wrapper for MIDI files. - Errors are now a thin pointer in release mode.
- Add a
TrackIter::running_status_mut
method. - Update
README.md
to match0.4
.
EventKind::parse
andEvent::read
no longer return event bytes.- Simplify
lenient
andstrict
features to a simplestrict
feature.
- Add support for writing MIDI files and events.
- Handle running status more correctly.
- Fix pitch bend messages being read with the wrong endianness.
- Update
README.md
to match the API of0.2
. - Added an
ErrorKind::mesage
method.
- Move error framework from
error-chain
tofailure
. - Renamed
Varlen
tou28
. - Added
lenient
andstrict
crate features to configure how eager should the parser be to reject files. - Give meaningful names to MIDI message fields.
- Replace the
SmfBuffer
convenience type with threeparse
variants. - Default the
Smf<T>
type toSmf<Vec<Event>>
. - No longer tries to parallelize lazy parsing.
- Renamed
EventKind::read
toEventKind::parse
to match the rest of the parse methods. - Added an optional (enabled by default)
std
feature to make the crateno_std + alloc
.
- Rename
Fps::as_u8
andFps::from_u8
toFps::as_int
andFps::from_int
.
- Make MIDI primitives public.
- Add
as_int
method to convert MIDI integers to primitives.
- Initial release.
- Unify names for MIDI/channel messages.
- Check thoroughly which parts of the API are exposed.
- Write docs.
- Expose a
std::io::Write
-based write API. - Add
new
methods to all types to be more uniform. - Try to optimize reading by using a cursor instead of a naive advancing slice.
- Revert stream to fire MIDI messages as soon as enough bytes arrive (this is pretty useful in real life).