GramoFile Change Log

libgramofile-0.02 : 2003.11.02 : http://sourceforge.net/projects/libgramofile/

version 1.7: Bob Wilkinson <bob@fourtheye.org>

- renamed endian.c and endian.h to gmfendian.c and gmfendian.h because automake 
  showed conflicts between "endian.h" and <endian.h>

- Reorganised the source code to facilitate the use of DNU Autotools (configure,
  automake and libtool) for building the source code. It avoids having to 
  manipulate the Makefiles prior to building on a non-Linux system.

- Corresponded with Daniel Kobras <kobras@tat.physik.uni-tuebingen.de>, the
  maintainer of the Debian package of Gramofile, who suggested improvements
  to the library, specifically providing a header file, a SONAME in the 
  shared library, and a static version of the library. He recommended the 
  use of libtool.
- Found the patches made by Vaclav Dvorak <vdvo@seznam.cz> and consolidated
  his patches with those made to the 1.6P code so far. Used Vaclav's 
  descriptions for the patches made below, since I'd neglected to update the
  Changelog. Vaclav's patches to GramoFile are available at 
  http://nebuchadnezzar.zion.cz/gramofile.php

libgramofile-0.01 : 2003.03.24 : http://sourceforge.net/projects/libgramofile/

- started from 1.6P version. Modified interface to Perl to use XS, rather 
  than SWIG, since keeping up to date with versions of both Perl and SWIG
  is a rather onerous task. Modified all #ifdef SWIG to be #ifdef LIBRARY
  to reflect this change in interface, since SWIG is no longer used to
  interface to the library which contains the gramofile logic.
- added code to allow the parameters of all of the signal processing 
  routines to be changed from the calling program when the library is
  used. This was forgotten by me (didn't know it was possible?) when the
  original perl-swig code was written. This was suggested by Anne Bezemer.
- Applied patch by Jon Schewe <jpschewe@eggplant.mtu.net> that makes
  file selection boxes a lot bigger, and also adds quoting to the
  bplay/brec commands so that file names with strange characters
  (like spaces or '&') get handled better.
- Applied patch by Tom Harvey <TomHarvey@IndustryFigure.com> to eliminate
  a few gcc warnings and improve the language of some help texts.
- Applied patch by Tom Harvey <TomHarvey@IndustryFigure.com> to enable
  compilation on NetBSD/Alpha. In particular, this changes the u_long
  type to uint32_t in several places and includes inttypes.h for that.
  (If I noticed correctly, this concerns only the part that handles WAV
  files, i.e. where the size of fields in the header is important.)
  This change will break compatibility with older systems. If that't
  your case, simply revert the change, or add a inttypes.h to /usr/include
  that defines uint32_t to be unsigned long.
- Applied patch by Herbert Pophal <pophal@zrz.tu-berlin.de> which adds a
  new option to the signal processing, that shortens each generated
  track's length to a multiple of (e.g.) 1/75th second = 588 samples =
  = 2352 bytes, which is the "block size" on CDs. This prevents cdrecord
  from padding, which can be useful in certain situations.
- Applied patch by J<F6>rg Specht <joerg.specht@ins.uni-stuttgart.de> that
  corrects a recording problem for people using Linux and an (on-board)
  sound card supported by the via82cxxx driver.
- Applied patch by J. Dru Lemley <http://lemley.net/> which makes
  GramoFile use a second buffer to reduce the number of system calls
  during file I/O, and also has a faster way to swap samples on
  big-endian machines. This should bring some speedup in track splitting
  and signal processing, but I've done no benchmarks.
- Applied patch by James Tappin <james@xena.uklinux.net> which corrects
  some negative overflow checking in CMF-2.
- Applied another patch by the same James Tappin <james@xena.uklinux.net>.
  This one adds a new filter, CMF-3 (or CMF-2F) which is based on CMF-2,
  detects ticks the same way, but uses a new frequency-domain method to
  do the interpolation -- by reducing the high frequencies during the
  ticks. The original shape of the sound is preserved much better this
  way, but the processing is much slower. More info is in the file
  Signproc_CMF3.txt.
  This patch makes GramoFile need FFTW, a Fourier Transform library (The
  Fastest Fourier Transform in the West). Homepage: http://www.fftw.org/
  (Debian systems: apt-get install fftw-dev)

version 1.6:

- Included semun definition that disappeared from glibc2.1 headers. Bart
   Warmerdam was the first to submit this to the Debian Bug Tracking system.
- Allow piping the signal processing's output to any command (MP3
   encoders!), thanks to Geoff Clare. See README for details.
- Settings for filtering are now remembered within one run, which makes
   it much easier to try slight variations in the settings. Patch by
   James Tappin.
- New convert-to-mono (=average-channels) filter, also by James Tappin.
- James Tappin also provided an alternative way of interpolation for the
   CMF-II, using an L1 norm linear fit. It's much slower; you can compile
   it in by defining FANCY_FILL in the beginning of signpr_cmf2.c.
- Reverted curses to ncurses per default, should now compile fine on SuSE.
   For the old curses, change $LIBS in the Makefiles and use -DOLD_CURSES.
- Keith Refson sent a scandir() replacement function for Solaris; see the
   README for info on how to use it.
- For byte-swapped systems, the length-fields in the .wav header are
   now byte-swapped too; patch also by Keith Refson.
- FreeBSD patches by Juergen Lock.
- Applied fix for a buffering deadlock at the end of recording, also by
   Juergen Lock.
- James Tappin ported Dave Platt's out-of-phase tick detection (see v1.3)
   to the `old' CMF filter; search for TEST_DAVE_PLATT in signpr_cmf.c.
- Fixed bug in the parameter screen of the double median filter.

version 1.5:

- Signal Processing 30-50% faster, thanks to a few "old programmers'
   tricks" provided by Dave Platt.
- Fix for computation of file offsets and -lengths for long files in
   bplay, and 12 bit/sample should now work correctly, too. Patch by Ralf
   Schlatterbeck.
- Should compile & run on IRIX (and maybe others), too. Joshua Weage sent
   me a patch, which I interpreted a little more generally. More info in
   the README file.

version 1.4:

- `Determining of track separation points' is now called simply
   `Track location'.
- Totally new track location algorithm that should work well in far more
   cases than you're used to ;-)  Read more in Tracksplit2.txt.
- Should compile OK with egcs; patch by Daniel Kobras.

version 1.3:

- Considerable speed improvement in Signal Processing (and Track Splitting,
   too) by using the stdio functions, patch provided by Axel Kohlmeyer.
   (Why didn't anyone tell me speed(fread)>>speed(read) before..?)
- Deleting filters in Filter Selection screen now also works on the console
   (using the R key), again thanks to Axel Kohlmeyer. (I'm always in X ;)
- Info-screen after recording, great idea of Richard Robinson.
- Dave Platt reported that most ticks are out-of-phase, so tick detection
   should look at the left-minus-right (difference) signal. I've programmed
   this in signpr_cmf2.c (search for TEST_DAVE_PLATT) but not tested it;
   it's not used by default. If you like, you may experiment with it - and
   tell me your findings.

version 1.2:

- Added variable median (interpolation) length to the Conditional
   Median Filter, and called it CMF II, so the original is still
   there. The CMF II gives much better results than the original CMF.
- Added the possibility of playing whole tracks, or a few seconds at
   the beginning/end of a track or before/after a track - with a single
   keystroke. Makes life a lot easier.
- Added a Copy Only `filter' that only copies the signal. Useful for
   splitting tracks without processing the signal. Requested (more or
   less) by Richard Robinson.
- Added a Experimenting Filter with which you can experiment. See the
   file signpr_exper.c
- Corrected writing of .wav header - bytes_per_sample seems to be 4
   instead of 2 (as found in bplay.c). Thanks to Pavel Kasparek for
   reporting it.
- Several other small changes.

version 1.1:

- Track splitting operational
- Documented signal processing and track splitting
- English user interface
- Removed some annoying bugs
- Cleaned up source code and used indent(1)
- Webpage at http://cardit.et.tudelft.nl/~card06
- Done a lot of other things

version 1.0:

- First `official' non-public release, at the end of the `Integraal Project
   Practicum', without track splitting, without full documentation (.txt
   files) and a Dutch user interface. 

