For those who are interested in checking out my initial specification for the FlacPak format, I updated the web pages at: http://swami.sourceforge.net/flacpak.php The direct link to the specification notes: http://swami.sourceforge.net/flacpak_format.php For those who weren't reading the previous threads, FlacPak is a format being designed to handle compression of files containing binary and audio (particularly instrument files like SoundFont, DLS2, GigaSampler, etc). Its a rather simple format but I believe it is flexible enough. I have not yet finalized the specification and it will likely change. I now have a FlacPakEncoder API in the libInstPatch library (haven't checked anything into CVS yet though), and I've written a file handler for SoundFont files. Initial tests seem pretty good when comparing compressed file size to other formats like sfArk. Here is a test I did with a rather large (120MB) SoundFont containing many mono and stereo 16 bit samples (the stereo is encoded from separate mono samples). original: Fluid.sf2 124431652 100% bzip: Fluid.sf2.bz2 99610380 80.05% - Takes a long time FlacPak: Fluid.sf2.flacpak 66443258 53.39% - More optimization! :) sfArk: Fluid.sfArk 64040402 51.47% - Proprietary My remaining questions have to do with optimizing tricks with the FLAC encoder (I'd love to beat sfArk :) Its getting really close! These results were achieved with the equivalent settings of -5 with the flac binary. I haven't tried these tests on any other files yet, results will of course differ from one file to the next. It appears that LPC order, qlp coeff, min/max residual partition order and blocksize all appear to be related to speed/size trade offs (I didn't list mid side stereo stuff, since I think I have a grasp on that). I'm sure I should probably do some more reading about these things, but any tips would be appreciated as to the best way to choose these values. Would following the -0 through -8 options used with the flac command line binary be a useful guide? I'll likely run a bunch of tests using different options and compare the results. Even better might be to analyze the FLAC frames that get written to determine how the samples are getting encoded. Also I would like to know the best procedure of selecting a block size. Right now I'm not setting a sample rate or block size so I assume its using the default block size of 1152 (just tried setting it to 4608, which gave a slight increase in compression, the results above use this setting). Whats the method that Flac uses for selecting block size based on sample rate? I don't want to set the sample rate since I'm using the streamable subset. Would any other criteria be advantageous in determining the block size, such as the length of the sample itself? Do you think the block size setting has a significant effect on the resulting compressed size? Things are getting exciting, well at least I know I'm excited :) Thanks a lot for all the help so far. Cheers! Josh Green