The zmidi-core package

Minimalist library to read and write MIDI files, with
dependencies only on ByteString, Containers and Data.Binary.

Changelog:

v0.6.0 to v0.7.0:

Changed ChannelPrefix constructor to have a single
argument - channel number (previously it stored a constant
tag 0x01 as well as channel number).

Added SysExCont and SysExEscape constructors to the
MidiSysExEvent data type.

Added new pretty printers - Csv based on midicsv and
Ascii based on the ASCII MIDI representation in the book
Beyond Midi (the zmidi ASCII representation is simplified).
The demo application MidiPrint now allows choice of pretty
printer.

printMidiHeader and printMidiTrack from Pretty changed
to MidiFiles as arguments, printMidi has now become
putMidi.

v0.5.0 to v0.6.0:

Extended the parser and changed the syntax tree to interpret
MIDI Running Status.

Added a module ZMidi.Core.Canonical to translate MidiFiles
to a canonical form where any shorthand NoteOff introduced by
Running Status is expanded to regular NoteOn and NoteOff
events (with Running Status set, MidiFiles can signal NoteOff
events as another NoteOn with 0 channel velocity).

Added a hack to the pretty printer to stop printing ASCII
chars greater than 164 causing an error when printing to
stdout.