bz home



This program is freeware and shipped AS IS. Author does not garantee right work of this software, USE AT YOUR OWN RISK!

This program cannot be used for commerce usage or be shipped with other commercial software.

All rights reserved. For writting this software it was used source code by Carsten Thorenz (thanks to him).

(c)1998-2000, Evgeny Brednya


This program was written for digital audio CD reading on CD drives that have some troubles with synchronization of reading data. Somebody knows this problem as jitter. It's not quite right. Jittering is non stable reading of data. There is another kind of problem: drive cannot accurate hit to sector with audio CD data on track 'cause it does not contain synchronization information. You can observe this situation, for example, if you switch on 'digital transfer' in CD Player. It is heard some clicks and crackles in sound. The same situation repeats if you try using digital grabber programs for read audio CD data from audio CD-ROM's.

This program also contains code to meet jitter problem as well. There is -accurate parameter which allow to set "similarity" of data when program tries to synchronize it (for example 5% of data will not match). This can help if CD drive have both synchronization problems and jittering. It can help also if disk has scratches.

So, about synchronization problem.

Usually CD grabber reads audio data from CD-ROM drive by blocks contained several secktors like represented on fig.1.

 audio track
                                                |-----------| ...

If CD drive cannot accurately read enquired sector we'll get situation like represented on fig.2. Some parts of audio data will be duplicated or lost. It's heard as clicks and crackles.

 audio track
                                                   |-----------| ...

JCDread2 tries to read data with overlapping and synchronize start of reading data with end of previous (fig.3).

 audio track
  reading data
                                                 |----^-- ...

You can check synchronyzation problem appearance by running JCDread2 with -info switch.

Now it's unpossible to read last 27 sectors of CD-DA. It is not a big problem 'cause 27*2352/44100/4 = 0.36 sec of music losts. And only on a last track. But without distortions in other places.

If you have not observe synchronization problem on your cd drive then better use other cd grabber utilities. It will be more effective.


JDCread2 [parameters]

where parameters are:

-info get some info about CD-ROM drive and check for synchronisation problem. By default test runs from middle of CD data and repeats 10 times.
-toc get table of contents of audio CD
-track no read track number 'no'
-start no start reading from sector number 'no' (in info mode: starting track for reading while synchronization checking)
-len qty set sectors quantity to read (in info mode: quantity for repeats reading while synchronization checking)
-preread n set preread sectors quantity for synchronize data from audio CD (1..26, default = 1)
-wait n set waiting period for drive spin up and read data into internal buffers. Time is in 0.1 sec., default = 10 i.e. 1.0 sec.
-spinup N another method of drive initialisation. It spins up N times before grabbing (default=10 times)
-accurate N set possible jitter errors in reading data in percent (0..100, default=15%)
-retry N set max synchronize rereading count to N (default=50 times)
-file name write to file 'name'. By default 'Output.wav' or 'TrackNN.wav' if track number selected. Use '-' to write in standard output stream
-raw write audio data in RAW format, default RIFF WAV format
-exit exit program if synchronization error occures
-noprogress switch off progress report while working
-debug debug output while working

You need select track number or start sector and sectors quantity.


JCDread2 l: -toc
get table of contents of audio CD
JCDread2 l: -info
get some information about CD drive and test it for synchronization problems
JCDread2 l: -track 5 -file song5.wav
write track 5 in file song5.wav in RIFF WAV format
JCDread2 l: -start 1000 -len 500 -raw -file wave.pcm
write 500 sectors beginning from 1000 to file wave.pcm in RAW PCM format
JCDread2 l: -track 8 -len 100
write 100 sectors from start of track 8
JCDread2 l: -track 2 -file -
write track 2 in standard output in RIFF WAV format


Attantion! Return codes was changed since last version!


As usual I do not plan more features in this program (of course except bug fixing in software and documentation :).

Maybe i'll publish source code after some cosmetic changes. Program extension ideas and thanks are also welcome.


  1. 8x Aztech 86801ISE (about 300 kb/s)
  2. 8x Mitsumi FX800/810 series (about 300 kb/s)
  3. 12x Hitachi CDR-8130 (up to 850 kb/s)