xmcd2make 2.1 has been released. Highlights: Works with libgramofile and Audio::Gramofile from http://sourceforge.net/projects/libgramofile.
All dependancies on gramofile classic and swig have been removed.
This should make it much more easy to install for most folks.

Current version

The current release of xmcd2make is 2.1.


xmcd2make is Free Software licensed using the GNU GPL. Learn it, Live it, Love it.

Gramofile is a groovy tool for the recording of phonograph records, track splitting, and signal processing (removing pops and clicks) with your computer.

Xmcd2make is a set of tools to increase the productivity of gramofile users.

There are 4 tools in the xmcd2make distribution:


A script which searches freedb.org for albums and downloads xmcd files.


A script which runs the Gramofile track finding tool. It is intended to be used interactivly.  It works best with bash (or any other shell that allows easy command line re-editing.) It is much faster way than using the gramofile curses interface.


Runs the gramofile track splitting and signal processing functions. It to can also be used on the command line, but mostly is called over and over by the makefiles created by xmcd2make.


A script which generates a Makefile. Using this makefile, automatic track splitting, signal processig, ogg/mp3  file encoding, shn making, and song naming for entire recored albums can be done with a single command, for example "make ogg".

There are several benefits to this to using make in this way:

  • You don't have to type in song names (most of the time). Song titles can be taken from the xmcd files found on freedb.org.
  • If you build all your ogg files, and need to change the timing of one of them, all you do is edit the tracks file and run make. Only that 1 file is re-split, processed,and encoded.
  • If you have a dual processor system 'make -j2' will background 2 jobs at a time and fully load both CPUs (at least on Linux with a 2.4 kernel) and split,process, and encode many oggs/mp3s twice as fast.
  • Filters can be applied on a per-track basis.
  • See the README for all the details.
    Notes for debian users

    Q. How do I use xmcd2make to make ogg tracks from a record album?

    A. To record Aretha Franklin's first album, Aretha ( with the Ray Bryant Combo ), and encode it to Ogg Vorbis or mp3:

  • Record the album using gramofile, gnome sound recorder, or anything else you want to use. Name the resulting 2 wav files "aretha1.wav" and "aretha2.wav" and make sure they are alone in a new directory

  • Use xmcdsearch to search freedb.org and download the xmcd file into the same directory as the wav files. Rename the file aretha.xmcd if necessary.

  • Run findtracks, and play with the parameters until you are finding the correct 6 tracks per side; something like this:

    findtracks aretha1.wav --dump --global-silence 170 --min-silence 8

    Check the tracks files for each side checking that the timings look reasonable. Edit the files if necessary.

  • Run xmcd2make:

    xmcd2make aretha

  • Execute targets of the created makefile :

    make proc to split the tracks and apply signal processing filters.

    make ogg or make mp3 to build, name, and tag Ogg Vorbis or Mp3's.

    make shn to make a shn archive set, complete with txt and md5 files.

    make disc1 to burn an audio CD of the processed tracks.

    make wavclean to clean up all the files, links, and everything else when you are done.

  • You are done.

    xmcd2make is available here on the freeengineer.org ftp site.

    One day I got tired of typing in song names to the albums I was recording and encoding to ogg.

    I knew that alot of the albums I was recording had song listings available via the CD database at freedb.org.

    So I took an .xmcd file, and I wrote a perl script to read xmcd and create ogg files using the output files I got from gramofile (processedxxx.wav's)

    I had a two problems with this: 1) I have to run the whole script over if I change just one source .wav file, and 2)It only used 1 of my 2 cpu's as script execution is serial and oggenc is not multi-threaded.

    Then I thought about how gnu make automates both of these things - only targets with changed dependencies are rebuilt, and using the -j2 argment, make backgrounds things to so two things like compiles, or in my case, two oggenc executions, happen at once and fully load both cpus.

    I changed my script to output a Makefile when when run would run oggenc and build the .ogg files and xmcd2make was born.

    This worked so well that I set out to automate as much of the whole gramofile process as possible. Xmcd2make is the result of this work.

    If you find my coding style offensive, or any real bugs, or any ideas you can send me flames, comments, and patches at