* Root * SlinkP Linux Pages
Last updated Jun 30, 2007 1:53 pm GMT-5

Shrinking Soundfiles: General-Purpose Data Compression vs. Optimized Soundfile Compression

by Paul Winkler, slinkp@angelfire.com

To Make a Long Story Short

If, like me, you often find yourself wanting to squish a soundfile into less storage space without making it sound worse, you may have resorted to a general-purpose compression tool like one of the many variants of "zip". But you don't need to bother using WinZip, gzip, bzip2, or any other general-purpose compressor for audio files. Optimized tools for audiofiles may work much better, and even much faster.

NEWS: This page is obsolete!

There are now open-source (Free Software) alternatives to Shorten that perform comparably well. In particular, I've now converted all my Shorten files to FLAC and removed Shorten from my system.

The FLAC homepage compares many more compression tools than I tried, and gives much more comprehensive results. See: flac.sourceforge.net/comparison.html

There's another article comparing compressors at this page by Robin Whittle.

Compiling Shorten on Linux

I'll keep this here in case anybody still needs it... If you have a glibc system, like any version of RedHat Linux later than version 5, you may not be able to compile the source for Shorten. I found the fix to be quite easy, so I've made a patch for it.C Note that this fix may have been included in the shorten sources by now! Try it out first. If you can't compile, cut out the little snippet below and save it as exit.patch. Put it in the same directory as the shorten source code; then all you should need to do is run patch and you should be able to compile.
*** exit.c~     Mon Jun 30 05:49:38 1997
--- exit.c      Thu Jan  7 16:08:45 1999
***************
*** 11,17 ****
  #ifndef MSDOS
  # include 
  # include 
! extern char *sys_errlist[];
  #endif
  # include 
  # ifdef HAVE_STDARG_H
--- 11,20 ----
  #ifndef MSDOS
  # include 
  # include 
! /* Originally, this was: extern char *sys_errlist[]; 
! Modified to match glibc, /usr/include/stdio.h line 221.
! */
! extern const char *const sys_errlist[];
  #endif
  # include 
  # ifdef HAVE_STDARG_H

SlinkP's Main Linux Page

copyright 1999 Paul M. Winkler. Permission to use, distribute, modify, and copy this document for non-profit purposes only is hereby granted. If you modify this document, you must retain this notice. All other rights reserved. Just ask nicely.

     Send me some mail slinkP home page Powered by Zope