In the past few weeks I've been working on defining a new standard
called FlacPak for compressing MIDI instrument patch files. This format
uses FLAC (Free Lossless Audio Codec) and zlib to compress audio and
binary data respectively. By using FLAC for audio and exploiting other
characteristics of instrument files (stereo samples, differing bit
widths, etc) much better compression can be achieved then if just using
a binary compressor.
Currently SoundFont, Downloadable Sounds (DLS) and GigaSampler files are
supported. Adding support for a particular instrument format means
creating a specific file handler for that format. The decoder on the
other hand is generic and sees the resulting file as interleaved binary
and audio data. This means other instrument formats can be added in a
backwards compatible manner. This also means that FlacPak isn't limited
to just instrument patch formats, pretty much any binary/audio combined
data format might benefit from FlacPak (provided the audio is
mono/stereo 8/16/24 bit).
The current reference FlacPak implementation is part of the libInstPatch
library that is in active development. A CVS tarball of libInstPatch was
made to help in getting feedback from users on the current design of
FlacPak so that the format can be finalized.
To read more about FlacPak:
http://swami.sourceforge.net/flacpak.php
To get right to the download (libinstpatch-cvs_20031201.tar.bz2):
http://sourceforge.net/project/showfiles.php?group_id=47510
I welcome any feedback on this format and the results obtained. The
Swami development list can be found here:
http://sourceforge.net/mail/?group_id=47510
I still haven't tested it a whole lot so don't trust your data with it
yet. There is also a lot more tuning that can be done to get the
compression higher :) Cheers.
Josh Green