- Official Home Page -
Current version: 1.6(P) - Page
last updated: 2001/05/23
GramoFile is a computer program, running under the Linux
operating system (and some other UNIX-like OSses -- and even DOS/Windows
now!), with the main goal of
putting the sound of for example gramophone records on CDs. It is able
to record hours of CD quality music, split long sound files in separate
tracks, and remove ticks and pops from recordings.
This program was originally written by Anne Bezemer and Ton Le as a
study project at the department of Information
Technology and Systems (sub-department Electrical
Engineering) of the Delft University
of Technology, The Netherlands. However, development has continued
after the end of the project, resulting in the program as it is now.
-
Integrated sound recording and playback (with customized versions of brec(1)
and bplay(1) by David Monro);
-
Handling of large sound files up to a few GB;
-
Signal peak level meter during recording;
-
Playback of user-specifiable parts of sound files;
-
Signal processing through application of `filters';
-
Nine filters (filter types, actually) are supplied, new ones can be added
fairly easily;
-
Multiple filters can be used, in random order, in one single run - even
multiple instances of the same filter;
-
Most filters can be fine-tuned through a number of parameters (independent
for each filter instance);
-
A large sound file containing an entire side of a gramophone record can
be splitted into separate sound files, one for each track;
-
Signal processing and track splitting are performed simultaneously; no
temporary files are used at all;
-
Text mode user interface with a windows-like look and `feel';
-
Sound files of the familiar .wav type are used, to allow easy interchange
with other programs;
-
The program comes with extensive documentation explaining the implemented
filters and the track splitting.
-
06 Aug 05: Relocated webpage; the previous host will be shut down
later this month.
-
03 Jun 03: GramoFile featured on
linmagau.org
and subsequently on
Slashdot.
Unfortunately, as you probably already noticed, I have absolutely no time to
do any further development on this, and GramoFile-related e-mails have gone
unanswered for about two years now. If you want a version that is slightly
newer, check the Debian package.
-
23 May 01: James Tappin
sent me an updated version of the CMF-3 filter. There are three patches now:
- patch 1 corrects some negative overflow
checking in CMF-2;
and either
- patch 2 adds the updated CMF-3 filter to
GramoFile 1.6
or
- patch 3 adds the updated CMF-3 filter to
GramoFile 1.6P (the version with the Perl interface, see lower on
this page). After applying this, make symlinks to signpr_cmf3.*
from the perl-swig/ directory.
James also has a
webpage
which points to much-requested noise reduction utilities (and other
interesting things).
-
28 Apr 01: (Mostly obsoleted by 23 May 01 entry)
James Tappin
surprised me with a completely (well, almost) new filter: the CMF-3
(or CMF-2-F) which still detects ticks the "old" 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.
The patch is available here. To compile, you
need the FFTW Fourier Transform package
(Debian systems: apt-get install fftw-dev).
More info in the SIGNPR_CMF3.TXT contained in the patch.
James also provided some nice samples of an extreme case in
.ogg format:
the original,
CMF-2 processed, and
CMF-3 processed.
Also take a look at the
screenshot of these files
in a wave editor, top = original, middle = CMF-3,
bottom = CMF-2. The passage is a short clip from a 1938 recording
of Die Zauberflöte: "(Bei Männern, welche) Liebe fühlen,
fehlt auch ein gutes Herze nicht".
-
09 Apr 01: Everyone wanting some speedup in track splitting and
signal processing should try the patch by
J. Dru Lemley, 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 patch
is relative to 1.6-with-all-earlier-patches, but shouldn't be too hard to
apply to a "clean" 1.6.
Dru mentioned that he is successfully running GramoFile on Mac OS/X, so that's
another addition to the list of "supported architectures".
-
27 Mar 01: People using Linux and an (on-board) sound card supported by the
via82cxxx driver will notice that recording is impossible because a certain
operation is not supported by that driver.
Jörg Specht sent in a
patch to solve this issue.
-
21 Feb 01: A new patch by
Herbert Pophal 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.
-
05 Feb 01: Tom Harvey
is running GramoFile on NetBSD/Alpha and found that some
patches (1) are needed for that. These should
also work on newer (but not older) Linux systems. He sent even more
patches (2) to eliminate a few gcc
warnings and improve some help texts.
-
01 Feb 01: Got a patch from Jon
Schewe 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. If you need/want that, get
this, and if not, don't.
-
07 Dec 00: Bob Wilkinson
ported the Perl interface to the mainstream GramoFile source tree,
resulting in gramofile-1.6P.tar.gz
(with the "P" of Perl). Compiling things is very easy now:
just make will do what it has
always done, make perl-swig will create the Perl callable
interface. Read the README in the perl-swig/ subdir for more info.
(You'll of course still need to have
SWIG installed.)
-
23 Nov 00: (Mostly obsoleted by 07 Dec 00 entry)
We're finally getting a bit closer to command-line usage.
Bob Wilkinson has created a Perl
interface to GramoFile's track splitting and signal processing routines.
It seems you have to do the following (again, I didn't try myself):
Get gf.tar.gz and unzip it in an empty directory.
Then copy the files listed in this file
from the original gramofile-1.5 (still available
here) to the newly created
Gramofile/ directory. Then cd Gramofile and apply the
patches using
for file in diffs/*; do temp=${file##diffs/}; patch -p1 ${temp%%.diff} <
$file; done
Then use make to compile the stuff.
This interface utilises SWIG which you
need to have installed. It is available pre-packaged in the major Linux
distributions.
This interface allows setting the parameters of the track splitting
and the sequence of filters to apply to the signal.
There is no possibility to set the parameters of the individual
filters; the default values will be used (which are of course
easily changable in the C source).
Also included is a program wav2mp3.pl which automates the track
splitting and signal processing. As input an XML file is needed with
various data on the .wavs, like song titles.
-
22 Oct 00: Sylvain Deschenes
produced a "normalize" filter.
I didn't
try it myself, but it looks like this: you start with already-separated
tracks (usually from different sources), possibly unprocessed. For each
individual track, run "Locate tracks", this will of course detect
only one track, but will also put some
useful extra data in the .tracks file.
With these values, you can compute the
amplification you want each track to have, from -100% to +100%. Then
"Process" each individual track, without splitting.
Use the new
"Simple Normalize Filter" as first (or only) filter, and enter
the desired amplification factor in the Parameter screen.
If the
signal needs tick removal, have the "Conditional Median Filter II"
as second filter, otherwise remove it.
The version with this extra filter is called "1.6N", but this
is not an official version. For Linux/UNIX systems, get
this patch; an updated DOS/Windows
version is here. Note that this seems to change
some defaults, so I'd suggest you keep using a 1.6-unpatched version
for the "normal" work.
-
13 Oct 00: Thanks to
Sylvain Deschenes
we are proud to present a version
of GramoFile that runs on DOS and Windows systems. See below under
"Download" for details.
-
28 Mar 00: New version 1.6 with some nice enhancements, see the
ChangeLog. This version incorporates all the patches
I've received in the past year.
NOTE: I've not tested this release at all, I only know that it
compiles for me. If there are problems, please
send me patches ;-)
-
03 Mar 00: My account on cardit.et suddenly disappeared and won't be coming
back. Moved the webpage to another machine.
GramoFile is free software, and is licensed to you under the terms
of the GNU General Public License. That means
that you are encouraged to redistribute and/or modify this program, under
certain conditions. In order to guarantee the continuing freeness of the
software, you must always make the (modified) source code publicly available.
Read more details (and the legally correct formulation) in the GNU
General Public License.
GramoFile is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
FOR A PARTICULAR PURPOSE. See the GNU General Public
License for more details.
The GNU General Public License is also available in html
format, on the GNU server.
Currently, version 1.6 of GramoFile is available for download:
Source code, which you can compile yourself on Linux/UNIX systems:
-
gramofile-1.6.tar.gz
-
gramofile-1.6P.tar.gz
which is exactly the same as 1.6 but with the Perl interface added
(see the News section above).
DOS and Windows source code and executable, produced by
S. Deschenes:
-
gramo_w_1.6.zip
Notes for this version: the .zip file will create the directory
djgpp\gramofile-1.6\ and extract everything in there; it is
advised to extract in C:\ to have the supplied .PIF
file working correctly (it refers to the file
C:\djgpp\gramofile-1.6\gramofile.exe).
You can start the pre-compiled program
gramofile.exe immediately. If you wish to compile the program
yourself, see the instructions in DOSPORT.txt
This version of the program does not support sound recording or playback,
but track splitting and signal processing should be fully functional.
For Windows systems, numerous .wav recorders/players are
available, which you can use instead. But be aware that GramoFile
only handles CD-quality .wav's, i.e. 44.1 kHz 16-bit stereo.
Furthermore, it is a "console" program, meaning that it will
run in a DOS window, and that clicking the "buttons" with the
mouse will not work. Use the TAB key instead.
When running from DOS-only (i.e. not from Windows), you also need the
CWSDPMI program
(you probably have to put it in GramoFile's directory).
Bernd Leppla informed me that
this version also runs well in an OS/2 DOS box.
New versions will be announced on comp.os.linux.announce.
The following plaintext files are part of the tar.gz/zip file,
but are available for online viewing as well:
-
README - Overview, installation, usage hints, and
many more useful things. You should read this file completely before compiling
/ using the program;
-
Signproc.txt - In-depth description of most
implemented filters, and information regarding the implementation of new
filters;
-
Tracksplit2.txt - In-depth description of
the algorithm used to locate tracks;
-
ChangeLog;
-
TODO.
Stefan Keppler sent me some great sample files in .mp3 format. Listen to
the
original
and the
processed
versions.
If you don't believe this is possible, feel free to try it yourself!