When I tried to sample some of my old records, I found no program was able to record audio (WAV) files directly to the hard drive. Most programs put the samples in the main memory. But one side of a LP side has up to 250 MBytes, so many programs had difficulties.
My program writes the data immediately to disk, so it uses less memory, only some internal buffers. I recorded some LP's with it, and it worked well.
A newer version can also record directly into the MP3 format. To use this feature you need the libmp3lame on your system. An new version is recommended, because the old version (for example 3.70) had difficulties. I use the version 3.87, you can download it from the developers. If you have problems getting or compiling the lame-source, send me a mail, and I can send you the source or the I386-shared library (both about 500 KBytes).

Usage notes

Encoding MP3-files uses a lot of computing resources. This program requires a 350 MHz CPU minimum to run. Encoding Ogg/Vorbis-files uses even more resources. On my 1.4GHz Pentium it takes half of the CPU time.

The program directly access's the sound and the mixer device. If you use it as non-root, these devices must be accessible for the user. Because /dev/dsp and /dev/mixer are symbolic links on the most systems, the devices behind the links must be accessible. On most machines this are /dev/dsp0 and /dev/mixer0. To give the devices accessible log in as root. Enter chmod 777 /dev/dsp0 and chmod 777 /dev/mixer0 .

Compile amd link problems

To compile you must have installed the QT development system. And you must set an environment variable pointing to it. Some system install this by default (Suse 8.0), others not (Suse 7.3, Suse 8.1). So set up an environment variable pointing to the QT system like
export QTDIR=/usr/lib/qt3.

I link against the Qt-library. It is called In some newer distributions there is no anymore, it is replaced by the The Multi-Threading variant of it. So if you have problems linking against (because it does not exist), try the instead. Change the -lqt in the makefile and replace it by a --lqt-mt .

Problems with soundcards

Some users had problems with recording music. They experienced a recording speed of 10 times of the regular level. Enrico installed several Linux versions to get deeper into the problem. He could record with Suse 7.2 but not with Suse 8.0. The problem were buggy soundcard-drivers. He installed a patch given by the SUSE-SDB. Now he can work with KHdRecord.
If you have similar problems please look for a newer driver.

Here some words from Christoph to install a sounddriver on a Dell Inspiron.


2001-09-09: Version 3.4
Allows to define the MP3 bitrate and also to define an input device. Saves these settings on disk as default for then next start of the program.

2001-09-21: Version 4.0
Better mixer control. KHdRecord selects the recording input device at the mixer. This should reduce noise.
Introducing the Analyze Mode. KHdRecord analyzes the input signal and records only, if a signal level is reached. This can be used to watch citizen band or radio traffic.

2002-02-02: Version 5.0
Added Recording lists. Enter start and stop time, and the program automatically starts recording at that time.
Also added a 40KBit/sec mono mode for pure voice recordings. Create your own voicemail with this program.

2002-03-08: Version 6.0
Added Timed Split mode. A file is splitted every n-seconds.
Does not hang, if the sound-device is not available.
Allows to select the sound devices like /dev/dsp1.
Command line mode, to record without the GUI.

2002-03-10: Version 6.1
Typos in the documentation corrected.
Corrected error in the writing of wav files.

2002-05-05: Version 6.2
Added server mode to KHdRecord. It transfers the music over network to the client, which plays it. This combination is a simple audio streamer.

2002-05-29: Version 6.2 -- Source Update
Modified include files to compile also with QT3.

Minor changes: Version 6.3 -- Remote mode.

Minor changes: Version 6.4 -- Removed initialization error in ProgramState.

Minor changes: Version 6.5 -- Change to Lame 3.92. Also changed menu state during recordings.

2002-09-08: Version 6.6 -- Removed problems when linking against the qt-mt (multithrading) library. Mandrake users should be able to compile/run without problems.
Added input level meter.

2002-09-14: Version 7.0 -- Added Ogg/Vorbis encoding possibility
I have not so much experience with the Ogg/Vorbis encoder. It seems to be more complex than the Lame-Api. It works on my system, and the output seems to be OK. Please report errors using Ogg/Vorbis. The latest libraries are here available.

2002-10-06: Version 7.1 -- Removed problems when recording into Ogg/Vorbis (sorry about that, my fault).
Added 320Kbit/sec mode for Paul.

2002-10-19: Version 7.2 -- Corrected NULL-pointer problem when running as server.

2002-10-24: Version 7.3 -- GUI enhancements: recording mode is stored in the settings. File selection box depends on current recording mode.

2002-12-28: Version 7.4 -- Experimental artsd support.
Typical the artsd prevents this program from accessing the /dev/dsp device. Kill the artsd process, if it blocks the program.
Armin Bühler sent me an method to use the artsd. On one of my computers it works, on the other it fails. I haven't detected the reason. Try it on your own risk. Select as input device "artsd", and the program should get the musik data over artsd, without talking directly to /dev/dsp.

2003-01-18: Version 7.5 -- Analyze mode also on commandline
The analyze mode is now also available when using the command line. Also added better error handling, when outputfile can not be written.
In MP3 mode, when the soundcards returns a different sampling rate than 44100 Hz, this rate is used. This should solve some problems with soundcards, which deliver only 48 KHz. The Ogg/Vorbis libraries still demand the 44100 Hz.

2003-05-11: Version 7.6 -- Found freezing window bug
Some people told me about a freezing KHdRecord window. But I could not recreate that problem. After upgrading to Suse 8.2 I also got this problem. After some debugging I found the problem in the thread-safe reliability of the QT-library. I followed the instructions in their documentation and now the problem seems to be solved.
The program was tested on Suse 8.1 and 8.2.

2003-10-24: Version 7.8 -- Minor changes
Changed date and time input to a QT widget. Removed ogg-library from distribution. Don't panic - ogg is supported, but I don't deliver the libraries, because ogg is pre-installed on every better distribution.
Also upgraded lame to 3.93.1. The precompiled lame library is still delivered.

2006-07-10: Version 8 -- Compile changes for Suse 10.1

Download Section

The sources
The executable (compiled on Suse 10.1 / Kernel 2.6 / Qt3). It is gziped now.
Readme file

Mandrake RPM compiled by Simon.

The streaming Client

The client KHdClient connects over the network to KHdRecord. Then it plays the music stream delivered over the network.
Because it might be some complicated, here an image of the structure.

The sources
The executable (compiled on Suse 8.2 / Kernel 2.4 / Qt3)
Readme file

If the program works on your machine, and you like it, send me a postcard for my postcard section.

Most people don't like this program. I have downloads of 100 source packages per week, but I got only 3 postcards at all. So what is the reason, that you don't like it?